Kapselung Ergänzende Kapitel Hypertext-Version Programmiersprachen © APSIS GmbH

1.1.5. Programmierparadigma

In der Entwicklung der Programmiertechnologie ist die Zweiteilung zwischen Daten und Algorithmen geblieben: In den meisten Programmiersprachen wie Algol-60, PL/1, Pascal oder C ist die Trennung zwischen den aktiven und passiven Elementen eines Programms, zwischen Algorithmen und Daten, stark vorhanden. Erst in der letzten Zeit setzt sich die Erkenntnis mehr und mehr durch, daß diese Aufteilung künstlich, nur von der Technologie bestimmt ist, nicht aber zum Wesen der Programmierung gehört.

Algorithmen und Daten werden also zunehmend zusammengeführt. Man spricht von "intelligenten Daten", die selber "wissen", wie sie manipuliert werden dürfen; der Zugriff auf sie ist nicht möglich, ohne dieses "Wissen" zu benutzen. Der Begriff abstrakter Datentyp entstand schon sehr früh; dieser führte zum Begriff der Klasse, dem zentralen Konzept des heutzutage so gut klingenden Begriffs vom objektorientierten Programmieren. Seine Abkürzung OOP ist das Schlagwort der neunziger Jahre. Unter diesem Titel wird oft einiges verkauft, was höchstens durch das Erscheinungsbild etwas mit OOP zu tun hat. Aber auch viele gutgemeinte OO-Programme sind weit davon entfernt, die Grundkonzeption des objektorientierten Programmierens durchgängig und konsequent zu verwirklichen.

Die Ursache hierfür ist psychologischer Art. Die meisten Programmierer, die heute in Java objektorientierte Software schreiben wollen, haben vor 10 Jahren in Basic oder Pascal das Programmieren gelernt. Ihre Denkweise (ihr Paradigma) ist prozedural. Sie haben vielleicht die Möglichkeiten, die in der OOP stecken, erkannt, werden aber von ihrer Prägung doch nicht frei. Diese Ansicht wird durch folgendes Logikrätsel belegt.

1. Aufgabe: Ein Bauer, der ein L-förmiges Feld besitzt, verstirbt. In seinem Testament hinterläßt er, daß es unter seinen vier Söhnen aufgeteilt werden soll, und zwar gleichförmig: Jeder Sohn soll eine Fläche gleicher Größe und gleicher Gestalt (ähnlich dem Originalfeld) erhalten. Die Aufgabe ist, das folgende Feld auf diese Weise in 4 gleichförmige Stücke aufzuteilen:

STOP! Nicht weiterlesen. Es wird dringend empfohlen, die 1. Aufgabe vollständig zu lösen, bevor die nächste in Angriff genommen wird.

2. Aufgabe: Später stirbt der Nachbar des obigen Bauern. Er hat fünf Söhne und ein quadratisches Feld. Er hinterläßt genauso ein Testament. Wie wird sein Feld aufgeteilt?

Die meisten Leser werden über die 2. Aufgabe deutlich länger nachdenken müssen, bis sie die relativ einfache Lösung finden, als wenn sie an der 1. Aufgabe nicht gearbeitet hätten: Die komplexen Konzepte hindern sie, einfache zu entwickeln.

Die Lehre, die aus der Arbeit an diesen beiden Übungen gezogen werden kann, ist folgende: Die Prägung durch die in der Vergangenheit gelösten Probleme bestimmt die Denkweise (das Paradigma) des Menschen. Sie ist ein Hemmnis, andersartig zu denken und dadurch Problemlösungen auf anderen Wegen zu suchen, sich ein neues Paradigma anzueignen. Nur durch einen bewußten Verzicht auf das Gekonnte wird der Weg zu neuartigen Lösungen freigemacht. Ein Paradigmawechsel ist in der Geschichte der Informatik bereits mehrfach angegangen worden. Obwohl es offensichtlich ist, daß unsere traditionelle Denkweise schon veraltet ist, wird heute immer noch überwiegend damit gearbeitet.

Die Absicht in diesem Lehrbuch für Java ist, die Technologie des Programmierens auf eine neue Basis der Wiederverwendbarkeit zu legen. Konventionelle Programmierkurse stützen sich alle auf eine bestimmte Sprache und fangen mit den einfachsten Sprachelementen (Ganzzahlen, Verzweigungen, usw.) den Unterricht an. Die Programmierkenntnisse werden "von unten" aufgebaut. Als Ergebnis entsteht ein sprachbasiertes Programmierparadigma: Man nimmt die primitiven Elemente der Sprache und konstruiert daraus Schicht für Schicht sein Programm. Die Folge davon ist, daß ein Durchschnittsprogrammierer jährlich mehrere Hundert Schleifen schreibt und sich jedesmal Gedanken über ihre Korrektheit machen muß. Es gibt aber nur ca. 5-6 verschiedene Schleifenarten, alle anderen sind im Wesentlichen gleichartig. Sehr ähnliche bis gleiche Algorithmen werden immer wieder programmiert und jede Neuprogrammierung bedeutet neben Unwirtschaftlichkeit auch weitere Fehlerquellen. Auch wenn der Begriff Wiederverwendbarkeit mehr und mehr ins Gespräch kommt, werden die Bemühungen durch die Prägung überschattet, die aus der konventionellen pädagogischen Idee des Programmierunterrichts stammt.

Im vorliegenden Lehrbuch wird ein entgegengesetztes Konzept vorgestellt: die Programmierung "von oben". Statt mit sprachspezifischen Elementen anzufangen, werden dem Programmierlehrling Bausteine zur Verfügung gestellt, aus denen er seine ersten Erfolgserlebnisse zusammenbasteln kann. Der Vorteil dieser Vorgehensweise der Wiederverwendbarkeit beim Programmieren ist langfristig offensichtlich: Das Rad muß nicht immer wieder erfunden werden. Die Hemmschwelle dazu besteht darin, daß neu zu programmieren einem oft einfacher erscheint als nach Vorhandenem zu suchen. Es wird dabei der Aufwand für die Fehlersuche in den neuen Programmen übersehen. Die zweite Schwierigkeit ist der Zusatzaufwand beim Archivieren, beim Dokumentieren der erstellten Bausteine für die Zukunft auf eine Art und Weise, daß sie leicht zu finden und zu verstehen sind.


Kapselung Ergänzende Kapitel Hypertext-Version Programmiersprachen © APSIS GmbH