Linguaggio di programmazione ad alto livello: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Cenni storici: Mancava la nazione (USA) nel testo
Etichette: Modifica da mobile Modifica da web per mobile
m portale
 
(10 versioni intermedie di 9 utenti non mostrate)
Riga 1:
{{F|linguaggi di programmazione|ottobre 2012}}
[[File:CPT-TheoryOfComp-Binary-Search-Python.png|miniatura|Esempio di [[Programma (informatica)|programma]] in [[Python]]]]
Un '''linguaggio di programmazione ad alto livello''', in [[informatica]], è un [[linguaggio di programmazione]] caratterizzato da una significativa [[Astrazione (informatica)|astrazione]] dai dettagli del funzionamento di un [[computer|calcolatore]] e dalle caratteristiche del [[linguaggio macchina]]. Il livello di astrazione definisce quanto sia di "alto livello" un linguaggio di programmazione.<ref>{{Cita web|url=http://www.ittc.ku.edu/hybridthreads/glossary/index.php|titolo=HThreads - RD Glossary|sito=web.archive.org|data=2007-08-26|accesso=2022-04-06|dataarchivio=26 agosto 2007|urlarchivio=https://web.archive.org/web/20070826224349/http://www.ittc.ku.edu/hybridthreads/glossary/index.php|urlmorto=sì}}</ref>
 
== Cenni storiciStoria ==
L'idea di un linguaggio automaticamente "traducibile" in linguaggio macchina, ma più vicino alla logica umana fu introdotta in informatica negli USA a partire dal 1950, soprattutto grazie al lavoro di [[John Backus]] ([[IBM]]), a cui si deve il primo linguaggio ad alto livello ad avere avuto ampia diffusione, il [[Fortran]]. Per questa innovazione Backus ha ricevuto il [[premio Turing]].
 
Riga 11 ⟶ 12:
 
=== Problemi del linguaggio macchina ===
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 [[Registro (informatica)|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 31 ⟶ 32:
 
===Interpretazione===
In questo modello viene usato un programma detto [[Interprete (informatica)|interprete]], la cui funzione è quella di interpretare le istruzioni del programma sorgente ed eseguirle. A differenza del compilatore, l'interprete non produce mai un eseguibile. Di conseguenza, interprete e sorgente sono sempre necessari a ogni esecuzione del programma. Questo approccio consente una maggiore portabilità (lo stesso programma può essere eseguito su diversi calcolatori e diversi sistemi operativi, a patto che sia disponibile un interprete) ma ha generalmente prestazioni inferiori (poiché il costo dell'analisi e dell'interpretazione del [[codice sorgente]] viene pagato durante l'esecuzione).
 
===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>[{{Cita web |url=http://www.compilers.net/paedia/compiler/index.htm |titolo=Types of compilers] |accesso=29 ottobre 2014 |dataarchivio=19 luglio 2019 |urlarchivio=https://web.archive.org/web/20190719090932/http://www.compilers.net/paedia/compiler/index.htm |urlmorto=sì }}</ref> L'esecuzione avviene poi secondo il modello previsto per il linguaggio "di arrivo" del processo di transcompilazione.
 
===Approcci ibridi===
Riga 70 ⟶ 71:
 
== Collegamenti esterni ==
* {{FOLDOC|high-level language|high-level language}}
* {{Collegamenti esterni}}
 
{{Controllo di autorità}}
{{Portale|informatica}}
 
[[Categoria:Paradigmi di programmazione]]
[[Categoria:Linguaggi di programmazione]]