Gli svantaggi dei linguaggi di programmazione di alto livello
Nella terminologia della programmazione informatica, 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 poche parole, i linguaggi di basso livello risiedono "in basso" sul sistema informatico, più vicino all'effettiva interazione hardware. I linguaggi di alto livello sono astratti dall'hardware. Il risultato di questa astrazione può comportare un codice più rapido e leggibile, ma vantaggi in termini di velocità inferiori e un minore 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, liberandolo per completare attività più avanzate ignorando i minimi dettagli del sistema, come la gestione della memoria. 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 per la programmazione di sistemi.
Velocità
Le lingue di alto livello sono in genere lingue "interpretate" piuttosto che le lingue di basso livello "compilate". "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 - Python, ad esempio - viene eseguito solo sopra l'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, tiene conto dell'intero ambiente di quel sistema nella sua compilazione. 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 ancora adatti. Senza l'accesso alle risorse di sistema, lo sviluppo di applicazioni native del sistema operativo rapide è difficile. 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.