Le generazioni di linguaggi di programmazione sono un modo per classificare i linguaggi di programmazione per computer in base alla loro distanza complessiva dal codice macchina effettivo che viene generato e, in qualche modo, alla loro facilità d’uso da parte di un programmatore. Esistono tre generazioni di linguaggi di programmazione generalmente accettate e alcune le cui definizioni non sono chiaramente concordate. Un linguaggio di programmazione per computer di prima generazione è un semplice codice macchina senza astrazioni. I linguaggi di seconda generazione sono codici macchina astratti, come il linguaggio assembly, che sono legati a un’architettura di sistema specifica ma sono leggibili dall’uomo e devono essere compilati. I linguaggi di terza generazione sono la forma più comune, inclusi linguaggi standard come C e Java®, mentre i linguaggi di quarta generazione o successivi hanno definizioni diverse.
Quando le generazioni di linguaggi di programmazione sono state create per descrivere le lingue, il termine è stato utilizzato principalmente per indicare linguaggi di terza generazione. Ciò significa che le lingue di prima e seconda generazione sono state classificate come tali solo per evidenziare le capacità delle lingue di terza generazione. La quarta e la quinta generazione di linguaggi di programmazione sono state ampiamente utilizzate come termini in relazione al marketing per i linguaggi in fase di sviluppo. Nel marketing e in alcune aree accademiche, le generazioni linguistiche con numeri più alti vengono utilizzate in modo non standard per indicare che una lingua è più recente o ha più funzionalità di un’altra.
La prima delle generazioni del linguaggio di programmazione indica il codice macchina. Ciò significa scrivere un programma come una sequenza di byte o, in casi estremi, bit che possono essere eseguiti direttamente da un computer. Nella maggior parte dei casi, questo si riferisce a un sistema che accetta input tramite interruttori codificati o altri meccanismi fisici.
I linguaggi di programmazione di seconda generazione sono considerati linguaggi in stile assembly. Si tratta di linguaggi scritti con codice e comandi leggibili dall’uomo che sono ancora legati a specifiche architetture di sistema ma presentano un ambiente di sviluppo più semplice e alcune astrazioni. I linguaggi assembly non hanno mai smesso di essere utilizzati, a partire dal 2011, e non solo sono estremamente potenti, ma possono anche essere utilizzati come istruzioni inline in linguaggi di programmazione di livello superiore, rendendo falsa l’idea che la generazione di un linguaggio corrisponda alla sua velocità o potenza.
I linguaggi di programmazione di terza generazione hanno disaccoppiato il codice dal processore in misura ancora maggiore, consentendo lo sviluppo di codice che utilizza istruzioni più leggibili. Inoltre, sono stati sviluppati compilatori in grado di trasformare una singola riga di codice in più istruzioni di assemblaggio su più piattaforme e, infine, in dozzine o più istruzioni di codice macchina. Quasi tutti i linguaggi per computer in grado di compilare eseguibili binari nativi e librerie sono considerati linguaggi di terza generazione.
In generale, un linguaggio di quarta generazione è visto come un linguaggio destinato a utilizzare un tipo di linguaggio di programmazione molto naturale per l’utente. Può anche essere definito come un linguaggio che utilizza elementi visivi per costruire il programma finale. Una terza definizione è un linguaggio di programmazione creato per uno scopo specifico, come un linguaggio di programmazione di database o un linguaggio di sviluppo rapido di applicazioni (RAD).
Una definizione generica di linguaggio informatico di quinta generazione è quella che consente a un programmatore di presentare al computer un problema che poi tenta di risolvere. La maggior parte delle lingue elencate come lingua di quinta generazione sono per lo più di natura accademica. Altre generazioni di linguaggi di programmazione, come la sesta e la settima, sono state utilizzate dagli sviluppatori di linguaggi commerciali per scopi di marketing.