L'architettura prevalente nelle macchine è ancora quella di Von Neumann, basata sull'idea della memoria che contiene dati e programmi, sull'esistenza di strutture di controllo e di unità di processo. Questo modello di macchina ha fortemente influenzato sia le architetture successive sia i linguaggi di programmazione, che hanno sempre dovuto fare i conti con le macchine che poi dovevano eseguirne i programmi. In particolare gli elementi dei linguaggi che possono essere ricondotti all'architettura della macchina sottostante sono: |
Il concetto di istruzione |
L'istruzione è l'unità di base del programma. Questo viene immagazzinato in memoria istruzione dopo istruzione in successive celle di memoria, che verranno poi eseguite |
---|---|
Il concetto di sequenzialità e iterazione | il programma raggiunge lo scopo eseguendo sequenzialmente le istruzioni, eventualmente ripetendo alcuni blocchi di istruzioni |
Il concetto di variabile | la struttura in celle della memoria, con un indirizzo ed un valore contenuto, introduce la variabile. L'assegnamento di un valore ad una variabile equivale al trasferimento di un dato in una cella di memoria. |
Questa architettura impone vincoli e condizionamenti sui linguaggi di programmazione che si sono riflessi sui programmi. Dice Horowitz (Fundamentals of Programming Languages, 1983): È sorprendente che il computer di Von Neumann sia rimasto così a lungo il paradigma fondamentale dell'architettura dei calcolatori. Ma dato il fatto, non è sorprendente che i linguaggi imperativi siano i principali oggetti di studio e sviluppo. Perchè come Backus ha sottolineato i linguaggi imperativi hanno solide radici nell'architettura della macchina di Von Neumann e ne sono l'immagine. Backus nel 1978 ha scritto un famoso articolo dal titolo, quanto mai evocativo: Can programming be liberated from the Von Neumann style? |
![]() |
Lezione 1. La macchina di Von Neumann Copyright © 2002. Alberti. DSI, Università degli Studi di Milano. |
![]() |