Prev   Top   Next 

Linguaggi di Programmazione e Macchine Astratte

Come visto nella definizione, una macchina astratta esegue programmi memorizzati al suo interno. Il linguaggio macchina (LM) di una macchina astratta M e' il linguaggio in cui si esprimono tutti i programmi interpretabili dall'interprete di M. LM definisce quindi l'insieme delle strutture dati che realizzano la rappresentazione interna dei programmi eseguibili da M. E' bene mettere in evidenza che quelli che normalmente chiamiamo programmi in LM non sono altro che particolari dati primitivi su cui opera l'interprete di M.
Spesso però è più conveniente pensare ad un programma in termini distringhe di caratteri. L'insieme di queste versioni dei programmi forma il cosiddetto LMEST (Linguaggio Macchina ESTerno).
È importante notare che sia il programma espresso in forma direttamente memorizzabili nella macchina sia la sua versione mnemonica, sono due rappresentazioni dello stesso oggetto: il programma astratto. Quindi useremo il termine linguaggio macchina ad indicare indifferentemente LM o LMEST (un esempio di LM sono i vari livelli di tensione nei bit di una memoria fisica, mentre il suo LMEST sara' un insieme di stringhe di caratteri "0" e "1").
Il compito di realizzare la conversione dal linguaggio LMEST al linguaggio LM è facilmente automatizzabile ed è svolto dal LOADER (così detto perchè carica il programma nella memoria della macchina astratta).

Così come data una macchina astratta resta definito un linguaggio di programmazione (il suo linguaggio macchina), analogamente dato un linguaggio di programmazione resta definita una macchina astratta che ne supporta le caratteristiche principali e che ha il dato linguaggio come suo linguaggio macchina.

È da notare che gli High Level Language o HLL (cioè quei linguaggi che consentono al programmatore di esprimere i propri algoritmi in una forma molto vicina a quella in cui li ha pensati) definiscono macchine astratte tanto più complesse quanto maggiore è la potenza espressiva del linguaggio in questione.
Ad esempio, un linguaggio che ha come tipo primitivo il tipo astratto Lista, avrà associata una macchina astratta che disporrà di opportune istruzioni macchina elementari per la realizzazione delle varie operazioni sulle liste (Head, Tail, isNull), e che avrà una organizzazione della memoria capace di gestire l'allocazione dinamica dello spazio per le liste in maniera automatica.

Di conseguenza la realizzazione in hardware è opportuna solo per macchina astratte relativamente semplici, mentre nel caso di una macchina astratta associata ad un linguaggio di alto livello questa scelta è poco conveniente, e risulta preferibile una realizzazione non hardware.
Nella prossima sezione affronteremo le varie possibilita' di realizzazione di Macchine Astratte.

 Prev   Top   Next