[linux-l] Ocml vs. Java

Volker Grabsch vog at notjusthosting.com
Mo Sep 26 10:01:58 CEST 2005


On Sun, Sep 25, 2005 at 02:36:24PM +0200, Oliver Bandel wrote:
> > Das Brückenmuster ist aber anderer Natur. Schau es dir einfach mal an.
> > Vielleicht gibt es Sprachfeatures, die dieses Muster erleichtern, aber
> > in jedem Fall ist ein (wenn auch naheliegendes) Umdenken nötig. Und das
> > nimmt dir keine Sprache ab.
> 
> Aha, na, das Beispiel in Ocaml hast Du ja gesehen.
> Wo muß man da in OCaml groß umdenken?

Ich meinte, wenn man sein Software-Projekt entsprechend dem
Bridge-Muster organisiert, ist das beitem nicht nur ein Herumschieben
von Code, sondern man muss eben umdenken, um Vergleich zu dem, was
man sonst naiverweise tun würde. Insbesondere muss man ein paar mehr
Einschränkungen in Kauf nehmen. Das ist ja die Essenz: Einige dich auf
wenige Kern-Features, die alle "Backends" implementieren, und baue
aus diesen dann selbst dein System hoch. Dadurch hast du einen konstant
niedrigen Aufwandt auch in Zukunft beim Schreiben neuer "Backends".

> Man wendet Funktoren an und die Bridge-Pattern-Aufgabe
> ist damit erschlagen.

Nein, mit Funktoren hast du das Bridge-Pattern implementiert.

Die Aufgabe zu erschlagen, das wäre, wenn es einen viel besseren
Lösungsabsatz für das gegebene Problem gäbe, der insbesondere einfacher
zu implementieren ist als das Bridge-Pattern.

> > Ü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.
> 
> Proxy habe ich gerade mal überflogen.
> Wird angewendet, um den Overhead, den man sich mit OO einhandelt,
> in Grenzen zu halten. Das ist, wie es im Design Pattern Buch
> als Begründung dort angeführt wird: Den Overhead von "teuren"
> Objekten zu minimieren.

Ja, stimmt. Das hatte ich übersehen. Wenn's nur um die Performance geht,
kann "lazy evaluation" das Proxy-Muster erschlagen.

Wenn du aber auch Zugriffsbeschränkungen etc. reinbauen willst (weiterer
Anwendungsfalls des Musters), dann musst du letztlich doch wieder eine
Zwischenschicht reinziehen, und implementierst wohl oder übel das
Proxy-Muster.

> > > Hmhh, mach' mir jetzt nicht die Mühe, den ganzen Kram zu lesen;
> > > schaue mir im Panther-Buch die Grafik an und würde wieder sagen, daß OCaml's
> > > Modulsystem einem hier hilft.
> > > Ein Interface und mehrere spezialisierte Implementierungen. Das riehct nach
> > > Anwendung von Funktoren.
> > 
> > Nee, Funktoren helfen da nicht.
> 
> Die helfen aber bei der Bridge.

... beim Implementieren der Bridge: ja.
Beim direkten Knacken des dahinter liegenden Problems: nein.

> Ich finde das Modulsystem von Ocaml prima.

Ich auch. Keine Frage.

> Und damit erschlägt man die Design Patterns ganz locker.

Du hast sie bisher nur implementiert, also nachgebaut. Sicher einfacher
als in Java, aber in Bezug auf ordentliche(TM)  :-)   OO-Sprachen ist
deine Implementierung genauso einfach wie dort. Vom "Erschlagen" kann
also nicht die Rede sein.


Viele Grüße,

	Volker

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



Mehr Informationen über die Mailingliste linux-l