Der einfache imperative Programmierstil beruht auf Befehlen wie
Wertzuweisungen und Verzweigungen.
Es können arithmetische und logische Ausdrücke ausgewertet werden. Imperative
Programmiersprachen zeichnen sich durch eine enge Anlehnung an die sogenannte
von Neumann-Rechnerarchitektur aus, die auf der Idee eines Speichers mit Daten
und Instruktionen, einer Steuer- und einer Verarbeitungseinheit basiert. Die
Anlehnung beruht vor allem in
+--------------+
Daten ------------> | Prozedur | ------------> Daten
+--------------+
Der Grundgedanke des funktionalen Programmierstils besteht darin, einfache
Funktionen zu komplexeren zusammenzubauen. Standardmäßig eingesetzt
wird das mächtige Mittel der Rekursion. Die funktionale Programmierung
beruht auf einem mathematischen Gebäude, dem Lambda-Kalkül.Der logische Programmierstil basiert auf der folgenden Idee: Der Programmierer deklariert einfach nur die Fakten und Eigenschaften des Problems, für das eine Lösung gesucht wird. Diese Information wird von der Inferenzkomponente des System dazu benutzt, um eine Lösung zu finden.
In der logischen Programmierung erfolgt die Problembeschreibung in einem
logischen Formalismus, wie z.B. dem Prädikatenkalkül. Notiert werden
Fakten und Regeln.
Das Variablenkonzept ist in der logischen Programmierung ähnlich dem der
funktionalen Programmierung.
Der objektorientierte Programmierstil beruht auf der Vorstellung, daß die
Welt aus einer Menge von Objekten besteht, die miteinander über
Nachrichten kommunizieren.
Ein Objekt wird beschrieben durch Daten, die seine Eigenschaften (Attribute)
charakterisieren und durch Methoden, die den Zugriff auf die Daten regeln. Das
Methodenspektrum eines Objekts bestimmt, wie auf Nachrichten, die das Objekt
erhält, reagiert wird. Ein Zugriff auf die Objektdaten ist
ausschließlich über die Objektmethoden möglich.
Objekte sind Elemente einer hierarchisch orientierten Welt und vererben
einander - über die Hierarchieebenen - Attribute und Methoden.
Der objektorientierte Stil ist verbunden mit Konzepten wie Modularisierung,
Geheimnisprinzip, abstrakter Datentyp.
+--------------+
Nachricht --------> | Objekt | --------> Daten
+--------------+
Parallelisierung spielt in der Programmierung unter verschiedenen
Gesichtspunkten eine Rolle:
Keine der existierenden Programmiersprachen folgt in reiner Form einem einzigen Programmierparadigma. In zunehmenden Maße wird die Integration verschiedener Paradigma in einer Sprache versucht, wobei in der Regel eines der Paradigmen dominierend ist.
Die meisten Programmiersprachen sind prozedural und damit auch imperativ:
FORTRAN, COBOL, ALGOL-60, PL1, PASCAL, MODULA-2, ADA, BASIC, C, SIMULA,
usw.
Klassische Beispiele für die funktionale Programmierung sind LISP und
für die logische Programmierung PROLOG. Elemente eines imperativen
Programmierstils sind in einem gewissen Maße auch in diesen Sprachen
enthalten.
Für eine Reihe der genannten Sprachen (PASCAL, C, MODULA-2, LISP, PROLOG,
COBOL) gibt es inzwischen objektorientierte Erweiterungen, die jedoch oft
nicht standardisiert sind. Allerdings laufen Standardisierungsarbeiten in
dieser Richtung, am weitesten sind hier Ada, COBOL und C++.
Die Erweiterungen realisieren jedoch keine konsequente Umsetzung der Ideen
der objektorientierten Arbeit.
Beispiel für eine konsequent objektorientierte Sprache ist SMALLTALK. Als
objektorientierte Programmiersprache gilt ferner EIFFEL.
Die Simulation paralleler Systeme wird beispielsweise durch SIMULA, MODULA und Ada, aber auch durch Pascal++ explizit unterstützt. Die Darstellung parall(elisiert)er Algorithmen erfolgt über Spracherweiterungen (z.B. FORTRAN) oder durch spezielle Sprachen wie OCCAM.