Imperative Programmierung

Imperative Programmierung (lateinisch imperare ‚anordnen‘, ‚befehlen‘) ist ein Programmierparadigma, nach dem „ein Programm aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll“.

Die imperative Programmierung ist das am längsten bekannte Programmierparadigma. Diese Vorgehensweise war, bedingt durch den Sprachumfang früherer Programmiersprachen, ehemals die klassische Art des Programmierens. Sie liegt dem Entwurf von vielen Programmiersprachen, zum Beispiel ALGOL, Fortran, Pascal, Ada, PL/I, Cobol, C und allen Assemblersprachen zugrunde.

Abweichende Bezeichnungen: In der Literatur wird dieses Entwicklungskonzept zum Teil auch „imperativ/prozedural“, „algorithmisch“ oder auch „zustandsorientiert“ genannt. Auch die Bezeichnung „prozedurale Programmierung(siehe dort) wird zum Teil synonym verwendet, was jedoch abweichend auch mit „Verwendung von Prozeduren“ definiert wird.

Details

Bestimmende Merkmale für diese Art des Programmierens sind:

Das dem imperativen Paradigma zugrunde liegende abstrakte Ausführungsmodell ist eng angelehnt an die Ausführung von Maschinencode auf Computern, die nach der Von-Neumann-Architektur implementiert sind. Es existieren beispielsweise bedingte und unbedingte Sprunganweisungen. Der Status des Rechners bzw. des Programms ergibt sich aus dem Inhalt von Datenfeldern im Arbeitsspeicher und dem Zustand von Systemvariablen (z.B. Register, Befehlszähler …).

Abgrenzung

Als Gegenentwurf zur imperativen Programmierung gilt das Paradigma Deklarative Programmierung. Darin wird vom Entwickler im Quellcode definiert, WAS das Programm erarbeiten/berechnen soll, aber nicht WIE.

„Die meisten […] Programmiersprachen, darunter auch OOP-Sprachen wie C#, Visual Basic, C++ und Java, unterstützen in erster Linie [auch] die imperative […] Programmierung“. Das Prinzip der Datenkapselung (information hiding) wird in imperativen Sprachen oft dadurch umgesetzt, dass Prozeduren, die eine logische Einheit bilden, in Modulen oder Paketen zusammengefasst werden.

Nicht maßgeblich für die Einstufung als ‚imperativ‘ ist die Tatsache, dass bei der physischen Ausführung von Computerprogrammen (im Prozessor) die einzelnen Befehle des Maschinencodes „Befehl für Befehl“ ausgeführt werden; denn dies ist unabhängig vom praktizierten Paradigma immer so. Vielmehr setzt ‚imperativ‘ voraus, dass „ein Entwickler Code erstellt, der detailliert die Schritte beschreibt, die der Computer zur Erfüllung der Aufgabe ausführen muss“. Deklarativ erstellte Anweisungen etwa werden von übergeordneten oder eingebundenen Systemkomponenten – und nur ‚basierend‘ auf dem Quellcode – in ausführbare Maschinenbefehle umgeformt; Beispiel ‚SQL-Kommandos‘: Komponenten der Systemsoftware des DBMS interpretieren sie, erzeugen daraus Maschinencode und lassen diesen ausführen.

Beispiel

Ausgabe der Quadrate ungerader Zahlen von 3 bis 11.

Imperativ, Codeversion in C:

for (int i = 3; i < 12; i += 2) {
    printf("%d\n", i * i);
}

Deklarativ, Code in Haskell:

mapM_ print [ i^2 | i <- [3,5..11] ]

Geschichte

Die 1957 entwickelte Programmiersprache Fortran implementiert wie die zuvor verwendeten Assemblersprachen das imperative Paradigma. LISP, 1958 erschienen, ist ein Beispiel für eine deklarative Sprache, bei der der Computer selbst einen Handlungsablauf zur Berechnung konstruieren muss.

Literatur

Trenner
Basierend auf einem Artikel in: Wikipedia.de
Seitenende
Seite zurück
©  biancahoegel.de
Datum der letzten Änderung: Jena, den: 29.09. 2022