[linux-l] Ocml vs. Java

Volker Grabsch vog at notjusthosting.com
So Sep 25 20:26:53 CEST 2005


On Sat, Sep 24, 2005 at 03:20:06AM +0200, Oliver Bandel wrote:
> > > 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.
> 
> Naja, Deine Mails waren das eine oder andere mal auch recht pampig.
> Soll ja schön ausbalanciert bleiben. ;-)

Das ist wahr. Dennoch wäre es mir lieber, wenn deine Kritik sich mehr
an dem orientiert hätte, was ich wirklich geschrieben habe, und nicht
an irgendwelchen Charaktereigenschaften oder Wissenslücken, die du da
reininterpretiert hast.

> > Ich habe nirgends auf OO herumgepocht oder behauptet, es wäre das einzig
> > ware.
> 
> Naja, hast doch schon ziemlich OO hochgelobt, es jedenfalls
> immer in so einem Kontext gesagt, daß dieser Eindruck verstärkt wurde.

OO hat seine Stärken. Es herunter zu machen halte ich für völlig daneben
von dir. Es dogmatisch zu verfechten wäre natürlich ebenfalls Unsinn.

> Was ich aber feststellen konnte: FP ist extrem mächtig.
> IMHO in sehr vielen Fällen besser geeignet als die anderen
> Programmierparadigmen.

In den Fällen, mit denen du bisher zu tun hattest, glaube ich das schon.
Bei mir ist dieses Verhältnis eher andersrum. Meine Python-Programme
würde ich lieber in Java als in Haskell nachbauen müssen.  :-)
Aber du hast den Nagel auf den Kopf getroffen: Es hängt vom
Anwendungsgebiet ab.

Und es schließt sich nicht gegenseitig aus.

> Aber wenn ich hauptsächlich GUIs
> programmieren würde, würde ich wohl eher auf OO pochen.

Naja, nicht nur GUIs. Allgemein wenn du "reale Objekte" im Rechner
modellieren willst (laden, bearbeiten, hinzufügen, entfernen, ...),
ist OO der beste Ansatz.

> Vorlieben für bestimmte Programmier-Paradigmen sind
> sicherlich auch geprägt vom Arbeitsgebiet/Interessengebiet.

Man sollte sie nur rechtzeitig ändern, wenn man mal was anderes macht.
Im Zweifel erstmal pragmatisch bleiben. *g*

> [...]
> > 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 das Buch Ausgangsposition war in Deiner Argumentation.
> 
> Und da hattest Du OO-like argumentiert (so jedenfalls meine
> Erinnerung).

Keine Ahnung, was du meinst. Ich bräuchte ein konkretes Zitat, das dich
gestört hatte.

> > Weil diese Lösungen völlig naheliegend sind,
> 
> Schon.
> Das Buch ist dennoch auf OO spezialisiert.

Ja, aber:

1) die Muster sind noch lange nicht veraltet, sondern stellen nach wie
   vor die beste Lösung für das gegebene Problem dar.

2) die Muster lassen sich auf andere Sprachen und Paradigmen übertragen,
   falls man dort auf ähnliche Probleme stößt, und sie sind dort ebenfalls
   naheliegend.

3) die Muster enthalten auch Werte, Richtlinien und Empfehlungen zum
   Programm-Design, die unabhängig von Sprache und Projekt sehr wertvoll
   sind.


> > Das GoF-Buch enthält sehr viele verdammt gute Ideen, und ist beiweitem
> > nicht bloß eine Liste von Workarounds.
> 
> Klar sind das gute Ideen, sonst hätte ich es mir auch nicht zugelegt. ;-)
> 
> Nur mich stört dabei, daß es eben rein OO-mäßig ist.

> Es ist nun mal ein anderer Ansatz, wenn man jeden kleinen Datenschnipsel
> als Objekt darstellt. Das bringt letztlich nur overhead.
> Und aus einem int-Wert wird deswegen auch nihts anderes als ein int-Wert werden,
> nur weil man das ganze als Objekt zur Verfügung stellt.

Eine Sprache, in der Int-Werte als Objekte gehandhabt werden können, ist
IMHO konsequenter designt. Dabei sinnlosen Overhead zu vermeiden, liegt
am Compiler, nicht an der Sprache.

Dieses Argument hebt IMHO nicht die funktionalen von den OO Sprachen ab,
sondern die statische typisierten von den dynamisch typisierten. In Java
existiert dein Problem nämlich z.B. nicht. Da ist der "int" ein Wert,
bis er als Objekt benötigt wird. Erst dann wird der "Overhead" drumherum
erzeugt.

> Weil OO andauernd und überall über den Klee gelobt wird, deswegen geht mir das
> OO-gesülze meistens auf den Sender.
> Wie Du selbst sagst: Die Patterns sind nicht OO-spezifisch, bzw. weisen darüber hinaus.

Ja, das ist wahr. OO wird überbetont und überbewertet. Das ist aber kein
Grund, den selben Quatsch mit "funktional" statt "OO" zu veranstalten, oder
OO herunter zu machen.

> Aber (fast) immer wenn man Design Patterns hört, kommt im nächsten Atemzug auch Java
> oder Ähnliches. DAS geht mir auf den Sender.

Mag sein. Dann schnauz die Leute zu, die das machen. Aber geh nicht
davon aus, dass jeder, der OO toll findet und mit Java gearbeitet hat,
ebenfalls auf diesem Tripp ist. Mit dieser Erwartungshaltung kannst du,
wie z.B. bei mir, verdammt schnell daneben langen.

> Klar kann OO sinnvoll eingesetzt arbeit sparen; aber oftmals ist es
> auch unangebracht eingesetzt.
> Ebenso das Vererbungs-Gesülze (nein, nicht von Dir). Als ob man
> mit Vererbung alles mögliche sinnvoll darstellen könnte.

Eben nicht. Einige Design-Pattern beruhen auf dieser Tatsache, aber auch
sie lösen nicht alles.

> Mag sein, daß ein Porsche und ein Ford und die vielen anderen...
> ...alles Autos sind. Könnte durhchaus Sinn machen.
> Aber eine Seite zum Beispiel ist kein Absatz und ein Absatz ist kein Glyph.

Nein, aber es sind alles Textsatz-Objekte. Es kommt darauf an, wie man
mit ihnen umgeht. Einen Konverter von TeX -> xxx würde man wohl
sequentiell schreiben, und diese Dinge wohl eher nicht als Objekte
modellieren (kommt drauf an), aber eine GUI, in der man diese gebilde
anklicken, verschieben, etc. will, da muss man sie überwiegend
gleichartig behandeln, da braucht man Polymorphie und entsprechend ist
es am sinnvollsten, sie als Objekte zu modellieren. Es kommt auf die
Anwendung an, nicht auf die Gebilde an sich.

> Vielleicht bin ich deswegen schon etwas allergisch gegen den OO-Krams. :(

Das hättest du trotzdem nicht an mir und der Liste auslassen müssen.



Viele Grüße,

	Volker

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



Mehr Informationen über die Mailingliste linux-l