Generazioni di linguaggi di programmazione - Programming language generations
I linguaggi di programmazione sono stati classificati in diverse generazioni di linguaggi di programmazione . Storicamente, questa classificazione è stata utilizzata per indicare il potere crescente degli stili di programmazione. Gli scrittori successivi hanno in qualche modo ridefinito i significati poiché le distinzioni precedentemente considerate importanti sono diventate meno significative per la pratica corrente.
generazioni
Prima generazione (1GL)
Esempi: linguaggi di programmazione a livello di macchina
Un linguaggio di programmazione di prima generazione (1GL) è un linguaggio di programmazione a livello di macchina .
Un linguaggio (di programmazione) di prima generazione (1GL) è un raggruppamento di linguaggi di programmazione che sono linguaggi a livello di macchina utilizzati per programmare computer di prima generazione . In origine, nessun traduttore veniva utilizzato per compilare o assemblare il linguaggio di prima generazione. Le istruzioni di programmazione di prima generazione sono state immesse tramite gli interruttori del pannello frontale del sistema informatico.
Le istruzioni in 1GL sono costituite da numeri binari , rappresentati da 1 e 0. Questo rende il linguaggio adatto alla comprensione della macchina ma molto più difficile da interpretare e apprendere dal programmatore umano.
Seconda generazione (2GL)
Esempi: linguaggi assembly
Il linguaggio di programmazione di seconda generazione (2GL) è un modo generazionale per classificare i linguaggi assembly .
Terza generazione (3GL)
Esempi: C , C++ , Java , Python , PHP , Perl , C# , BASIC , Pascal , Fortran , ALGOL , COBOL
I 3GL sono molto più indipendenti dalla macchina (portatili) e più adatti ai programmatori. Ciò include funzionalità come il supporto migliorato per i tipi di dati aggregati e l'espressione di concetti in un modo che favorisce il programmatore, non il computer. Un linguaggio di terza generazione migliora rispetto a un linguaggio di seconda generazione facendo in modo che il computer si occupi dei dettagli non essenziali. I 3GL sono più astratti delle precedenti generazioni di linguaggi e quindi possono essere considerati linguaggi di livello superiore rispetto alle loro controparti di prima e seconda generazione. Introdotti per la prima volta alla fine degli anni '50, Fortran , ALGOL e COBOL sono esempi dei primi 3GL.
I linguaggi di uso generale più diffusi oggi, come C , C++ , C# , Java , BASIC e Pascal , sono anche linguaggi di terza generazione, sebbene ciascuno di questi linguaggi possa essere ulteriormente suddiviso in altre categorie basate su altri tratti contemporanei. La maggior parte dei 3GL supporta la programmazione strutturata . Molti supportano la programmazione orientata agli oggetti . Tratti come questi sono più spesso usati per descrivere un linguaggio piuttosto che essere solo un 3GL.
Quarta generazione (4GL)
Esempi: ABAP , Unix Shell , SQL , PL/SQL , Oracle Reports , R
I linguaggi di quarta generazione tendono a essere specializzati verso domini di programmazione molto specifici . I 4GL possono includere il supporto per la gestione del database , la generazione di report , l'ottimizzazione matematica , lo sviluppo di GUI o lo sviluppo web .
Quinta generazione (5GL)
Esempi: Prolog , OPS5 , Mercury
Un linguaggio di programmazione di quinta generazione (5GL) è qualsiasi linguaggio di programmazione basato sulla risoluzione dei problemi utilizzando i vincoli dati al programma, piuttosto che utilizzare un algoritmo scritto da un programmatore. La maggior parte dei linguaggi di programmazione basati su vincoli e logici e alcuni altri linguaggi dichiarativi sono linguaggi di quinta generazione.
Mentre i linguaggi di programmazione di quarta generazione sono progettati per creare programmi specifici, i linguaggi di quinta generazione sono progettati per far sì che il computer risolva un determinato problema senza il programmatore. In questo modo, l'utente deve solo preoccuparsi di quali problemi devono essere risolti e quali condizioni devono essere soddisfatte, senza preoccuparsi di come implementare una routine o un algoritmo per risolverli. Le lingue di quinta generazione sono utilizzate principalmente nella ricerca sull'intelligenza artificiale . OPS5 e Mercury sono esempi di linguaggi di quinta generazione, così come ICAD , che è stato costruito su Lisp . KL-ONE è un esempio di un'idea correlata, un linguaggio di frame .
Storia
I termini linguaggio di programmazione "prima generazione" e "seconda generazione" non sono stati utilizzati prima della coniazione del termine "terza generazione"; nessuno di questi tre termini è menzionato nei primi compendi dei linguaggi di programmazione. L'introduzione di una terza generazione di tecnologie informatiche ha coinciso con la creazione di una nuova generazione di linguaggi di programmazione. Il marketing per questo passaggio generazionale nelle macchine è correlato a diversi importanti cambiamenti in quelli che sono stati chiamati linguaggi di programmazione di alto livello , discussi di seguito, dando contenuto tecnico alla distinzione di seconda/terza generazione tra linguaggi di programmazione di alto livello e rinominando retroattivamente machine- linguaggi di codice come prima generazione e linguaggi assembly come seconda generazione .
Inizialmente, tutti i linguaggi di programmazione di livello superiore all'assembly venivano definiti "di terza generazione ", ma in seguito è stato introdotto il termine di " quarta generazione " per cercare di differenziare i (allora) nuovi linguaggi dichiarativi (come il Prolog e il dominio- linguaggi specifici) che pretendevano di operare a un livello ancora più elevato, e in un dominio ancora più vicino all'utente (ad esempio a livello di linguaggio naturale) rispetto ai linguaggi di alto livello originali e imperativi come Pascal , C , ALGOL , Fortran , BASE , ecc.
La classificazione "generazionale" dei linguaggi di alto livello (terza generazione e successive) non è mai stata del tutto precisa ed è stata in seguito forse abbandonata, con classificazioni più precise che hanno acquisito un uso comune, come orientata agli oggetti , dichiarativa e funzionale. C ha dato origine a C++ e successivamente a Java e C# ; Lisp a CLOS ; Ada ad Ada 2012 ; e anche da COBOL a COBOL 2002 . Anche in quella "generazione" sono emerse nuove lingue.