Linguaggio di programmazione ad alto livello

tipologia di linguaggio di programmazione
Versione del 5 apr 2006 alle 01:34 di LiljaBot (discussione | contributi) (Bot disambigua: Programma)

In informatica, un linguaggio di programmazione ad alto livello è un linguaggio di programmazione diverso dal linguaggio macchina direttamente eseguibile da un computer; i programmi scritti in un linguaggio ad alto livello possono essere eseguiti solo tramite un compilatore, un interprete, o una combinazione di questi strumenti. In entrambi i casi, l'idea di fondo è che i programmi ad alto livello possono essere ricondotti a programmi in linguaggio macchina in modo automatico, ovvero da un altro programma. Un'idea del genere è già sottesa dai linguaggi assembly, che tuttavia non sono altro che "translitterazioni" dei corrispondenti linguaggi macchina, che per esempio fanno corrispondere un codice mnemonico (quindi più leggibile) a ogni codice di istruzione binario. Nel caso dei linguaggi di programmazione ad alto livello, però, il processo di traduzione può avere una complessità arbitraria, per cui il linguaggio ad alto livello può essere anche completamente diverso (per sintassi e semantica) dal sottostante linguaggio macchina.

Quest'idea rivoluzionaria fu introdotta in informatica negli anni '50, soprattutto grazie al lavoro di John Backus presso la IBM, dove fu sviluppato il primo compilatore per il linguaggio FORTRAN (in seguito, Backus ricevette per questo motivo il premio Turing). Poche altre innovazioni in informatica hanno avuto conseguenze di portata paragonabile. In sostanza, la programmazione ad alto livello ebbe l'effetto di svincolare completamente (o quasi) le caratteristiche dei linguaggi di programmazione da quelle dell'hardware destinati a eseguirli. Fra le conseguenze principali si possono elencare le seguenti:

  • la progettazione di processori fu completamente liberata da qualsiasi requisito relativo alla leggibilità dei linguaggi macchina, in quanto si poteva ragionevolmente assumere che nessuno (o quasi) avrebbe più scritto o letto direttamente codice in linguaggio macchina o assembly; l'efficienza divenne di fatto l'unica preoccupazione reale dei progettisti hardware;
  • i linguaggi di programmazione ad alto livello ebbero un'evoluzione completamente indipendente da quella dell'hardware; lo scopo generale di tale evoluzione fu quello di rendere tali linguaggi sempre più "facili" da utilizzare per il programmatore umano;
  • si introdusse il concetto che i linguaggi di programmazione e i programmi potessero essere portabili, ovvero eseguibili su diversi computer (a patto di disporre di compilatori o interpreti per tali computer).

In generale, la maggior parte dei linguaggi di programmazione ad alto livello moderni conserva alcuni concetti di fondo che è possibile ricondurre ad alcune caratteristiche tipiche del linguaggio macchina. Concetti come quelli di variabile e assegnamento sono una versione astratta dello spostamento di dati fra celle di memoria; e il fatto che il paradigma di programmazione dominante sia quello imperativo si può facilmente giustificare con la considerazione che anche i linguaggi macchina sono imperativi. Si può anche dire, in termini almeno generali, che quanto più complessa è la traduzione da un dato linguaggio al linguaggio macchina, tanto più inefficiente tende a essere il linguaggio (in quanto il programmatore perde ogni percezione, anche indiretta, di ciò che accadrà realmente, a livello hardware, quando il programma verrà eseguito; e di conseguenza perde anche ogni possibilità di "ottimizzare" tale esecuzione).

Voci correlate