„Separation of Concerns“ – ein Lebensprinzip aus der Informatik

1) Informatik, ein stürmisches Fach, und die Forscherpersönlichkeit Edsger W. Dijkstra (1930 – 2002)

Einen Sturm merkt man am intensivsten, wenn man ihn selbst miterlebt hat. So war das bei mir. Bloße Neugier stand 1957 am Anfang. Es ging um die Maschinenprogrammierung der IBM 650, das Modernste, was damals u.a. an der TH Darmstadt verfügbar war. Es kamen aber dann sehr schnell problemorientierte Programmiersprachen auf, z.B. FORTRAN und ALGOL 60. Der Sturm wird auch  wegen des exponentiellen Wachstums Moore‘scher Sturm genannt.

In dem Sturm sticht auch heute noch eine Forscherpersönlichkeit hervor, die wie ein Fels in der Brandung aussieht. Es war der Niederländer Edsger W. Dijkstra (1930  – 2002), dem das Fach unglaublich viel zu verdanken hat.

In seinem Essay „ On the role of scientific thought” von 1974 (EWD 447) erläutert  Dijkstra seine Fundamentalsicht auf das Problemlösen allgemein, nicht nur im Hinblick auf das Programmieren.“ Separation of Concerns“, am besten übersetzt mit „Trennung von Anliegen“, war sein Schlüsselbegriff.  Ein Anliegen ist ein Interesse, einen Sachverhalt herzustellen. Bezüglich eines Gegenstandes gibt es häufig viele Anliegen oder Interessen. Korrektheit von Programmen, Sicherheit, Effizienz und leichtes Bedienen (ease of use) lassen sich nicht gleichzeitig auf einmal bewirken und müssen getrennt werden. „Separation of Concerns“ behindert nicht ein ganzheitliches Denken, im Gegenteil, dieses Denken wird gefördert. Einen anderen Fokus haben, heißt ja nicht, etwas anderes Wichtige zum Verschwinden zu bringen. „ On our inability to do much“  sagt uns Dijkstra und fordert zur Bescheidenheit auf.

Schauen wir z.B. aktuell nur auf die gerade ablaufenden Olympischen Spiele 2022 in Peking. Es soll im Sinne der olympischen Idee Hochleistungssport demonstriert werden. Amnesty International will anlässlich der Spiele in Peking die Menschenrechte einfordern. Wenn wir beide Aspekte zusammenpacken und so die Olympischen Spiele vergeben, dann platzen die Spiele, weil wir nicht separieren. Es werden dann westeuropäische und nordamerikanische Spiele. Die fünf Ringe für die fünf Kontinente verschwinden dann.

Für die Menschenrechte sind die Vereinten Nationen zuständig. Hier ist der codifizierte Ursprung der Menschenrechte zu finden. Die Erklärung der Menschenrechte (declaration of human rights) haben alle Mitglieder der Vereinten Nationen unterschrieben, die sich, wenn es zur Sache geht, gegenseitig blockieren. Das ist Politik; und internationale Riesenereignisse wie die Olympischen Spiele können nicht unpolitisch gesehen werden. Die Menschenrechte und damit auch eine Rechtsstaatlichkeit einfordern und zur Bedingung machen, können nur die Vereinten Nationen, nicht Amnesty International, auch im Sinne eines „Separation of Concerns“. In der Blockierung durch die Vereinten Nationen liegt die Berechtigung der Vorgehensweise von Amnesty International.

Auch die programmierende Informatik ginge kaputt, wenn die Anliegen „Korrektheit der Programme“, Ihre „Sicherheit“ und „Effizienz“ gleichzeitig behandelt würden, wie man das in den stürmischen Zeiten ganz früher tat und in die Softwarekrise führte.

Mahnend steht Dijkstras Menetekel an der Wand: “On our inability to do much“. Dijkstra war nicht nur systematisch tätig, ebenso wertvoll sind seine Reflexionen, die als Philosophie des Problemlösens aufgefasst werden können.

 

Hier ein Auszug aus seinem Essay „On the role of scientific thought“ (EWD 447)

“Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one’s subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only; we also know that it should be efficient and we can study its efficiency on another day, so to speak. In another mood we may ask ourselves whether, and if so: why, the program is desirable. But nothing is gained—on the contrary!—by tackling these various aspects simultaneously. It is what I sometimes have called „the separation of concerns„, which, even if not perfectly possible, is yet the only available technique for effective ordering of one’s thoughts, that I know of. This is what I mean by „focusing one’s attention upon some aspect“: it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect’s point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously”

Und in seiner berühmten Schrift von 1970 “ Notes on Structured Programming“ (EWD 249) gibt es einen Abschnitt mit der Überschrift „On our inability to do much“ oder „über unsere Unfähigkeit, viel zu tun“. Der Satz ist zu einem geflügelten Wort geworden, und mahnt zur Bescheidenheit. Wie Dijkstra überhaupt immer die Bescheidenheit groß herausgestellt hat, auch in seinem Beitrag „The humble Programmer“ (EWD 340) (Der bescheidene Programmierer). Als die Redner einer Tagung vor vielen Jahren einmal mit allen Titeln und Ehrenzechen vorgestellt wurde, wehrte er ab und stellte sich selbst mit seinem Namen vor mit dem Zusatz „Ich bin Programmierer“.

Die Lehre vom Menschen bei Dijkstras wird in der Regel ignoriert. Er ist halt nur eine „fat cat“, wie man sagt, in der Informatik, keine „fat cat“ in Politik und Philosophie. Im digitalen Zeitalter kann und sollte sich das ändern. Man sollte nicht nur über Algorithmen und Künstliche Intelligenz fabulieren, sondern auch darüber nachdenken, wie so etwas zustande kommt. Von Edsger W. Dijkstra gibt es über 1300 Manuskripte, signiert durchweg mit EWD xxxx.

 

2) Separation of Concerns – ein Prinzip unserer Lebenswelt

Beispiele: Soziale Marktwirtschaft und andere mehr.

Soziale Marktwirtschaft heißt doch: „Social activities are of separate concerns“. Damit das Soziale nicht in einer leistungsorientierten Markwirtschaft plattgedrückt wir, muss es als ein besonderer Aspekt hervorgehoben werden.  Unsere Geschichte zeigt, dass mit einer christlichen Almosenlehre ein Staat nicht zu managen ist und in einen revolutionären Abgrund stürzt. Ludwig Erhards (1897 – 1977) Komplexbegriff „ Wohlstand für alle“ ist fast unendlich schwierig umzusetzen, weil die Menschen zu verschieden sind. Man kann es aber als Aspekt, als „concern“ mal versuchen, im Sinne Goethes “  Wer immer strebend sich bemüht, den können wir erlösen“ (Faust II). Es ist interessant und nicht unproblematisch, wenn der Erlösunsgedanke wie bei Goethe in ein Aspektieren einbezogen wird. Die ganze christliche Lehre fußt darauf, auch absichtsvolles Streben als lebensbedeutsam zu klassifizieren. Der Erfolg ist natürlich vage, weil Absichten sofort gedreht werden können, wenn sie nicht z.B. durch Verträge oder Gesetze manifest gemacht werden.

Ein anderes Beispiel ist die Antagonie zwischen Gerechtigkeit und Barmherzigkeit, die schon im Blog behandelt wurde. Wir erinnern an Thomas von Aquin mit seinem bekannten Wahrspruch: „Gerechtigkeit ohne Barmherzigkeit ist Grausamkeit, Barmherzigkeit ohne Gerechtigkeit ist die Mutter der Auflösung“. Gerechtigkeit schaut auf die Gleichheit in der Sache, Barmherzigkeit schaut auf die Person. Das sind zwei verschiedenen „Concerns“, die beide beim Herumlaufen zu sehen sind. Gleiches gilt für den atomaren Abfall und die Verspargelung der Landschaft. Darauf haben wir bereits im vorherigen Blog hingewiesen.

Das „Separation of Concerns “, das Dijkstra vorschlägt, wird von nachdenkenden Menschen immer schon beherzigt.  Der Wert der Dijkstraschen Sichtweise liegt aber darin, dass er „Separation of Concerens“ methodisch in eine Problemlösungsstrategie einbettet. Das war neu 1974, als sein Aufsatz in der Informatik erschien. Wie anders sonst kann man seine Gedanken ordnen, das bleibt als rhetorische Frage?