[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