[Squeak-ev] Das fängt ja gut an

stepken stepken at web.de
Die Nov 20 07:56:32 UTC 2007


Jürgen Beckmerhagen schrieb:
...

Vielleicht eine Ergänzung noch über "mentale Modelle" und Paradigmenwechsel:

Smalltalk ist als OO Sprache erstaunlicherweise immer noch sehr modern. 
Alan Kays OO - Idee, dahinter steckt ein mentales Modell, welches aus 
der Not geboren wurde. Das kann man z.B. bemerken, wenn man z.B. Flash 
2/3 programmiert (imperativ). Für jedes Objekt, welches sich in Flash 
bewegen soll, muss man eine eigene Schleife vorsehen, welche die x oder 
y - Koordinate verschiebt, damit sich das bewegt. Bei N Objekten muss 
ich N Schleifen ineinander schachteln. Der Code muss sich also für den 
Fall, dass sich die Zahl meiner Objekte verändert, dauernd mit 
verändern, bzw. mit weiteren Fallunterscheidungen zwischen mehreren 
Codes, die mit 2,3,4,5,6,7,.... gleichzeitig bewegten Objekten umgehen 
können, umschalten. Alan Kay führte daher ein neues, mentales Modell 
ein, indem er die Objekte miteinander kommunizieren lies und ein 
Steuerobjekt an die vielen anderen Objekte nur noch 
"Bewegungskommando's" absetzt, und jedes Objekt weiss dann selber, wie 
es sich bewegen kann/soll/muss und CPU Zeitscheiben zugeordnet bekommt. 
Shockwave z.B. folgt dann diesem Modell schon. Polymorphie, Vererbung 
und Kapselung sind dann nur noch logische Konsequenzen aus diesem 
Paradigmenwechsel.
Heutzutage liegen die Anforderungen noch einmal sehr viel höher. User 
fügt nach eigenem Belieben weitere Objekte einem zentralen Serversystem 
hinzu und dieses muss dann alles Aktionen des Users nochmals genau 
mitverfolgen und ggf. Wechselwirkungen zwischen verschiedenen 
User-Objekten beachten. Da hatte dann SUN die tolle Idee, Daten und Code 
in Container zu verpacken, welche auf der Suche nach freier CPU-Zeit und 
RAM durch das Netzwerk flitzen. Sie nannten es J2EE. Hat nur einen Haken 
gehabt, wie die FISCUS GmbH nach verbrannten 1 Mrd.€ auch feststellte: 
Für grosse Datenmengen eignet es sich nicht. Die GmbH mit Anspruch, ein 
Steuersystem für alle Bundesländer zu programmieren, wurde eingestampft. 
Problem war, dass die Informatiker die mentalen Modelle hinter den 
einzelnen Framework - Konzepten eigentlich nicht verstanden hatten. Mein 
Problem: Ihnen Ihren Unsinn vor Augen zu halten. Dafür wurde ich bezahlt.
Und nun kommt ein neues, mentales Modell. Organisationen sind 
Entscheidungssysteme, worin viele Entscheidungen weitestgehend 
automatisiert sind, also Wissensdatenbanken hinterlegt sind, aber 
tatsächlich noch manueller Eingriff erforderlich ist. Wenn User XY seine 
Dateneingabe/Bearbeitungsmaske offen hat, und einen Vorgang, Prozess 
nicht weiter entscheiden kann, so muss er nach dem Subsidiaritätsprinzip 
des Harzburger Modells seinen Kollegen oder Vorgesetzten, sich also die 
Hierarchie hoch fragen. Heutzutage muss er dann das Büro verlassen, 
seinen Vorgesetzten vor den Bildschirm holen, der dann Kraft seiner 
Erfahrung, vor dem Hintergrund seines Wissens dann, entscheidet. Leider 
können Teilprozesse immer noch nicht delegiert werden, sodass z.B. der 
Vorgesetzte eine Queue hat, worin Vorgänge liegen, die von seinen 
"Untergebenen" mangels Wissen nicht abgearbeitet/entschieden werden 
konnten, sodass er kurz die Maske herübergereicht bekommt, ein paar 
Felder weiter diese bearbeitet und wieder diesen Zustand (stateful) 
zurückreicht. Das wird bisher über Mail dann alles geregelt. Mensch 
kommt nicht weiter, schliesst die Maske, schickt seinem Vorgesetzten 
eine Mail, erklärt, wo wie was warum er nicht weiterkam, nennt 
Vorgangsnummer und das kostet rieeeesig viel Zeit. Warum? Weil 
Informatiker sich zu wenig mit mentalen Modellen auskennen, sich zu 
wenig mit Philosophie beschäftigt haben. Chief Architects haben zumeist 
nicht nur Informatik, sondern auch viele Sprachen (auch dahinter stecken 
mentale Modelle, insbesondere den fernöstlichen) und vor allem 
Philosophie studiert. Mit Informatik, OO - Wissen kommt man heutzutage 
nicht mehr weiter.
Neuer, alter Trend und damaliger Paradigmenwechsel: Funktionales 
Programmieren mit Haskell, Erlang: Alles Prozesse werden so zersplittet, 
dass sie sich weitestgehend unabhängig voneinander parallel ausführen 
lassen, wobei funktionales Programmieren eine Besonderheit hat: Die 
Reihenfolge der abgearbeiteten Teilaufgaben muss Kommuntativ sein, 
sodass alle Teilprozesse, egal wann sie fertig werden in der 
Queue/Tasks/Threads/Prozessen, zusammengefügt wieder dasselbe Ergebnis 
liefern. Da kommt funktionales Programmieren eigentlich dem Wunsch nach 
hochgradiger Skalierbarkeit, unabhängigen Prozessen und der Möglichkeit 
alles Prozesse in Teilprozesse in einem Entscheidungssystem aufzuteilen, 
und am Ende wieder zusammenzufügen, am allernächsten.
Daher sind diejenigen Programmiersprachen, welche "funktionales 
Programmieren" (Lambda - Kalkül) erlauben, und Multiprocessing erlauben, 
sehr in Mode. Ruby, Python ... können so etwas auch: 
http://www.freenetpages.co.uk/hp/alan.gauld/german/tutfctnl.htm
Und dann gibt es noch weitere "Techniken", wie z.B. Hibernation, womit 
aller lästige Code des hin - und her kopieren zwischen Datenbank und RAM 
Puffer entfallen kann. Leider nur wollen viele Emotionslogiker nicht von 
SQL ablassen, z.B. Caché von Intersystems oder Gemstone (auch der 
PostgreSQL Kern ist OO) verwenden, weil sie einfach ein wenig aus 
emotionalen Gründen am Gewohnten festhalten wollen. Ein wenig heisst 
hier ewig. Und dann muss man als Softwarearchitekt mal ein Machtwort 
sprechen, weil - ansonsten explodiert die Komplexität und Projekte 
kosten locker das 10-fache des Etats.
Und dann gibt es noch Programmiersprachen mit Datenbanken, die sind rein 
funktional, und mit denen kann man dann z.B. folgendes machen: Da 
strömen jede Sekunde 1000 Daten in die Datenbank, irgendwelche 
Transaktionen und die Programmiersprache ist in der Lage, quasi SQL - 
Queries auf Datenströme anzuwenden, wobei dann das System locker 100.000 
Queries/Sekunde packt, während weiter Daten einströmen und das noch 24/7 
mit Hotbackup nebenher!
Die Software ist sogar kostenlos, Freeware. Sie wird bei allen Börsen 
der Welt eingesetzt (Nein, nicht OCaml!)
"Prozessuales Denken" ist ein Denken in Verben ("Prozesstätigkeiten"), 
nicht mehr Objekten. Das ist das neue Paradigma, was Programmierer in 
den Kopf kriegen müssen, und was immer mehr gefordert ist.
ETOYS kommt dem von der Idee schon recht nahe, es ist ein "Prozessuales 
Programmieren", wo man die OO-Hintergründe nur noch erahnen kann. Das 
ist es, was Alan Kay mit seinem Ausspruch, dass die Software-Revolution 
noch nicht begonnen hat, gemeint hat!

Mit freundlichen Grüssen, Guido Stepken