Cosa sono le generazioni di linguaggio di programmazione 4a e 5a? Ce ne sono altri? [chiuso]


36

Poiché è spesso classificato a livello di scuola / college, i linguaggi di programmazione popolari (C #, Java, C ++) sono tutti linguaggi di terza generazione (con un livello più elevato di astrazione dalle parti fisiche della macchina). Inoltre, le lingue di assemblaggio sono classificate come lingue di seconda e macchine come lingue di prima generazione.

Inizialmente stavo pensando che SQL dovrebbe essere considerato un linguaggio di quarta generazione perché è più astratto e lontano dai dettagli del looping e più descrittivo.

Proprio ora ho scoperto che esistono linguaggi di quarta generazione e di quinta generazione, ma qual è la base per qualsiasi linguaggio di programmazione o tecnologia da classificare come linguaggio di quarta o quinta generazione?

Inoltre, ci sono anche lingue di 6a o 7a generazione?



12
Oh, se solo le persone potessero essere d'accordo su ciò che rende l'ennesima lingua di Gen che n ... Non ci sono criteri che si possano veramente abbattere (tranne affermare che le lingue di gen superiori sono ulteriormente rimosse dal metallo nudo rispetto al livello inferiore - di quale grado è non concordato).
Oded,

5
Quale "generazione" è C? Puoi fornire alcuni esempi di lingue di quarta e quinta generazione e dirci cosa rende ogni generazione? Vale a dire quali criteri definiscono una lingua come generazione 'n'?
Mawg,

3
Non credo che il concetto di linguaggio di X generazione sia veramente pertinente.
Pieter B,

5
Sto creando un linguaggio di 14a generazione, e sarà pura magia, perché è il settimo figlio di un settimo figlio ....
David Conrad,

Risposte:


36

Panoramica sulle generazioni semplici: una lingua non è l'ennesima generazione quando sono i mattoni

  1. bit
  2. Istruzioni
  3. Operazioni astratte
  4. Oggetti di dominio
  5. Obiettivi del programma

Quindi anche le lingue nuove come Google Go o Apple Swift sono ancora solidamente di terza generazione. Regex è una lingua di corrispondenza del testo, che la rende una lingua di quarta generazione. Con questa definizione, la 4a generazione si allinea strettamente con le DSL. Tuttavia, si noti che linguaggi come C ++ possono avere tipi di mondo reale come Lengthe Weightin aggiunta a floate double, il che li rende ibridi di terza / quarta generazione.

Le lingue di quinta generazione non esistono praticamente, in quanto richiedono generalmente un livello di IA che non si è mai materializzato. Il fatto che noi programmatori siamo ancora necessari è esattamente perché i non programmatori non possono dire a un computer con sufficiente precisione che cosa vogliono esattamente.


1
NB sull'ultimo paragrafo: il blog di J.Pitrat ha cose interessanti legate
all'IA

5
Il DONALD problemproblema su quel blog evidenzia quanto siamo ancora lontani sudo make me a sandwiche preoccupante da quanti progressi abbiamo fatto negli ultimi 50 anni.
MSalter

1
@AndrewHoffmann Cosa c'è che non va? Se stai costruendo un ponte, è meglio avere il giusto tipo di materiale per la tua struttura e i rivetti dovrebbero avere la giusta dimensione (e quante dimensioni ci sono?).
Didierc,

1
@AndrewHoffman: l'IA è stata principalmente un argomento CS in ambito accademico, non un argomento di ingegneria del software. Si potrebbe sostenere che la vera ingegneria sarebbe stata un vantaggio. Probabilmente c'è una buona ragione per cui la prima auto a guida autonoma sembra essere di Google.
MSalters il

6
@AndrewHoffman - parla da solo. Sono un ingegnere del software e uso pratiche ingegneristiche piuttosto standard ogni giorno. Inoltre, sono un ingegnere certificato. Penso che il tuo intero commento sia una sciocchezza basata sulla tua esperienza personale piuttosto che sulla base di fatti.
Ingegnere Dollery,

88

"Linguaggio di nona generazione" è una parola d'ordine. È un termine di marketing. Non esiste una definizione universalmente accettata di ciò che definisce esattamente la "nona generazione" per n> 2. Alcune persone classificano i linguaggi di "scripting" come Perl o Python come 4GL perché sono molto più di alto livello di C, mentre altri pensano che la definizione le caratteristiche di 4GL sono che sono specifiche del dominio, ad esempio SQL. Alcuni idioti pensano addirittura che Java (un linguaggio della metà degli anni '90 pieno di orientamento agli oggetti, raccolta dei rifiuti e riflessione) appartiene alla stessa categoria "3GL" di Fortran (degli anni '50) e C (degli anni '70).

Una categorizzazione così confusa come il "linguaggio di quarta generazione" non è di alcuna utilità. Potresti vederlo nei vecchi libri di testo o ascoltarlo da persone che hanno iniziato a programmare negli anni '80, ma un tag come "4GL" è inutile senza una spiegazione di accompagnamento di ciò che l'autore intende esattamente.

Dal momento che nessuno capisce immediatamente cosa intendi con "4GL", non dovresti usare tali categorizzazioni. Invece, usa termini specifici per comunicare esattamente cosa intendi. Ad esempio, tutti i NASM, LLVM IR e Jasmin sono linguaggi di assemblaggio, ma gli ultimi due VM di destinazione e l'ultimo è anche un linguaggio di programmazione orientato agli oggetti. Sono tutti quei 2GL? SQL è un linguaggio parzialmente dichiarativo, specifico del dominio per le query del database degli anni '80. E TeX è un linguaggio specifico del dominio per la composizione dagli anni '70. Sono entrambi 4GL poiché sono entrambi più o meno specifici del dominio?


22
Sto sviluppando un linguaggio 8G. Sarà strabiliante. ... anche le julienne. Vendo licenze per tre facili pagamenti di ...;)
BrianH,

10
Penso che le generazioni di linguaggi di programmazione DOVREBBERO corrispondere in qualche modo alle generazioni di jet da combattimento . Questa quantità di suggestione sembra sufficiente per giustificare un RFC sull'argomento.
toniedzwiedz,

11
Ah, questo riporta alla mente ricordi, quando le lingue di quinta generazione sarebbero presto così facili da usare che la maggior parte dei programmatori sarebbe senza lavoro.
Gort il robot il

5
@Izkata A 1GL è un codice binario della macchina (ad es. Il set di istruzioni amd64). Un 2GL è un linguaggio di assemblaggio testuale che fornisce mnemonici per il codice macchina (ad es. GAS). Un 3GL è qualcosa che si distingue dalle istruzioni della macchina. Fortran è stato il primo a farlo consentendo ai programmatori di usare espressioni e variabili come (I + 7) * 3. Tuttavia, non vi è consenso su dove finisca la categoria 3GL e cosa significhino specificamente 4GL e 5GL.
amon,

5
"Alcuni nitwit pensano addirittura che Java ... appartenga alla stessa categoria" 3GL "di Fortran ..." - mentre altri nitwit credono che se due cose sembrano molto diverse da loro, allora non può esistere uno schema di classificazione che le raggruppa insieme secondo quali criteri sono rilevanti per quel sistema? ;-p
Steve Jessop,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.