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
Java
imperativ & objektorientiert
Pascal
imperativ, prozedural
DML
imperativ, nicht-prozedural
Haskell
deklarativ, funktional
Prolog
deklarativ, 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.)