Nella terminologia di programmazione dei computer, i linguaggi di programmazione sono spesso separati in linguaggi "di alto livello" e "di basso livello". La differenza tra i due è una questione di interazione hardware. In parole povere, i linguaggi di basso livello risiedono "in basso" nel sistema informatico, più vicini all'effettiva interazione hardware. I linguaggi di alto livello vengono astratti dall'hardware. Il risultato di questa astrazione può comportare un codice più rapido e leggibile, ma vantaggi in termini di velocità inferiori e minor accesso alle risorse di sistema.
Astrazione
Ciò che rende i linguaggi di alto livello diversi dai linguaggi di basso livello è il livello di astrazione che un linguaggio ha dalle risorse di sistema. La gestione quotidiana delle risorse di sistema può diventare lenta e dolorosa. Sono stati creati linguaggi di alto livello per affrontare questo problema gestendo il sistema per il programmatore, liberando lei per completare compiti più avanzati ignorando i minimi dettagli del sistema, come la memoria gestione. Tuttavia, questo ha uno svantaggio in quanto un programmatore potrebbe trovarsi in una situazione in cui è richiesto l'accesso al sistema e un linguaggio di alto livello non può fornire tale accesso. Un linguaggio di alto livello in genere non è adatto alla programmazione di sistemi.
Video del giorno
Velocità
I linguaggi di alto livello sono tipicamente linguaggi "interpretati" piuttosto che linguaggi di basso livello "compilati". "Interpretato" significa semplicemente che un linguaggio utilizza un interprete che esegue il codice sorgente una riga alla volta, invece di compilare un file binario. Tuttavia, gli interpreti sono spesso programmi scritti in linguaggi compilati. Per questo motivo, il linguaggio interpretato, ad esempio Python, viene eseguito solo sull'interprete Python, che è scritto in C. Ciò aumenta il sovraccarico di memoria e tempo per i programmi interpretati e spesso vengono eseguiti più lentamente.
Peculiarità del sistema
Un apparente punto di forza del codice di alto livello è la sua portabilità. Il codice di alto livello può essere eseguito su qualsiasi sistema in cui è installato l'interprete appropriato. Tuttavia, quando un programma viene compilato per un computer, nella sua compilazione tiene conto dell'intero ambiente di quel sistema. Un linguaggio interpretato è già astratto dal sistema a tal punto che il programma interpretato non sa nulla del sistema tranne ciò che l'interprete può fornirgli.
Limiti di programmazione
A causa della natura dei linguaggi di alto livello, ci sono alcuni compiti per i quali non sono adatti, o almeno non sono ancora adatti. Senza l'accesso alle risorse di sistema, è difficile sviluppare rapidamente applicazioni native del sistema operativo. Inoltre, anche lo sviluppo di un sistema operativo diventa problematico. Man mano che più software si sposta online, questo fatto diventa meno preoccupante ma, per l'uso commerciale e industriale, i linguaggi interpretati potrebbero funzionare troppo lentamente o troppo lontani dall'interazione hardware.