Linguaggio di programmazione ad alto livello: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m portale |
||
(20 versioni intermedie di 18 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>
==
L'idea di un linguaggio automaticamente "traducibile" in linguaggio macchina, ma più vicino alla logica umana fu introdotta in informatica negli
==
Sono progettati per essere facilmente comprensibili dagli esseri umani, fino a includere alcuni elementi del [[linguaggio naturale]]. Per essere eseguiti da un calcolatore, i programmi scritti in linguaggio ad alto livello devono essere ''tradotti'' o ''interpretati'' da un altro programma.
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 (informatica)|variabile]] e [[assegnamento]] sono una versione [[astrazione (informatica)|astratta]] dello spostamento di dati fra [[cella di memoria|celle di memoria]]; e il fatto che il paradigma di programmazione dominante sia quello [[programmazione imperativa|imperativo]] si può facilmente giustificare con la considerazione che anche i linguaggi macchina ''sono'' imperativi.
=== 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 26:
==Modelli di esecuzione==
Un linguaggio ad alto livello, per definizione, non è ''direttamente'' "eseguibile" da parte del calcolatore. L'esecuzione dei linguaggi ad alto livello si può basare su due principali modelli, [[compilazione]] e [[Interpretazione (informatica)|interpretazione]], che ammettono alcune varianti e possono essere combinati fra loro.
===Compilazione===
Riga 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>
===Approcci ibridi===
Riga 70:
* [[Paradigma di programmazione]]
== Collegamenti esterni ==
{{Controllo di autorità}}▼
* {{FOLDOC|high-level language|high-level language}}
* {{Collegamenti esterni}}
▲{{Controllo di autorità}}
{{Portale|informatica}}
[[Categoria:Paradigmi di programmazione]]
[[Categoria:Linguaggi di programmazione]]
|