Programmiersprachen

Damit Computer und Computer-Hardware funktionieren können, brauchen sie Software, die zunächst von Programmierern programmiert werden muss. Programmiersprachen bilden demnach die Grundlage des Rechnerbetriebs. Allerdings versteht ein Computer keine menschliche Sprache, sondern nur termOperationscodes und termAdressformen in binärer Form. Kurz gefasst: Ein Computer versteht nur 0 und 1. Programmiersprachen sind demnach künstliche, mehr oder weniger abstrakte Formulierungen, die ein Computer verstehen kann (Mertens u.a., 2001, S. 25)

definition

Eine Programmiersprache ist eine formale, künstliche Sprache zur Formulierung von Programmen. (Stahlknecht & Hasenkamp, 2005, S. 283).

Nach dem Zeitpunkt ihrer Entstehung und ihrer Benutzer- bzw. Anwendernähe werden Programmiersprachen meistens in Generationen unterteilt. Dabei gilt für die Zuordnung einer Programmiersprache zu einer Generation:

Daraus ergibt sich folgende Einteilung:

Mit jeder höheren Generation steigt der Abstraktionsgrad der Programmiersprache von dem Computer, der den Befehls- und Anweisungscode ausführen muss. Gleichzeitig nimmt auch die Mächtigkeit der Anweisungen (Anzahl der Maschineninstruktionen), die durch eine Anweisung einer höheren Programmiersprache ausgeführt werden, zu (Rautenstrauch & Schulze, 2003, S. 74).

Abb. 10: ProgrammiersprachenAbb. 10: Programmiersprachen

Maschinensprachen (Sprachen der 1. Generation)

Eine Maschinensprache besteht nur aus termBinärcode (0 und 1) und stellt die interne Sprache eines bestimmten Prozessors (CPU) dar. Maschinensprachen sind nicht termportierbar. Pro Anweisung der Maschinensprache wird genau eine Anweisung auf Prozessorebene durchgeführt (Stahlknecht & Hasenkamp, 2005, S. 284. Rautenstrauch & Schulze, 2003, S. 74).

Assemblersprachen (Sprachen der 2. Generation)

Assemblersprachen (auch maschinenorientierte Sprachen genannt) gelten ebenfalls nur für einen bestimmten Rechnertyp und sind nicht termportierbar. Sie bieten aber einige Erleichterungen für den Programmierer, da die Anweisungen durch mnemotechnische Bezeichnungen (z.B. ADD für Addition oder SUB für Subtraktion) dargestellt werden. Die Instruktionen werden als Kommandofolgen in termMakros zusammengefasst. Assemblersprachen werden bei der Entwicklung von Betriebssystemen oder zeitkritischen Anwendungen eingesetzt (Stahlknecht & Hasenkamp, 2005, 285).

Höhere Programmiersprachen (Sprachen der 3. Generation)

Höhere Programmiersprachen enthalten Anweisungen und Anweisungsfolgen (Algorithmen) mit einem wesentlich weiteren Funktionsumfang als die Sprachen der niedrigeren Generationen. Sie sind vergleichsweise leicht erlernbar, da Befehlsnamen und termSyntax der menschlichen Sprache angenähert sind. Höhere Programmiersprachen sind rechnerunabhängig und können auf verschiedenen Rechnertypen eingesetzt werden (Portabilität). Im Gegensatz zu den Sprachen der 1. und 2. Generation können sie allerdings die Hardware weniger direkt ansprechen und daher auch schlechter nutzen und erfordern darüber hinaus längere Programmlaufzeiten. Höhere Programmiersprachen werden für die Entwicklung von Betriebs- und Anwendungsprogrammen verwendet (Stahlknecht & Hasenkamp, 2005, S. 285. Rautenstrauch & Schulze, 2003, S. 75).

Fourth Generation Languages (Sprachen der 4. Generation)

Für die Programmiersprachen bis zur dritten Generation ist die Zuordnung und Beschreibung der Eigenschaften mehr oder weniger eindeutig und unbestritten. Ab der 4. Generation (4GLs = Fourth Generation Languages) gibt es für Programmiersprachen keine einheitlichen Definitionen mehr. (Rautenstrauch & Schulze, 2003, S. 75) führen hierzu aus: „Unter dem vorher festgelegten Kriterium ‚Benutzernähe’ sind 4 GLs Programmiersprachen, die Sprachkonstrukte oder Werkzeuge zur Verfügung stellen, mit denen relativ komplexe Abläufe mit wenigen Instruktionen codiert werden können.“

Ab der 5. Generation gibt es keinerlei eindeutige Definitionen mehr.