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
