Imperative Programmierung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Imperative Programmierung ist ein Programmierparadigma. Danach werden Programme so entwickelt, dass „ein Programm (Anm.: der Quellcode) aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll “[1]. Die Bezeichnung geht auf lateinisch 'imperare' = 'anordnen, befehlen' zurück.

Die imperative Programmierung ist das am längsten bekannte Programmierparadigma. Diese Vorgehensweise war, bedingt durch den Sprachumfang früher 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.[1]

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

Details[Bearbeiten]

Bestimmende Merkmale für diese Art des Programmierens sind:[4][5]

  • Im Quellcode wird festgelegt, was in welcher Reihenfolge und wie zu tun ist: „First do this and next do that“[4]Schrittweises 'Fortschreiten' der Befehle; „viewed as sequence of things to be done“[5] (dargestellt als Folge von Anweisungen).
  • Zur Steuerung der Befehlsausführung verwendet der Entwickler Kontrollstrukturen (z. B. Sequenz, Schleife, Verzweigung).

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[Bearbeiten]

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“[2]. 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“[2]. Deklarativ erstellte Anweisungen etwa werden von übergeordneten/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[Bearbeiten]

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[Bearbeiten]

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[Bearbeiten]

  •  Terrence W. Pratt and Marvin V. Zelkowitz: Programming Languages: Design and Implementation. 4. Auflage. Prentice Hall, 2000, ISBN 978-0-130-276780.
  •  Robert W. Sebesta: Concepts of Programming Languages. 9. Auflage. Addison Wesley, 2009, ISBN 978-0-136-07347-5.

Einzelnachweise[Bearbeiten]

  1. a b Grundkurs IT-Berufe (Vieweg-Verlag) Böhm/Jungkunz [1]
  2. a b c Microsoft Library [2]
  3. Goos: Vorlesungen über Informatik [3]
  4. a b JAVA AND OBJECT-ORIENTED PROGRAMMING PARADIGM [4]
  5. a b Programming Paradigms and Methodology[5]