Autor Thema: [GOF Side Thread] OO in LS  (Gelesen 23483 mal)

Marinero Atlántico

  • Gast
Re: [GOF Side Thread] OO in LS
« Antwort #20 am: 02.01.05 - 11:56:40 »
wie toll das alles mit Java wäre (wenn die memory leaks nicht wären  ;D )
Auf welche memory leaks beziehst du dich? Die Probleme im Kontext mit LS2J haben null mit Java zu tun sondern mit dem LS2J Framework-Code von Iris.
Das besser-oder-schlechter Thema bringt ihr immer rein. Ich habe lediglich einen sachlichen Vergleich gezogen und der ist imho noch nicht mal schlecht.

Da ich in OO wesentlich mehr Erfahrungen mit Java als mit LotusScript habe und ich bezüglich GoF neben dem Originalbuch von 1994 oder 95 stärker die entsprechende Java Literatur rezipiert habe, ist das normal, dass ich Vergleiche ziehe.
Die GoF Pattern sind nicht Kochrezepte für "richtiges programmieren", sondern mehr so Verdichtungen von Ideen wie man flexibel OO programmiert. Völlig normal, dass ich mir erst einmal die OO-Features von LotusScript anschaue und die mit dem Vergleiche was ich besser kenne.
In jedem Java Buch zu GoF werden auch erst einmal die OO Features von Java analysiert und auch aufgezeigt, wo genau Schwächen sind (z.B. fehlende Mehrfachvererbung).
Die Schwächen haben konkrete Auswirkungen auf die Umsetzungen der Pattern.

Schwächen zu benennen ist auch keine anti-Lotus/pro-Java Propaganda sondern völlig normal. Schliesslich lese ich ja z.B. auch Rod Johnsons fundierte und massive Angriffe gegen J2EE mit großem Interesse.

Ob etwas herauskommt ist Ergebnis der Diskussion. Für den einzelnen mag die Bewertung auch unterschiedlich sein.

Gruß Axel

Marinero Atlántico

  • Gast
Re: [GOF Side Thread] OO in LS
« Antwort #21 am: 02.01.05 - 12:09:41 »
Eine weitere Schwäche von OO in LS ist imho, dass das LS-Exception Handling nicht so gut zu OO passt.
Ein Merkmal von OO Methoden im Vergleich von strukturalen Routinen ist, dass sie weniger Zeilen enthalten. Methoden sind kurz.
Dafür gibt es für die gleiche Aufgabe mehr Methoden als Subroutinen.
Objekte kappseln Daten/Verhalten und kommunizieren miteinander. Ein Objekt hält ein anderes Objekt, dass wiederum ein weiteres aufruft. Etc. Auch wenn sich Bernhard jetzt aufregt. Aber es ist wohl eine Tatsache, dass bei einem OO Design die Methoden kürzer sind und pro Feature/Use Case mehr Methoden aufgerufen werden als bei einem Programm, dass unter der Massgabe von funktionaler Dekompisition prozedural programmiert ist.
Nun haben C++ Methoden die Möglichkeiten über das Schlüsselwort throws die Exception Information an die aufrufende Methode weiterzureichen. Dies fehlt in LS OO ein bischen. Sobald ich Exception Handling ernst nehme, muss ich in eine Menge kleiner Hilfsmethoden Exception Code schreiben. Mit throws kann ich das besser zentralisieren.

Ok. In Zukunft beziehe ich sämtliche Vergleiche mit anderen Programmiersprachen auf C++/C#/VB.NET und Python, obwohl ich mich damit nicht so gut auskenne.  ;D

Gruß Axel
« Letzte Änderung: 02.01.05 - 12:27:13 von Marinero Atlántico »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: [GOF Side Thread] OO in LS
« Antwort #22 am: 02.01.05 - 13:12:12 »
Das besser-oder-schlechter Thema bringt ihr immer rein. Ich habe lediglich einen sachlichen Vergleich gezogen und der ist imho noch nicht mal schlecht.

Also ich finde die sachlichen Vergleiche sehr interessant, danke dafür.
Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Marinero Atlántico

  • Gast
Re: [GOF Side Thread] OO in LS
« Antwort #23 am: 02.01.05 - 13:24:28 »
und jetzt nochmal zu den complainers:
1. Ich mache mir diese Arbeit neben einer normalen Tätigkeit. Ich bin schon seit einiger Zeit ein ca. 85% ausgelasteter Consultant. Mit ausgelastet meine ich, dass die Kostenuhr eines Kunden tickt. Billable. Diese 85% schliessen nicht ein:
- interne Veranstaltungen innerhalb von IMG
- extra Zeit, wenn ich Mist in Projekten baue, die nicht dem Kunden angelastet werden können
- Selbststudium
- Zertifizierungen
- Administrativa 
2. Mein Hauptfokus im Selbststudien neben der Arbeit ist stärker auf Java5, Websphere, spring, hibernate, tapestry, Java-Portals, RDBMS und .NET. Ein Herr Bernhard Köhler mag das für nicht zielführend halten. Besonders interessieren tut mich das ehrlichgesagt nicht.   
3. Das so umzusetzen wie ich mir das vorstelle ist eine Menge z.T. sehr langweiliger Arbeit.
4. Ich werde hierfür nicht bezahlt.
5. Ich habe meine eigenen Motivationen, die für mich höchste prio habe. Wenn ich es für sinnvoll halte, erst einmal die OO-Features von LS mit Java zu vergleichen, mache ich das.

Gruß Axel
5.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: [GOF Side Thread] OO in LS
« Antwort #24 am: 02.01.05 - 13:28:40 »
Auch wenn sich Bernhard jetzt aufregt. Aber es ist wohl eine Tatsache, dass bei einem OO Design die Methoden kürzer sind und pro Feature/Use Case mehr Methoden aufgerufen werden als bei einem Programm, dass unter der Massgabe von funktionaler Dekompisition prozedural programmiert ist.

Ich glaube, Du missverstehst mich zu 100%, Axel.

Bernhard

Marinero Atlántico

  • Gast
Re: [GOF Side Thread] OO in LS
« Antwort #25 am: 02.01.05 - 14:36:40 »
... ich hab eine leichte Befürchtung, dass ich durch die GoF Pattern eher Leute davon abhalte, in LotusScript Klassen zu schreiben. Einfach weil es ziemlich schwierig sein wird, OO Anfänger davon zu überzeugen, dass das eigentlich leichter ist als es zunächst aussieht.
Und nicht alles muß in OO pattern sein. Wenn man für bestimmte Aufgaben mega-Flexibilität nicht braucht, können sie ein Design auch überkomplizieren. Das ist eben ein Abwägen.
Deshalb stecke ich nun ein bischen Arbeit in einfache Klassen, die so etwas wie eine Art Konsole auf Notes-Logging Basis erstellen und die ich für die Beispiele dann benutze.

Glaub nun, dass es für Lotus Entwickler sinnvoll ist so vorzugehen:
Bestimmte festumrissende, typische Lotus Aufgaben in eine Klasse zu packen.
Mein (noch nicht fertiger) code kappselt die folgenden Aufgaben:
- NotesLogging (Alog4.ntf).
- Konfigurationsdokument (statt Profile-Dokument, die ich nicht mag).
Für beides gibt es eine einfache Klasse und NotesLogging benutzt die Konfigurations-Dokument Klasse.

Das werden auch keine endgültigen super duper Frameworkklassen sein, sondern eher einfach. Wer will, kann die dann erweitern.
In gewisser Weise ist das ein Kontrapunkt zu den Pattern, der zeigen soll, dass nicht alles in OO Pattern sein muss. Es gibt aber Bereiche, wo eine hohe Flexibilität völlig Sinn macht und dafür sind dann die Pattern da. Zu erkennen, wo man Flexibilität braucht, ist natürlich ein Lernprozeß.
Imho wird das Thema OO oft immer so gesehen, dass man da am Anfang 120% wissen muß, was hinterher rauskommen soll. So ist das nicht unbedingt. Man plant vielleicht von Hause aus ein bischen mehr als mit strukturaler Programmierung aber nicht zu viel.
Zum Bleistift unterstützt die NotesLog-Klasse aus der Notes-LS-API Logging in ein File/Mail oder Severity/Typ_von_Error_aber_nur_für_serverseitige_Agenten.
Meine Klasse behandelt erstmal nur Logging in eine Datenbank. Sonst wäre es overkill. In der Praxis muss auch zum Bleistift eine Klasse_für_den_Zugriff_auf_Konfigurationsdokumente/Felder nicht direkt von Anfang an die in Stein gemeisselte Wahrheit über den Zugriff auf Konfigurationsdaten in Notes darstellen.

UND: Bereits das simple Strategy-Pattern kann man z.B. ohne Vererbung nicht richtig erklären. Ich glaub das vielen Leuten hier alle Phänomene rund um Vererbung nicht klar sind.
z.B. Was ist overriding? Inwieweit verhalten sich Konstruktoren (sub new) anders als Methoden? Was genau bewirken access modifier wie private/public? Was heisst eigentlich genau Interface und gibt es das überhaupt in LS?, etc. pp.   
Das sind dann ein paar Sachen auf der reinen Sprachebene. Nicht besonders viele, aber sie sind da und relativ einsichtig, wenn man es sich einmal unter Anleitung angeschaut hat.
Vielleicht mögen die entsprechenden Informationen für den Anfänger zunächst endlos viel vorkommen. Sie sind es aber definitiv nicht.

Lohnen tut sich der Aufwand imho schon. In Java/.NET, PHP5 etc. ist ein deutlicher Anstieg des Einbaus von OO features in gängige Programmiersprachen zu erkennen. Auch unter Domino Entwicklern ist ein ansteigendes Interesse an dem Schlüsselwort class zu erkennen. Schliesslich gibt es das schon seit 1998 und vielleicht seit Beginn von LotusScript.
Auf jeden Fall kann man dieses Wissen auch auf andere Programmiersprachen anwenden. Vererbung verhält sich unter C# sehr sehr ähnlich wie in LotusScript. 

Gruß Axel
« Letzte Änderung: 02.01.05 - 14:43:10 von Marinero Atlántico »

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: [GOF Side Thread] OO in LS
« Antwort #26 am: 02.01.05 - 20:20:06 »
3. Das so umzusetzen wie ich mir das vorstelle ist eine Menge z.T. sehr langweiliger Arbeit.

hehe, ich habs dir ja gesagt ;D
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: [GOF Side Thread] OO in LS
« Antwort #27 am: 02.01.05 - 20:38:55 »
in jedem Falle hochinteressant
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Oh boy
« Antwort #29 am: 01.08.05 - 23:41:51 »
Das schöne wenn man Gurus wie Damien Katz hat ist, dass man sich einfach mit manchen Dingen nicht mehr auseinanderzusetzen braucht  8)
Was entwickelt dieses Talent gerade, Ulrich? Immer noch Couch DB  ???  ;D Zumindest einer der Pattern Autoren Eclipse. Wessen Software wird von mehr Entwicklern benutzt? Aber vermutlich sind die alle auf dem falschen Dampfer und sollten den brillianten Werke von Damien Katz benutzen.
 
Natürlich besteht der Job nicht nur aus Pattern. Und du glaubst nicht wie sehr ich diese Aussage angesichts gewisser Haltungen in meiner weiteren Umgebung unterschreibe. Ich leide defitiv unter Personen, für die Softwareentwicklung nur aus Pattern besteht.

Aber: Sie können aber das Verständnis für eine Menge an Programmieraufgaben erleichtern. Sie machen ausserdem die Diskussion über Designs von Anwendungen einfacher. Ich sehe auch Potential in der Code Generierung unterstützt durch so Zeug wie xDoclet oder Java5 Annotations. Auch hier helfen Patterns sehr.
Die Rolle, die jeder Design Patterns in seiner Entwicklungsarbeit einräumt, bleibt jedem selbst überlassen. Nur darüber lachen kann ich nicht und will ich auch gar nicht.

Wir brauchen effizientere und stabilere Wege um Projekte durchzuführen oder Produkte zu programmieren. Es ist nicht 1986 und der PC ist gerade erfunden worden...

Viele verdiente Leute aus der Domino Community haben diese Aussage in den Kommentaren seines Blogs mehr als relativiert. Sie scheinen sich mit dem Thema beschäftigt zu haben...

Btw. halte ich das Buch als solches auch für "poorly written".

Zitat
Feeding them the idea that even in Domino they can actually learn something new via patterns helps break the cycle of "dense though/bad code"..
:-)
(Kommentar von Wild Bill aus den Kommentaren).
So etwas ähnliches hat mich übrigens überhaupt zu Design Patterns geführt. Schlaue Produktentwickler mit internationalen Treffen und "genialen" Ideen und ich hab in der Zeit mit  0 (besser: -3) Vertriebsunterstützung Projekte für wiederkehrende, mit echtem Geld bezahlende Kunden gemacht. Und ich dachte mir, was die da so wichtig schwafelten, dass kann gar nicht sein. Der Unterschied ist, dass ihr Gerede rein intern war. Die GoF stellten ihre Patterns der Welt zur Kritik hin und sie schufen ausserdem eine Sprache, um über Design überhaupt effizient zu reden. Dies alles völlig in synch mit der Forderung nach intersubjektiver Überprüfbarkeit als Maßstab für rationalen Gehalt von Aussagen durch Poppers Kritischen Rationalismus (so sehe ich es).

Ausserdem bin ich ein großer Freund von Refactorings. Dh. erstmal ein nicht so tolles Design machen und dann schrittweise verbessern (wo sinnvoll). Und ich bin bestimmt um den Faktor 1.4 mal kritischer gegenüber Objekt Orientierter Analyse eingestellt als
(Thomas Völkl + Jens Augustiny) / 2
OOD macht aber imho heftig Sinn an vielen Stellen.

Und natürlich werden Patterns overhyped. Aber machen wir das nicht alle mit unseren kleinen Ideen?

Vorschlag: Trete doch einfach seinem Couch-Projekt als openSoursler bei.  :)
Ich freue mich über Gesprächspartner bezüglich UnitTesting  ;)
http://damienkatz.net/2005/08/c_unit_testing.html

(mal schauen was ich noch so auf diesem blog finde. LoL).

... geh jetzt noch ein bischen in dem Buch über Tesujis lesen. In 4000 Jahre alten chinesisch-tibetanisch-koreanisch-japanischen-siberiakischen Brettspielen gibt es auch so was wie Patterns an mehreren Stellen und gerade in diesem Tesuji-Ding muß ich besser werden. Go ist in vielen Dingen very pattern. Aus verschiedenen Gründen an vielen Stellen näher an der Idee von Design Patterns als Schach. A solution in a context. Z.B. sind aber auch Schacheröffnungen (sizilianisch) in gewisser Weise Pattern. Eine Sequenz von für Schwarz und Weiss jeweils optimalen Zügen.

... vielleicht sind Pattern etwas ganz natürliches.

Axel
« Letzte Änderung: 02.08.05 - 06:55:36 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: [GOF Side Thread] OO in LS
« Antwort #30 am: 02.08.05 - 23:10:58 »
und dieser Hang alles, womit du keine Lust hast dich zu beschäftigen als obertheoretischen Mumpitz darzustellen. Da lache ich noch nicht mal mehr drüber. Es ist einfach unter deinem sonstigen Niveau. Ich kann z.B. auch kein .NET oder Ruby oder funktionale Programmiersprachen. Sage ich deshalb, dass die alle blöd sind?
Java war in den letzten 5 Jahren in vielerlei Hinsicht interessant. Es erfordert eine Menge Arbeit und v.a. muß man am Anfang zugeben, dass man nichts weiss. Diese Neugierde und diese Bereitschaft fehlt mir hier oft (ausser einige Ausnahmen).
Ansonsten ist das ein gutes Notes-Programmierforum.
Lotus geht auf den Java-Weg. Und dieses Java halte ich auch nicht für erfolgversprechend. Meine Javawelt ist aber ganz anders.
Z.B. das halte ich für interessant: http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=42&t=000574
Und die Lust mich hier zu rechtfertigen, habe ich schon laaaannnnge verloren.  ;D
« Letzte Änderung: 02.08.05 - 23:16:04 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz