Programmiersprache Pascal

Programmierparadigma

Es werden verschiedene Programmierparadigma (Programmierstile) unterschieden:

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

Der prozedurale Programmierstil erweitert die imperative Programmierung um Abstraktionsmechanismen zur Bildung von Prozeduren (Unterprogrammen), außerdem kommen Ausdrucksmittel für Iteration und Selektion hinzu.

                         +--------------+
    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.
Variablen repräsentieren nicht den Inhalt einer Speicherzelle, sondern sind an genau einen Wert gebunden - oder ungebunden.
Anstelle von funktionaler Programmierung wird mitunter auch von applikativer Programmierung gesprochen.

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: Dies schließt zwei gegensätzliche Pole ein: Eine zentrale Rolle spielen Fragestellungen der Synchronisation.

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.



P. Böhme, 07.09.1996