zurück zur Liste

Imperative und deklarative Programmiersprachen

Imperative Programmiersprachen

In imperativen (befehlsorientierten) Programmiersprachen wie Java, C, Pascal, etc. wird der Zustand des Systems explizit verändert. Es gibt Variablen, die zur Laufzeit verändert werden können. Imperative Sprachen sind Hochsprachen, was fortgeschrittene Methoden und Konstrukte wie Objektorientierung oder Schleifen erlaubt, was den Code leichter verständlich macht. Allerdings wird der Code oft wesentlich länger im Vergleich zu funktionalen Programmiersprachen.

Deklarative Programmiersprachen

In deklarativen Programmiersprachen ist eine Änderung von Werten per Zuweisung nicht möglich, was auch bedeutet, dass z.B. Rückgabewerte von Funktionen im Normalfall nirgendwo gespeichert sondern nur ausgegeben werden. Der Code wird durch die Deklaration über Funktionen kurz gehalten, was ihn aber oft auch schwer verständlich macht. Funktionale Sprachen eignen sich gut zur Spezifikation, da mit ihnen Fehler leicht entdeckt werden können.

Klassifizierungen

Javaimperativ & objektorientiert
Pascalimperativ, prozedural
DMLimperativ, nicht-prozedural
Haskelldeklarativ, funktional
Prologdeklarativ, relational/logisch
C++hybrid aus imperativem C und objektorientierten Erweiterungen

Anmerkungen

Imperative Sprachen werden oft mit prozeduralen Sprachen gleichgesetzt, was jedoch nicht richtig ist. Während in imperativen Sprachen geschriebene Programme durch die Variablenmanipulation einen internen Zustand haben (wie ein Automat), ist prozedurales Programmieren auch ohne dies möglich. Ein Beispiel für eine prozedurale, nicht imperative Sprache ist die Lehrsprache LOGO. (In LOGO werden oft sog. Turtle-Grafiken erstellt: Es wird eine "Schildkröte" programmiert, die über eine Fläche läuft und dabei eine Linie zieht. Die "Schildkröte" selbst akzeptiert nur relative Befehle wie LINKS, RECHTS oder STOPP, hat aber keine Information über ihre Position o.ä. Die Programme haben keinen aktuellen Zustand sondern werden nur sequenziell abgearbeitet.)

Links

DSE: Deklarative Programmierung
FOLDOC: imperative languages
FOLDOC: declarative languages