Programmiersprachen werden in verschiedene Generationen eingeteilt, um damit zum einen die geschichtliche Entwicklung nachzuzeichnen. Andererseits ist dies ein Ansatz, die Sprachgenerationen als semantische Level zu verstehen. Damit wird der Abstraktionsgrad von der zugrunde liegenden Technik mit jeder Generation erhöht. Die 1. Generation erfordert damit genaueste Kenntnis über die Funktionsweise der zu programmierenden Maschine, während in den höheren Generationen die Beschreibung des Problems wichtiger wird. Wie es letztlich zu lösen ist, soll in den Verantwortungsbereich des Rechners überführt werden.
1. Generation: Maschinensprache sind die direkt auf einem Prozessor ausführbaren binäre Zahlencodes, die die Befehle darstellen. Die Eingabe erfolgt direkt in binärer 0-1-Form. Die direkte Programmierung in einer Maschinensprache wird heute kaum noch verwendet.
Beispiel: Es soll die Addition „3 + 4“ durchgeführt werden. Der Prozessor hat für die Operation „addiere“ den festgelegten Code 00011010. 0011 und 0100 ist die Codierung der Operanden 3 und 4 im Dualsystem. Damit weist die folgende Folge in Maschinensprache den Rechner an, die Addition auszuführen: 00011010 0011 0100.
2. Generation: Assembler ersetzen die Zahlencodes der Maschinensprache durch symbolische Bezeichner (Mnemonics). Eine Assembleranweisung wird in genau einen Maschinenbefehl umgesetzt. Der Anteil der Assemblerprogrammierung ist sehr gering.
Beispiel: Es soll die Addition „3 + 4“ durchgeführt werden. Der für den Prozessor geeignete Assembler hat den Bezeichner ADD für die Operation „addiere“ festgelegt. R0 und R1 sind die Speicherzellen in der die Operanden 3 und 4 stehen. Damit weist der folgende Befehl im Assembler den Rechner an, die Addition auszuführen: ADD R0 R1.
3. Generation: Höhere Programmiersprachen (High Level Languages) führen Konzepte, wie Variablen ein, um leichter verständlichen Quelltext schreiben zu können. Sprachen der 3. Generation sind weitgehend maschinenunabhängig. Die meisten praktisch eingesetzten Programmiersprachen sind höhere Programmiersprachen.
Beispiel: Es soll die Addition „3 + 4“ durchgeführt werden. In der höheren Programmiersprache C wird direkt die mathematische Arithmetik für die Operation „addiere“ unterstützt. Es ist dafür eine Variable Summe vom Datentyp int nötig. Damit weist der folgende Programmcode in C den Rechner an, die Addition auszuführen: int Summe; Summe = 3 + 4;.
Objektorientierte Sprachen sind ebenfalls Sprachen der 3. Generation. Um jedoch ihre konzeptionelle Sonderrolle zu betonen, werden sie in der Literatur oft als „OO-Generation“ bezeichnet.
4. Generation: Viertgenerationssprachen bieten einfache Sprachmittel zur Auslösung komplexer Operationen. Zumeist sind sie dabei an eine bestimmte Anwendung, wie Informationsgewinnung und Listenerzeugung gebunden.
Beispiel: Es sollen aus einer Datensammlung alle Kundendaten herausgefunden werden. Falls die Daten in einer geeigneten Datenbankanwendung erfasst sind, kann mit der Sprache SQL die Aktion folgendermaßen erreicht werden: SELECT kunden FROM datenbank. Dasselbe Ergebnis ist mit einer Hochsprache nur durch eine Beschreibung von Einzelaktionen (Öffnen von Dateien etc.) zu erzielen.
Mit Natural wurde ab 1979 von der Firma Software AG die erste Programmiersprache der 4. Generation zur Erstellung vollumfänglicher kommerzieller Anwendungessysteme angeboten, für die der Begriff 4. Generation geprägt wurde und die auch heute noch weit verbreitet ist. NATURAL ist als Programmiersprache Teil einer umfassenden interaktiven Entwicklungsumgebung. Wesentliches Merkmal der Sprachen der 4. Generation ist die Abstraktionsebene, in der das Problem formuliert wird. Verlangen Höhere Programmiersprachen noch das Programmieren von prozeduralen technischen Einzelschritten, wird in Sprachen der 4. Generation die Anforderung eher problemnah formuliert und vom System in beliebigen Umgebungen unter Nutzung der technischen Möglichkeiten zur Ausführung gebracht. Weitere Merkmale sind: integrierte Gestaltung der Nutzeroberfläche, Listenerzeugung, Datenbankzugriff.
5. Generation: (Very High Level Language, VHLL) Sprachen der 5. Generation gestatten das Beschreiben von Sachverhalten und Problemen. Sie kommen vor allem im Bereich der KI (künstliche Intelligenz) zum Einsatz. Die Wahl des Problemlösungsweges kann (entsprechend dem Sprachkonzept) dem jeweiligen System (weitgehend) überlassen werden. Bekanntestes Beispiel für eine Sprache der 5. Generation ist PROLOG.