Programmiersprache Pascal

Steuerung des Programmflusses

Es gibt drei Grundstrategien für die Steuerung des Programmflusses: In der Programmierpraxis werden die Strategien in der Regel miteinander gekoppelt, wobei aber eine Grundstrategie die dominierende ist.
Dominierend war bisher die prozedurale Programmierung. Ereignisgesteuerte Programmierung erlangt in Verbindung mit grafischen Benutzeroberflächen gegenwärtig einen wachsenden Stellenwert. Die deklarative Programmierung gewinnt - wenn auch langsamer - über KI-Systeme (Künstliche Intelligenz) an Bedeutung.

Ein Problem der deklarativen Programmierung besteht darin, daß es mitunter einfacher ist, ein Problem zu lösen als es (formal) zu beschreiben.

Deklarative Programmierung ist an bestimmte Programmiersprachen gebunden. Elemente der prozeduralen und ereignisgesteuerten Programmierung lassen sich zumindest partiell in allen Programmiersprachen realisieren.

Ein Programm, das ereignisgesteuert (event driven) arbeitet, besitzt etwa folgenden Aufbau:

  PROGRAM main.
  USES ...;                     { Nutzung von Komponenten aus ... }
  VAR event: TEvent             { Struktur, die Ereignis beschreibt }
  BEGIN
    Init;                                { Initialisierungen }
    REPEAT                               { Wiederhole }
      GetEvent(event);                     { Ereignis ermitteln }
      HandleEvent(event);                  { auf Ereignis reagieren }
    UNTIL quit(event);                   { bis Ende-Anforderung }
    Done;                                { Abschlußhandlungen }
  END.
Dagegen ist bei prozeduraler Programmierung die folgende Struktur charakteristisch:
  PROGRAM main.
  USES ...;                    { Nutzung von Komponenten aus ... }
  BEGIN
    aktion_1;                  { lineare Folge von Ablaufstrukturen }
    aktion_2;                  { Bemerkung: Eine Ablaufstruktur kann }
    ...                        {   Bedingungen und Zyklen enthalten }
    aktion_n;
  END.
Ereignisgesteuerte Programmierung dominiert heute bei der Entwicklung von Programmen mit grafischer Benutzeroberfläche, z.B. für MS-Windows unter DOS oder X Window mit OSF/Motif unter Unix. Der Benutzer kann über Tastatur und Maus, deren Betätigung jeweils ein Ereignis auslöst, weitgehend den Aufgabenlösungsprozeß beeinflussen.
Auch bei Beschränkung auf den alphanumerischen Bildschirm können mit Hilfe bestimmter Systeme ähnliche Effekte erreicht werden, z.B. mit dem auf Turbo Pascal basierenden Turbo Vision.

Ereignisgesteuerte Programmierung gewinnt erst seit einigen Jahren an Verbreitung. Sie wird häufig mit objektorientierten Vorgehensweisen verbunden. Im Vergleich zur prozeduralen Programmierung erwartet sie vom Entwickler eine andere Art der Modellierung.

Frameworks

Bei der "klassischen" prozeduralen und ereignisgesteuerten Programmierung wird ein Hauptprogramm geschrieben, welches den Programmfluß kontrolliert bzw. durch eine vom Programmierer geschriebene Prozedur kontrollieren läßt.
Gegenwärtig werden unter dem Stichwort "Frameworks" Alternativen zu dieser Strategie diskutiert und auch schon realisiert:
Es gibt einen vorgebenen Rahmen (frame), der in der Lage ist, den Programmfluß zu kontrollieren. Der Rahmen ist jedoch leer bzw. nur teilweise gefüllt, d.h. die Objekte, mit denen der Rahmen operieren kann, sind durch den Programmierer hinzuzufügen. Durch Konfiguration ist es in der Regel möglich, die Arbeitsweise des Rahmens anzupassen.

Die Konstruktion solcher Rahmen erfordert einen hohen Grad der Abstraktion. Sie erfolgt immer in Bezug auf eine bestimmte Klasse von Aufgabenstellungen, z.B. Realisierung einer grafischen Benutzerschnittstelle.
Rahmen werden typischerweise ereignisgesteuert arbeiten.

Eine solche Technologie hat Vor- und Nachteile:
Vorteile

Nachteile Probleme Der Einsatz von Rahmen loht deshalb oft erst ab einer bestimmten Problemgröße, wobei sich in der Tendenz diese kritische Größe nach unten schieben wird.



P. Böhme, 29.08.1995