Programmiersprachen

Aus Informatik
Wechseln zu: Navigation, Suche

Programmiersprachen können, aufgrund ihrer unterschiedlichen Konzeptionen und Ausprägungen kategorisiert werden. Man unterscheidet die Generationen der Programmiersprachen und den Programmierparadigmen.


Generationen der Programmiersprachen

1. Generation

Die 1. Generation der Programmiersprachen bezeichnet die Maschinensprachen. Sie sind prinzipiell binär, können jedoch auch hexadezimal codiert sein. Aufgrund dieses Aufbaus können Maschinensprachen direkt vom Prozessor abgearbeitet werden. Sie sind jedoch schwer verständlich und unübersichtlich, sodass komplexere Programmierungen fast nicht realisierbar sind. Nichtsdestotrotz sind sie auch heute unerlässlich: Jede Programmierung muss beim kompilieren in Maschinencode umgewandelt werden.

2. Generation

Die 2. Generation der Programmiersprachen bezeichnet die Assemblersprachen. Hierbei werden zu den binären Codes leichter merkbare Kürzel, so genannte "Mnemonics", zugeordnet, welche vom Assembler in Maschinencode übersetzt werden. Ein Beispiel für eine Addition der Variablen a,b,c und d sieht folgendermaßen aus:

mov eax,[a]
add eax,[b]
add eax,[c]
add eax,[d]

Der Befehl add eax steht dabei für den Binärcode 00000101.

3. Generation

Die 3. Generation der Programmiersprachen bezeichnet die (problemorientierten) imperativen Sprachen. Charakteristisches Merkmal ist die algorithmische Herangehensweise an Probleme. Bekannte Vertreter sind C++, Java, Pascal (Delphi), ... Da die imperativen Sprachen zu den höheren Programmiersprachen gehören, müssen sie vor der Ausführung durch einen Compiler in Maschinencode umgewandelt werden. Das oben genannte Beispiel für eine Addition von Variablen sieht in Delphi (=Pascal) wie folgt aus:

summe := a;
summe := summe+b;
summe := summe+c;
summe := summe+d;

4. Generation

Die 4. Generation umfasst die anwendungsbezogenen, nichtprozeduralen Sprachen. Hierbei ist nur noch das Ziel von Interesse, der Weg dorthin ist nicht relevant. Im Gegensatz zu den vorausgegangen Sprachen wird hier nicht das Programmieren von prozeduralen technischen Einzelschritten verlangt, sondern lediglich die Formulierung auf Abstraktionsebene.

Das Sprachbild wird durch einfache Anweisungen gestaltet, z.B für SQL: "SELECT Kunden FROM Datenbank". Schwer lösbare Probleme können dadurch einfach erfasst werden.

Vieler der Sprachen dieser Generation gehören zu Datenbanksystemen.

Beispielsprachen:

  • SQL: Bei SQL handelt es sich um eine Abfragesprache für Datenbanken. Für weitere Informationen: Datenbanken
SELECT Kind.name, kind.wunsch, osterhase.ONr     
FROM kind, wunsch, osterhase
WHERE kind.knr = wunsch.knr 
 AND wunsch.onr= osterhase.onr

  • OOM: Die objektorientierte Programmierung basiert auf einer logischen Strukturierung nach Klassen und Objekten, die die Programmierung auf eine abstrakte Ebene bringt. Die OOM ist für verschiedene Programmiersprachen anwendbar, beispielsweise lässt sie sich gut bei Delphi verwenden. Siehe auch: Objektorientierte Modellierung
  • Lotus 1-2-3, Lotus Symphony: Die früher unter dem Namen "Lotus Symphony" erschienene Software für DOS ist ein Programmpaket, das neben einer Tabellenkalkulation (abgeleitet aus Lotus 1-2-3) auch Textverarbeitung, Datenübertragung und Datenbankfunktionen enthält. Es wurde von der Firma Lotus Development, heute IBM, entwickelt.
  • Excel
  • Natural: Natural ist die erste Programmiersprache dieser Generation. Mit ihr kann man anhand der Natural-Datenmanipulationssprache oder über Standard SQL auf eine einige Datenbankverwaltungssystemen zugegriffen werden.
WRITE 'Hello World!'
END
  • Oracle: Diese Sprache basiert ebenfalls auf Abfragen bezüglich Datenbanken. Es handelt sich hierbei um eine Entwicklung der Firma Oracle.

5. Generation

Die 5. Generation der Programmiersprachen gestattet das Beschreiben von Sachverhalten und Problemen. Ebenso wie bei der 4. Generation interessiert nicht der Weg, sondern das Ziel ist interessant. Sprachen dieser Generation kommen vor allem im Bereich der künstlichen Intelligenz zum Einsatz. Die bekannteste Sprache dabei ist Prolog.


Programmierparadigmen

Paradigma: [das, Plural Paradigmen; griechisch], Beispiel, Muster -> Denkmuster, übergeordnetes Prinzip.

=> Programmierparadigma: grundlegende Ansätze, wie man einen Computer durch Programmierung steuern kann.

Imperative/prozedurale Sprachen

Mit Hilfe einer imperativen bzw. prozeduralen Programmiersprache legt der Nutzer den Weg, den so genannten Algorithmus, fest, der ein bestimmtes Problem lösen soll. Der Lösungsweg besteht aus aufeinander folgende Befehle (Einzelschritte), die aus algorithmischen Grundstrukturen wie z.B. aus Schleifen, Bedingungen und Zuweisungen bestehen. Ein elementarar Schritt ist hierbei die Wertzuweisung, wobei Daten in Variablen gespeichert werden. Auf diese Weise werden in Variablen gespeicherte Werte miteinander verrechnet, verändert und führen zu Berechnungsergebnissen.

Zu den imperativen Programmiersprachen gehören: Pascal, Fortran, Basic, Delphi, C, C++, Java.

Deklarative/prädikative Sprachen

Deklarative bzw. prädikative Sprachen gehören zu den jüngeren Sprachgenerationen. Das Programm beschreibt nicht mehr länger, was getan werden soll, sondern nur noch welches Ergebnis am Ende stehen soll. Die Algorithmen sind in den Interpretern der Sprachen enthalten, beschäftigen jedoch nicht mehr den Programmierer.

Ein deklaratives Programmierparadigma ist die funktionale Programmierung. Diese beschreibt ein Programm als eine mathematische Funktion. In rein funktionalen Sprachen darf einem Ausdruck immer nur der gleiche Wert zugeordnet werden, es gibt keine veränderbaren Variablen. Funktionale Programmiersprachen sind Sprachen der vierten Generation.

Ein weiteres deklaratives Programmierparadigma ist die logische Programmierung, die auf dem Prinzip der mathematischen Logik beruht. Die Grundlage bilden daher so genannte Axiome, welche dem Programm als feststehende Fakten übergeben werden. Stellt man an ein logisches Programm eine Anfrage, wir die Antwort mit Hilfe der Axiome berechnet. Logische Programmiersprachen gehören zur fünften Generation.

Verweise

Übersicht zur Entwicklung der Programmiersprachen