# 4GL

Als fourth generation language oder kurz 4GL bezeichnet man Programmiersprachen bzw. Programmierumgebungen der vierten Generation. Diese sind darauf ausgerichtet, rasch – mit möglichst wenigen Codezeilen – für einen bestimmten Anwendungsbereich Funktionen oder komplette Anwendungen schreiben zu können. Die heute (Stand 2021) verbreiteten Low-Code-Plattformen können als Nachfolger von Programmiersprachen der vierten Generation und Rapid-Application-Development-Werkzeugen (RAD) betrachtet werden.
Der Begriff 4GL ist nicht exakt definiert und wird vor allem für Marketingzwecke eingesetzt. Gemeinsames Hauptziel aller 4GL ist es jedoch, im Vergleich mit Sprachen der dritten Generation dieselbe Funktionalität mit weniger Code zu erreichen. Der Begriff wurde in den 1980er Jahren häufig verwendet, wobei oft auf eine bestimmte Thematik festgelegte, anwendungsspezifische Skript- oder Abfragesprachen wie SQL als 4GL-Sprachen bezeichnet wurden. Später wurde der Begriff Rapid Application Development mit überlappender Semantik angewandt. Inzwischen zeigt sich immer mehr, dass anwendungsspezifische Skriptsprachen nur der Input für eine 4GL-Sprache sind. Das heißt, die eigentliche 4GL-Sprache wird dazu verwendet, ein System zu spezifizieren, das seinerseits eine spezifische Skriptsprache interpretieren kann. Sogenannte Parsergeneratoren erlauben es, für jeden Zweck eine eigene Skriptsprache zu definieren und die damit erstellten Skripte in den Quelltext einer Hochsprache der dritten Generation zu transformieren. Da eine anwendungsspezifische Skriptsprache im Wesentlichen immer zur Festlegung eines spezifischen Modells einer bestimmten Thematik dient, spricht man hier in letzter Zeit vermehrt auch von modellzentrierter Softwareentwicklung bzw. von modellgetriebener Softwareentwicklung.
Bei den ersten Sprachen der dritten Generation (z. B.: Fortran, Pascal und C) stand die Einführung von standardisierten Kontrollstrukturen im Vordergrund. Dem folgte das Erstellen umfangreicher Programmbibliotheken mit zusätzlichen Bausteinen, wie sie häufig in spezialisierten Anwendungen vorkommen. Die nachfolgenden objektorientierten Programmiersprachen wie beispielsweise C++ und Java sind weiterhin 3GL Sprachen, brachten aber große Verbesserungen in der Softwarestrukturierung mit sich. Parallel dazu entstanden immer mehr grafische Editoren, die in ihrer Semantik für bestimmte Anwendungsbereiche optimiert wurden, um den Zugriff auf die zugehörigen Programmbibliotheken zu vereinfachen. In besonders gelungenen Fällen entstand mit den grafischen Editoren eine sogenannte visuelle Sprache. Da diese nicht mehr eindeutig den Hochsprachen der dritten Generation zugeordnet werden konnten, wurden diese oft bereits als 4GL-Sprache bezeichnet, wobei zwischen der eigentlichen „Sprache“ und dem System, das eine solche Sprache interpretieren kann, nicht unterschieden wurde.
Die Bezeichnung 4GL wurde stark von James Martin propagiert. Er benutzte sie zuerst 1982 in seinem Buch Application Development Without Programmers („Anwendungsentwicklung ohne Programmierer“). Diese Deutung kommt aber erst in neuerer Zeit mit der modellgetriebenen Softwareentwicklung wirklich zum Tragen.

## Zielsetzung

* Verringerung des Entwicklungsaufwands durch den Einsatz verständlicherer, anwendungsbezogener Paradigmen.
* bessere Wartbarkeit und Erweiterbarkeit der Programme durch bessere Lesbarkeit bzw. anwendergerechte Darstellung
* daraus resultierend eine Reduzierung der Entwicklungszeiten und Kosten

## Typen

* Berichtgeneratoren
* Eingabeformulargeneratoren
* Gesamtsysteme, die Angaben aus CASE-Systemen übernehmen und mit Bericht- und Eingabegeneratoren und weiterer Angabe von Prozesslogik ganze Systeme generieren. Ein Beispiel dazu ist das Werkzeug Information Engineering Workbench von James Martin, das erlaubt, die Resultate von Systemanalyse und Systemdesign zu erfassen (in der Form von Datenflussdiagrammen, Entity-Relationship-Diagrammen und Entity-Life-Cycle-Diagrammen). Daraus wurden dann hunderttausende von COBOL-Programmzeilen generiert.
* Generierung von Teilen oder ganzer Softwaresysteme aus anwendungsspezifischen Modellen der Industrie, z. B. mit AUTOSAR.