Prev   Top   Next 

Programmazione e Livelli di Astrazione

La gerarchia di macchine astratte di un sistema di calcolo non termina necessariamente con l'implementazione di un linguaggio di programmazione HLL L. Infatti un qualunque programma in L aggiunge un ulteriore livello alla gerarchia estendendo la macchiana astratta associata a L (o nel caso L non sia interpretato, la macchina intermedia di L) in alcuni dei suoi componenti, simulando generalmente nuove operazioni e nuovi tipi di dato.
Da questo punto di vista quindi qualunque attività di programmazione può essere considerata come una attività di definizione e di realizzazione di macchine astratte.

Vedere la programmazione in un certo linguaggio come estensione della macchina astratta ad esso associata evidenzia il fatto che la potenza e la flessibilità di un linguaggio di programmazione dipendono dai meccanismi di astrazione che il linguaggio stesso offre.
Praticamente tutti i linguaggi forniscono un meccanismo di astrazione (sia esso procedura, funzione o subroutine), che permette di definire nuove operazioni.
Solo alcuni linguaggi (tipicamente quelli object-oriented) possiedono meccanismi soddisfacenti per la definizione di nuovi tipi di dato astratti.
Infine la possibilità di estendere le atre componenti della macchina astratta (contollo di sequenza, controllo sul traserimento dati, gestione della memoria), non è stata ancora realizzata in nessuno dei linguaggi di programmazione maggiormente in uso.

Si potrebbe pensare che, anche se il linguaggio non fornisce un particolare meccanismo di astrazione, sia comunque possibile simulare in esso un qualunque costrutto; tuttavia in questo caso l'estensione risulterà di più complessa realizzazione per il programmatore e di più difficile utilizzo da parte dell'utente rispetto alla corrispondente estensione ottenuta con un linguaggio di programmazione che possiede meccanismi di astrazione adeguati.

 Prev   Top   Next