Spezifizieren und abstrahieren sind fachliche Tätigkeiten, die im Berufsalltag eines Informatikers nicht wegzudenken sind. Es ist fast vergleichbar mit dem Blutdruck- und Fiebermessen des Arztes. Spezifizieren heißt laut Fremdwörter-Duden ‚einzeln aufzählen‘ oder ‚zergliedern‘. Abstrahieren heißt nach derselben Quelle ‚gedanklich verallgemeinern‘ oder ‚auf etwas verzichten‘.
Hans Diel, einer meiner Freunde, der sich viel mit physikalischen Fragen beschäftigt, fragte dieser Tage, ob ich ihm aus der Sicht der Informatik Tipps geben könnte, wie man Prozesse am besten beschreibt. Am liebsten hätte ich gekniffen, aber ich traute mich nicht. Ich fühlte mich professionell herausgefordert. Hier ist die Essenz eines etwa halbstündigen Telefonats.
Ich begann mit der Allerweltsantwort, die eigentlich eine Gegenfrage ist: Es kommt darauf an, was man beschreiben will und was man weiß. Obwohl mein Gesprächspartner alles andere als ein Laie ist, versuchte ich die Materie auf einige grundsätzliche Dinge zu reduzieren. Deshalb argumentierte ich ungefähr so, wie ich es auch einem Laien gegenüber täte.
Will man beschreiben, wie etwas passiert, dann beschreibt man die einzelnen Schritte der Reihe nach. Da nicht immer alles in gleicher Weise abläuft, gibt es Fallunterscheidungen. Für Dinge, die sich wiederholen, benutzt man Schleifen. Mehr braucht man nicht. Mag man Schleifen nicht, kann man das Ganze auch rekursiv beschreiben. Das ist aber schon fast eine Spielerei für Mathematik-Freaks. Für das Ganze benutzt man am besten eine Notation, die einer Programmiersprache ähnelt. Will man vermeiden, dass Leute einen gleich auf eine bestimmte Syntax festnageln, nennt man das Ganze Pseudocode. Wichtig ist, dass man hierarchisch vorgeht. Man sollte immer versuchen, zuerst den ganzen Prozess auf einer DIN-A4-Seite zu beschreiben. Für einzelne Unterprozesse benutzt man andere Blätter. Große wandfüllende Tapeten sind nicht mehr beliebt. Sie beweisen nur, dass die Beschreibung noch nicht gut strukturiert ist.
Dieses Verfahren kann man benutzen, um Abläufe jeder Art zu beschreiben, egal ob es um den Tagesablauf oder den Lebensablauf eines Menschen geht, oder den Start und die Landung eines Flugkörpers, sei es eine Rakete, Drohne oder Flugzeug. Auch für Herzoperationen und die Hochofensteuerung geht das, selbst für den Atomzerfall oder das Doppelspalt-Experiment. Wir nennen dies auch Algorithmen.
Beim Spezifizieren müssen Informatiker noch dazu sagen, ob sie von Prozessen oder Systemen reden, die sie erst planen oder ob sie ein fertiges System meinen. Im ersten Fall ist es eine Soll-Spezifikation, im andern Fall eine Ist-Spezifikation. Programme werden oft als mathematische Funktionen betrachtet, d.h. als Abbildungen zweier Mengen aufeinander oder als Relation zweier Mengen, wobei die Eingabewerte eindeutig sein müssen (linkseindeutig). Das passt aber nicht immer. Endlos sind schließlich die Diskussionen darüber, welche Datentypen und logische Operatoren man braucht, um eine gute Spezifikationssprache zu haben. Wie ein Konditormeister den andern überbietet, so gibt es in der Informatik einen nicht enden wollenden Wettbewerb um den besten ‚syntaktischen Zucker‘.
Jetzt waren wir da, wo Hans Diel hin wollte. In der Quantenphysik – so erläuterte er – kennt man nur ausgewählte Zustände, für die es statistische Aussagen bezüglich ihrer Häufigkeit, ihres Energieverbrauchs usw. gibt. Man kann nicht sagen, dass Zustand B zwingend aus Zustand A folgt. Man kann bestenfalls Formeln angeben, die eine Relation zwischen bestimmten Anfangs- und bestimmten Endwerten festlegt.
Ich erklärte, dass dies die Informatik auch kennt. Man nennt dies nicht-determiistische Prozesse. Hier hilft – so weit ich weiß – eine axiomatische Spezifikation. Das ist eine Form von Abstraktion. Da werden nur die Beziehungen oder Relationen angegeben, die zwischen Ein- und Ausgabewerten existieren, egal wie man dahinkommt. Als Soll-Spezifikation, also Vorgabe, ist dies oft ausreichend, und zwar immer dann, wenn die Laufzeit oder der Energieverbrauch keine Rolle spielen. Die ganzen Details, wie etwas tatsächlich geschieht, werden ausgeblendet. Man sieht den Prozess, so zu sagen, durch eine Verkleinerungsbrille.
Um die Tatsache zu beleuchten, dass es sich bei der axiomatischen Beschreibung um eine Abstraktion handelt, erwähnte ich noch als Beispiel den Prozess meines Lebens. Wählt man je ein Wertepaar aus der Vielzahl der den Prozess charakterisierenden Größen, so ergibt das eine sehr abstrakte Prozessbeschreibung, und zwar bezogen auf verschiedene Abschnitte des Prozesses.
Wer behauptet, dass mit diesen Vor- und Nachbedingungen ein menschliches Leben auch nicht annähernd beschrieben ist, befindet sich in guter Gesellschaft. Er darf allerdings nicht vergessen, dass bei der axiomatischen Methode die Gefahr groß ist, so zu tun, als wäre dies der Fall.
Eingeführt wurde die axiomatische Methode in der Informatik von dem Engländer Tony Hoare. In seiner Veröffentlichung eines Beispiels, eines Sortierprogramms, wird er ein Opfer dieser Selbsttäuschung. Statt einer vollständigen Spezifikation des gewünschten Prozesses gab er eine schwächere Spezifikation an, nicht das exakte Ergebnis, sondern nur eine Eigenschaft. Die exakte Angabe wäre etwas schwieriger formal darzustellen. Das Ergebnis des Sortierens – so sagte er – ist eine Folge von Zahlen, bei denen xn kleiner oder gleich xn+1 ist. Das ist auch eine Folge von lauter Nullen oder Einsen. Hoare hatte vergessen (oder vermieden) zu sagen, dass die Ausgabe des Programms eine Permutation der Eingabe sein muss. Einem Praktiker stößt dabei die Erinnerung an viele Programme auf, die denen diese Art von Programmfehlern – konstante statt variable Ausgabewerte – vorkommt, besonders bei Anfängern. Dieses Hoaresche Beispiel wurde inzwischen in Lehrbüchern, Vorlesungen und Vorträgen bestimmt hunderte Mal zitiert, ohne auf den Fehler hinzuweisen.
Nachbemerkung: Zu Hoares Ehrenrettung möchte ich ergänzen, dass er sich dieser Einschränkung vollends bewusst war. Quelle. CACM 13,12 (1970)
Natürlich lassen sich mit der axiomatischen Methode aber auch Aussagen formulieren, die sonst sehr schwer in den Griff zu bekommen sind. Insofern ergänzen sich die Ansätze. Vor allem aber kann diese Methode verwandt werden, wenn zwar die Ergebnisse eines Prozesses bekannt sind, nicht aber die Einzelschritte, die dahinführen, also der Algorithmus.
Natürlich lassen sich mit der axiomatischen Methode aber auch Aussagen formulieren, die sonst sehr schwer in den Griff zu bekommen sind. Insofern ergänzen sich die Ansätze. Vor allem aber kann diese Methode verwandt werden, wenn zwar die Ergebnisse eines Prozesses bekannt sind, nicht aber die Einzelschritte, die dahinführen, also der Algorithmus.
Soweit meine Telefonauskunft. An dieser Stelle lasse ich meinen Freund zu Wort kommen mit dem Beispiel aus der Quantenphysik.
Am 28.2.2012 schrieb Hans Diel aus Sindelfingen:
Um es zunächst allgemein und abstrakt zu formulieren: Ich behaupte, dass die axiomatische Beschreibung, die in der Physik allgemein beliebt und üblich ist, bei der Quantenphysik kaschiert, dass man weniger spezifiziert, (weil man weniger weiß) als man eigentlich spezifizieren sollte. Man könnte auch behaupten, dass die Quantenphysik unvollständig ist. Einstein hätte einer solchen Feststellung begeistert zugestimmt. Allerdings sah Einstein die Unvollständigkeit der Quantenphysik an anderer Stelle als ich das hier tue. Außerdem mag ich die Behauptung der Unvollständigkeit der Quantenphysik nicht. Je nachdem welche Maßstäbe man anlegt, kann man vermutlich jede Theorie als unvollständig bezeichnen.
Mein (milder) Vorwurf an die Quantenphysik ist auch nicht, dass hier etwas fehlt zur Vollständigkeit, sondern, dass man dieses, in einer übertrieben positivistischen Haltung, als gottgegeben (oder naturgegeben) ansieht.
Ich behaupte im Weiteren, dass dieses Kaschieren der "Unvollständigkeit" nur durch die Fokussierung auf die axiomatische Beschreibungsmethode möglich wurde. Sobald man den Versuch macht das Thema prozessbasiert (=prozedural) zu beschreiben wird schnell klar, dass es in der Quantenphysik einige ungelöste Probleme gibt.
Jetzt konkreter: Die Quantenphysik ist, wie jedermann weiß, nicht-deterministisch. Die zukünftige Entwicklung wird nur mit gewissen Wahrscheinlichkeiten vorhergesagt. Dieses Unvermögen genauere (=deterministische) Vorhersagen zu machen ist jedoch nicht die von mir beklagte Unvollständigkeit. Dies haben andere (anscheinend) zu Unrecht moniert.
Mein (milder) Vorwurf an die Quantenphysik ist auch nicht, dass hier etwas fehlt zur Vollständigkeit, sondern, dass man dieses, in einer übertrieben positivistischen Haltung, als gottgegeben (oder naturgegeben) ansieht.
Ich behaupte im Weiteren, dass dieses Kaschieren der "Unvollständigkeit" nur durch die Fokussierung auf die axiomatische Beschreibungsmethode möglich wurde. Sobald man den Versuch macht das Thema prozessbasiert (=prozedural) zu beschreiben wird schnell klar, dass es in der Quantenphysik einige ungelöste Probleme gibt.
Jetzt konkreter: Die Quantenphysik ist, wie jedermann weiß, nicht-deterministisch. Die zukünftige Entwicklung wird nur mit gewissen Wahrscheinlichkeiten vorhergesagt. Dieses Unvermögen genauere (=deterministische) Vorhersagen zu machen ist jedoch nicht die von mir beklagte Unvollständigkeit. Dies haben andere (anscheinend) zu Unrecht moniert.
Mir geht es um Folgendes: Auch die nicht-deterministischen Vorhersagen folgen gewissen Gesetzmäßigkeiten. Um es bildlich auszudrücken, bei einer Messung wird gewürfelt. Der dazu benutzte Würfel macht jedoch vor der Messung eine gewisse Entwicklung mit. Je nachdem wie die Anordnung des Experimentes ist, hat mein Würfel am Schluss 4, 6, oder n Seiten mit unterschiedlicher Schlagseite. Die Quantenphysik hat eine sehr mächtige Theorie mit vielen Formeln (= Axiomen), um die Eigenschaften des Würfels zum Zeitpunkt der Messung vorherzusagen. Sie sagt aber wenig über die Entwicklung des Würfel vom Zeitpunkt t0 bis zum Zeitpunkt t1 (mit oder ohne Messung) aus.
Der von mir beschriebene Würfel heißt in der Quantenphysik "Wellenfunktion". Schrödinger hat eine schöne Differentialgleichung zur zeitlichen Entwicklung der Wellenfunktion gefunden. Diese ist jedoch nicht geeignet, um Interaktionen zwischen Teilchen zu beschreiben. Diese Lücke haben Feynman und andere mit der Quantenfeldtheorie geschlossen. Die Quantenfeldtheorie ist jedoch axiomatisch. Sie lässt keine Abfolge von Entwicklungsschritten erkennen. Weder die ursprüngliche Schrödinger-Gleichung, noch die Quantenfeldtheorie, geben einen Hinweis darauf was bei der Messung geschieht.
All die von mir hier beschriebenen Probleme sind natürlich den Physikern längst bekannt. Sie werden von den verschiedenen Physikern in unterschiedlichem Grad als Probleme eingeordnet. Meine Einordnung ist subjektive. Nicht subjektiv, sondern objektiv, ist jedoch (behaupte ich) meine Feststellung, dass der Versuch ein Prozess-Model der Quantenfeldtheorie zu erstellen die besprochenen Mängel deutlicher erkennen lässt.
Zurück zur allgemeinen Betrachtung von Beschreibungsmethoden: Die axiomatische Beschreibung tendiert dazu, eher weniger Detail zu spezifizieren (sie ist abstrakter). Der Mangel an Detail kann aus unterschiedlichen Gründen beabsichtigt sein . Er kann auch zwangsläufig sein, weil man einfach nicht mehr weiß. Ich meine jedoch, in der Physik sollte es nicht dazu führen, dass man die Unkenntnis gar nicht erkennt, bzw. nicht wahrhaben will.
Wie geht es weiter? Das frage ich die Leser. Vielleicht sind unter den Lesern auch bessere Experten als ich, was Spezifikationsmethoden oder mathematische und logische Beschreibungsverfahren betrifft. Vielleicht kann uns auch ein Physiker im Verständnis der Quantenphysik weiterhelfen.