Linguaggio di programmazione ad alto livello: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
Botcrux (discussione | contributi)
m Bot, replaced: Categoria:Teorie della programmazione → Categoria:Paradigmi di programmazione
Riga 7:
 
I [[Linguaggio macchina|linguaggi macchina]] sono formati da istruzioni elementari, che vengono codificate in forma numerica e che consentono di effettuare operazioni aritmetiche, conversioni di bit e poco altro.
Scrivere programmi in tale linguaggio è quindi estremamente sconveniente: un'operazione basilare può richiedere anche tre o quattro istruzioni; si rende così necessario molto codice anche per i programmi più semplici. Il fatto che tale codice sia solamente numerico comporta inoltre grosse possibilità di errori e difficoltà nell'individuarne. È necessario inoltre avere continuamente a che fare con le caratteristiche fisiche della macchina in cui si programma: bisogna ad esempio specificare manualmente gli indirizzi di memoria in cui salvare le informazioni e i registri del processore in cui mantenere i dati temporanei.
 
Infine, ogni computer può comprendere solo il proprio [[linguaggio macchina]], poiché esso è diverso da processore a processore. Esiste quindi anche lo svantaggio di dover riscrivere interamente un programma per farlo funzionare su un'altra piattaforma.
Riga 14:
 
L'idea dei linguaggi ad alto livello è già sottesa ai linguaggi [[assembly]], che tuttavia non sono altro che "traslitterazioni" dei corrispondenti linguaggi macchina, che per esempio fanno corrispondere un codice mnemonico (quindi più leggibile) a ogni codice di istruzione binario. Nei linguaggi di programmazione ad alto livello veri e propri, invece, una singola istruzione consente di effettuare un'operazione semplice, ma completa.
Le istruzioni non sono in forma numerica, sono bensì parole (generalmente in lingua inglese), il cui significato corrisponde all'operazione che effettuano. A differenza dei linguaggi [[assembly]], quindi, il processo di traduzione può avere una complessità arbitraria, per cui il linguaggio ad alto livello può essere anche ''completamente diverso'' (per [[sintassi (informatica)|sintassi]] e [[semantica (informatica)|semantica]]) dal sottostante linguaggio macchina.
 
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]] destinato a eseguirli. Fra le conseguenze principali si possono elencare le seguenti:
Riga 34:
 
===Transcompilazione===
In questo modello viene usato un programma detto [[transcompilatore]], la cui funzione è quella di tradurre un programma sorgente scritto in un linguaggio ad alto livello in un programma scritto in un altro linguaggio ad alto livello (ovvero, di livello paragonabile).<ref>[http://www.compilers.net/paedia/compiler/index.htm Types of compilers]</ref> L'esecuzione avviene poi secondo il modello previsto per il linguaggio "di arrivo" del processo di transcompilazione.
 
===Approcci ibridi===
Riga 73:
{{Controllo di autorità}}
 
[[Categoria:TeorieParadigmi delladi programmazione]]
[[Categoria:Linguaggi di programmazione]]