Concetti Chiave
- I calcolatori delle prime generazioni erano programmabili solo a livello di macchina assembly, rendendo il lavoro dei programmatori complesso e impegnativo.
- Con l'avvento dei linguaggi ad alto livello negli anni '60, i programmatori hanno guadagnato un maggiore livello di astrazione, facilitando la scrittura di codice più comprensibile.
- Il passaggio ai linguaggi ad alto livello ha portato a un aumento della complessità delle architetture, necessitando compilatori avanzati per tradurre le istruzioni.
- Si è sviluppata la tendenza CISC, caratterizzata dall'aumento delle funzionalità a livello assemblativo, con più istruzioni e metodi di indirizzamento.
- Il modello CISC ha portato alla creazione di processori complessi, mirati a rendere le istruzioni più simili a quelle dei linguaggi ad alto livello.
Evoluzione dei calcolatori
Durante le prime due generazioni i calcolatori erano accessibili in programmazione solamente a livello di macchina assembly;ogni processore aveva a disposizione mediamente una decina di istruzione del tipo load ,add,jump,che operavano attraverso un paio di metodi di indirizzamento.
Ogni istruzione era implementata in logica cablata,vale a dire che per ogni istruzione esisteva un circuito in grado di risolverla. Ne deriva che che le architetture dell'epoca erano piuttosto semplici e le macchine ,compatibilmente con la tecnologia impiegata, relativamente veloci. Per contro,il lavoro dei programmatori era tutt'altro che scorrevole,sia per il fatto di dover lavorare con linguaggi piuttosto ostici sia per la precisa conoscenza del sistema richiesta a chi doveva programmare a questo livello. Questo modo di progettare le architetture comincio ad essere messo in discussione all'inizio degli anni 60 quando cioè iniziarono ad affermarsi i primi linguaggi ad alto livello. Tali linguaggi erano in grado di offrire nuove potenzialità ai programmatori,che si trovarono a poter accedere al sistema a un maggiore livello di astrazione dalla macchina fisica sfruttando un linguaggio che oltre a essere decisamente più comprensibile,si slegava a un finora indispensabile visibilità verso i livelli inferiori. Il prezzo pagato a fronte di tali vantaggi fu un inevitabile appesantimento delle architetture ,le quali dovevano ora farsi carico anche dei processi di traduzione dei linguaggi di programmazione di istruzioni e di metodi di indirizzamento era ora una grassa limitazione: per tradurre costrutti come il case in sequenze di confronti e jump,o per realizzare le funzioni più complicate era indispensabile programmare compilatori estremante complessi.
Tendenza verso CISC
Ecco dunque che inizio a delinearsi la tendenza ad aumentare le funzionalità del livello assemblativo,incrementando notevolmente il numero di istruzioni sopportabili e il numero di metodi di indirizzamento,e a rendere le istruzioni più simili a quelle ad altro livello. Questo approccio e noto come CISC(Complex Instruction Set Computer),per indicare la realizzazione di processori complessi con un set di istruzioni a sua volta complesso.
Domande da interrogazione
- Quali erano le limitazioni della programmazione nei primi calcolatori?
- Come hanno influenzato i linguaggi ad alto livello l'evoluzione dei calcolatori?
- Cosa significa CISC e quale tendenza rappresenta nell'evoluzione dei calcolatori?
Nei primi calcolatori, la programmazione era accessibile solo a livello di macchina assembly, con un numero limitato di istruzioni e una complessità che richiedeva una profonda conoscenza del sistema, rendendo il lavoro dei programmatori difficile e poco scorrevole.
L'emergere dei linguaggi ad alto livello negli anni '60 ha permesso ai programmatori di lavorare a un livello di astrazione maggiore, rendendo la programmazione più comprensibile, ma ha anche comportato un appesantimento delle architetture a causa della necessità di tradurre questi linguaggi in istruzioni comprensibili dalla macchina.
CISC, che sta per Complex Instruction Set Computer, rappresenta la tendenza a sviluppare processori con un set di istruzioni complesso e un numero maggiore di metodi di indirizzamento, rendendo le istruzioni più simili a quelle dei linguaggi ad alto livello per aumentare le funzionalità del livello assemblativo.