Was sind die 4. und 5. Programmiersprachengeneration? Gibt es noch mehr davon? [geschlossen]

36

Beliebte Programmiersprachen (C #, Java, C ++) sind alle Sprachen der 3. Generation (mit einem höheren Abstraktionsgrad von den physischen Teilen der Maschine). Assemblersprachen werden als 2. und Maschinensprachen als Sprachen der 1. Generation klassifiziert.

Anfänglich dachte ich, SQL sollte als Sprache der 4. Generation betrachtet werden, da es abstrakter und weit entfernt von Details der Schleifenbildung und aussagekräftiger ist.

Ich habe gerade herausgefunden, dass es Sprachen der 4. und 5. Generation gibt, aber auf welcher Grundlage kann eine Programmiersprache oder Technologie als Sprache der 4. oder 5. Generation eingestuft werden?

Gibt es auch Sprachen der 6. oder 7. Generation?

Ali
quelle
12
Oh, wenn sich nur die Leute darüber einigen könnten, was eine Sprache der n-ten Generation zu n-ten macht ... Es gibt keine Kriterien, die man wirklich festlegen kann (außer der Aussage, dass Sprachen der höheren Generation weiter vom Bare-Metal-Bereich entfernt sind als auf niedrigerem Niveau - in welchem ​​Maße nicht vereinbart).
Oded
5
Welche "Generation" ist C? Können Sie einige Beispiele für Sprachen der 4. und 5. Generation nennen und uns sagen, was jede Generation ausmacht? Dh welche Kriterien definieren eine Sprache als Generation 'n'?
Mawg,
3
Tbh Ich denke nicht, dass das Konzept der Sprache der X. Generation wirklich relevant ist.
Pieter B
5
Ich mache eine Sprache der 14. Generation und es wird reine Zauberei sein, weil es der siebte Sohn eines siebten Sohnes ist ...
David Conrad

Antworten:

36

Übersicht über einfache Generationen: Eine Sprache ist die n-te Generation, wenn es sich um Bausteine ​​handelt

  1. Bits
  2. Anleitung
  3. Abstrakte Operationen
  4. Domänenobjekte
  5. Programmziele

Daher sind selbst Sprachen wie Google Go oder Apple Swift in der 3. Generation noch solide. Regex ist eine Textanpassungssprache, die es zu einer Sprache der frühen 4. Generation macht. Nach dieser Definition ist die 4. Generation eng an die DSLs angelehnt. Beachten Sie jedoch, dass Sprachen wie C ++ reale Typen wie Lengthund Weightzusätzlich zu floatund haben können double, was sie zur hybriden 3./4. Generation macht.

Sprachen der fünften Generation gibt es praktisch nicht, da sie im Allgemeinen einen Grad an KI erfordern, der nie zustande gekommen ist. Die Tatsache, dass wir Programmierer immer noch gebraucht werden, liegt genau daran, dass Nicht-Programmierer einem Computer nicht genau genug sagen können, was genau sie wollen.

MSalters
quelle
1
NB zum letzten Absatz: J.Pitrats Blog enthält interessante Informationen zu KI und Programmierern
Basile Starynkevitch
5
Das DONALD problemProblem in diesem Blog zeigt, wie weit wir noch entfernt sudo make me a sandwichsind und wie viel Fortschritt wir in den letzten 50 Jahren gemacht haben.
MSalters
1
@AndrewHoffmann Was ist daran falsch? Wenn Sie eine Brücke bauen, haben Sie besser das richtige Material für Ihre Struktur, und Nieten haben besser die richtige Größe (und wie viele Größen gibt es?).
Didierc
1
@AndrewHoffman: AI war im akademischen Bereich meistens ein CS-Thema, kein Thema der Softwareentwicklung. Es kann argumentiert werden, dass echtes Engineering ein Vorteil gewesen wäre. Es gibt wahrscheinlich einen guten Grund, warum das erste selbstfahrende Auto Googles zu sein scheint.
MSalters
6
@ AndrewHoffman - sprechen Sie für sich. Ich bin ein Software-Ingenieur und verwende jeden Tag ziemlich übliche Ingenieurspraktiken. Außerdem bin ich zertifizierter Ingenieur. Ich denke, dass Ihr gesamter Kommentar Unsinn ist, der auf Ihrer persönlichen Erfahrung basiert und nicht auf Tatsachen.
Engineer Dollery
88

Die Sprache der n-ten Generation ist ein Schlagwort. Es ist ein Marketingbegriff. Es gibt keine allgemein akzeptierte Definition dessen, was genau die „n-te Generation“ für n> 2 definiert. Einige Leute kategorisieren Skriptsprachen wie Perl oder Python als 4GLs, weil sie viel übergeordneter sind als C, während andere die Definition denken 4GLs zeichnen sich dadurch aus, dass sie domänenspezifisch sind, z. B. SQL. Einige Trottel glauben sogar, dass Java (eine Sprache aus der Mitte der 90er Jahre, die voller Objektorientierung und Speicherbereinigung und -reflexion ist) in die gleiche „3GL“ -Kategorie gehört wie Fortran (aus den 50er Jahren) und C (aus den 70er Jahren).

Eine so verwirrende Kategorisierung wie „Sprache der 4. Generation“ ist nutzlos. Sie können es in alten Lehrbüchern sehen oder von Leuten hören, die in den 80er Jahren mit dem Programmieren begonnen haben, aber ein Tag wie „4GL“ ist wertlos, ohne eine begleitende Erklärung, was der Autor genau damit meint.

Da niemand sofort versteht, was Sie unter "4GL" verstehen, sollten Sie solche Kategorisierungen nicht verwenden. Verwenden Sie stattdessen bestimmte Begriffe, um genau zu kommunizieren, was Sie meinen. Beispiel: NASM, LLVM IR und Jasmin sind alle Assemblersprachen. Die beiden letztgenannten Ziel-VMs und die letzte sind ebenfalls objektorientierte Programmiersprachen. Sind alle diese 2GLs? SQL ist eine teilweise deklarative, domänenspezifische Sprache für Datenbankabfragen aus den 80er Jahren. Und TeX ist eine domänenspezifische Sprache für den Schriftsatz aus den 70er Jahren. Sind beide 4GLs, da beide mehr oder weniger domänenspezifisch sind?

amon
quelle
22
Ich entwickle eine 8G-Sprache. Es wird umwerfend sein. ... es wird sogar Julienne Pommes. Ich verkaufe Lizenzen für drei einfache Zahlungen von ...;)
BrianH
10
Ich denke, Generationen von Programmiersprachen MÜSSEN irgendwie Generationen von Düsenjägern entsprechen . Dieses Ausmaß an Attraktivität scheint ausreichend zu sein, um einen RFC zu diesem Thema zu rechtfertigen.
Toniedzwiedz
11
Ah, das weckt Erinnerungen, als die Sprachen der fünften Generation bald so einfach zu bedienen wären, dass die meisten Programmierer arbeitslos wären.
Gort the Robot
5
@Izkata A 1GL ist ein binärer Maschinencode (z. B. der Befehlssatz amd64). Eine 2GL ist eine textuelle Assemblersprache, die Mnemoniken für Maschinencode (z. B. GAS) bereitstellt. Ein 3GL ist etwas, das über Maschinenanweisungen abstrahiert. Fortran war der erste, der es Programmierern ermöglichte, Ausdrücke und Variablen wie z (I + 7) * 3. Es besteht jedoch kein Konsens darüber, wo die Kategorie 3GL endet und was 4GL und 5GL konkret bedeuten sollen.
amon
5
"Einige Trottel glauben sogar, dass Java ... in dieselbe" 3GL "-Kategorie wie Fortran gehört ..." - während andere Trottel glauben, dass es kein Klassifizierungsschema geben kann, das sie gruppiert, wenn zwei Dinge sehr unterschiedlich erscheinen zusammen nach welchen Kriterien für dieses Schema relevant sind? ;-p
Steve Jessop