Macchina fisica

I calcolatori sono tutti costruiti sul modello della macchina di Von Neumann (vedi appunti di Architettura). La macchina fisica esegue continuamente un ciclo Fetch-Decode-Execute, programmi e dati risiedono nella memoria interna e vi è distinzione fra essi; la macchina funziona esclusivamente per eseguire il proprio linguaggio.

Una macchina corrisponde ad un unico linguaggio, ma un linguaggio può essere eseguito da più macchine.

Macchina astratta

Una macchina astratta è un'astrazione del concetto di calcolatore fisico.

Gli algoritmi che vogliamo eseguire devono essere rappresentati con le istruzioni di un certo linguaggio di programmazione $L$.

La sintassi di $L$ ci permette di usare un certo numero di costrutti (le istruzioni) per comporre programmi.

Def. di Macchina Astratta: Supponiamo che sia dato un linguaggio di programmazione $L$. Definiamo una macchina astratta per $L$, e la indichiamo con $M_L$, un qualsiasi insieme di strutture dati e di algoritmi che permettano di memorizzare ed eseguire programmi scritti in $L$.

Una generica macchina astratta $M_L$ è composta da:

L'interprete

Ogni interprete compie determinate operazioni che dipendono dal particolare linguaggio che deve interpretare. Queste operazioni possono essere raccolte in tipologie comuni a tutti gli interpreti.