[linux-l] Ocml vs. Java

Volker Grabsch vog at notjusthosting.com
Fr Sep 23 19:47:01 CEST 2005


On Fri, Sep 23, 2005 at 08:14:08AM +0200, Oliver Bandel wrote:
> [...]
> > Übrigens dasselbe mit dem Fliegengewicht, dem Proxy oder dem Strategie-
> > Muster, obwohl diese ja sehr einfach sind, und im Prinzip die
> > OO-Features direkt nutzen. Da wird also nicht wild gerudert, und
> > entsprechend ist da auch nix durch Sprachfeatures groß zu vereinfachen.
> 
> Flyweight heisst so, weil man eigentlioch nicht viel dran hat.
> Wer für jeden Char ein eigenes Objekt kreiert (Beispiel in besgtem Buche),
> muß eh ein Rad ab haben.

So schlimm ist das nicht. Dieser Schritt führt zu einem enormen Gewinn
an Übersichtlichkeit, vorallem in großen Applikationen. Wäre mal
interessant, zu erfahren, was da in OpenOffice, ... gemacht wird.

> Macht wohl eher Sinn, klassische Datenstrukturen anzuwenden.
> OO ist da Overhead, jedenfalls wenn man es auf die naive Weise durchführt.

Der Witz am Fliegengewicht ist, dass du die Zeichen eben nicht irgendwie
"extra" oder "gesondert" betrachten musst, sondern einheitlich mit dem
Rest als Objekte. Das ist eine Erleichterung!

Wenn man es naiv macht, kommt ein enormes Speicher- und Performanceproblem
heraus. Statt nun seinen Code zu verkomplizieren und für die "kleinen Objekte"
gesonderten Aufwandt zu betreiben, wird ein anderer Weg angegeben:

Einfach die kleinen Objekte "cachen". Der programmtechnische Aufwandt dafür
ist nämlich nur einmalig, und sehr gering. Der Nutzen ist, dass du z.B.
in der Textverarbeitung auf Ebene der kleinen Symbole (Zeichen) keine
Sonderregeln brauchst, die du an allen möglichen Stellen beachten müsstest.

> Damit will das Design Pattern-Buch zwar aufräumen.
> Aber viele Probleme der OOP kommen dadurch, daß die OOP selten
> mit Blick über den tellerrand ausgeführt wird.
> Dafür bist Du ja der beste Beleg. ;-)

Das reicht an Beleidigungen. Ich habe nur gesagt, dass die Design
Patterns wichtig sind, selbst seit die Qualität der Sprachen drastisch
angestiegen ist. Mit deiner Argumentation hätte auch /ich/ das Buch
schon entsorgen müssen, als ich Python gelernt habe: All deine tollen
Lösungen sind in Python gleichermaßen einfach möglich. Und das liegt
*nicht* an den funktionalen Bestandteilen von Python.
Ich habe gesagt, dass die GoF-Patterns nicht antiquiert sind, weil
es dort nicht nur um Workarounds für schwache OO-Sprachen geht.
Ich habe nirgends auf OO herumgepocht oder behauptet, es wäre das einzig
ware. Solche dumpfen Parolen kamen nur von /dir/, und ich kann diese
Arroganz bis jetzt nicht verstehen.

Was du als "funktional ist mächtiger als OO" versuchst darzustellen,
ist völlig am Thema vorbei. Die Patterns, die du hier als "trivial" 
oder "veraltet" darstellst, waren es schon zu Zeiten von Smalltalk.
Ich habe nirgends gesagt, dass OO-Sprachfeatures wertvoller seien als
funktionale Sprachfeatures. Gerade in Sprachen wie Ocaml oder Python
ist dieses Schulbladendenken fehl am Platz, weil ihre Mächtigkeit
noch auf ganz anderen Sprachelementen basieren!

(In Lisp z.B. hättest du an einigen Stellen sehr viel mehr Mühe, die
Probleme *ohne* das entsprechende Pattern zu lösen, bzw. bräuchtest
ein anderes Pattern.)

Dein dämliches Geschrei "funktional ist besser als OO" geht mir auf die
Nerven. Du tust die ganze Zeit so, als hätte ich gesagt, dass "OO"
besser sei. Keines der beiden Konzepte allein reicht aus, um großen,
stabilen, übersichtlichen, leichtverständlichen, gut wartbaren Code zu
produzieren. Es sind lediglich Ansammlungen von guten Ideen, die sich
an vielen Stellen überschneiden.

Du bestätigst das, indem du alle möglichen Muster in Ocaml umgesetzt
hast. Damit hast du gezeigt, dass viele Muster gar nicht OO-spezifisch
sind. Statt die Probleme auf völlig andere, geniale .. "funktionale" ..
Art und Weise zu lösen, hast du genau die Rezepte des Buches umgesetzt,
nur eben nicht in C++ oder Smalltalk, sondern in Ocaml, mit analogen
Konstrukten. Warum wohl? Weil diese Lösungen völlig naheliegend sind,
wenn man erstmal drauf gekommen ist. Du /bestätigst/ mich die ganze Zeit
über, aber tust ständig so, als würdest du mir widersprechen, und es
mir damit gezeigt haben. Bitte höre mit diesem Unsinn auf, und höre
stattdessen einfach mal zu.

Das GoF-Buch enthält sehr viele verdammt gute Ideen, und ist beiweitem
nicht bloß eine Liste von Workarounds.


Viele Grüße,

	Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l