PySource2UML -> Umfrage!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.

Besteht Interesse zu so einem Programm?

Ja
17
63%
Nein
10
37%
 
Abstimmungen insgesamt: 27
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Mittwoch 3. Januar 2007, 13:52

Leonidas hat geschrieben: Andererseits ist es sicher lustig ein paar Kästchen zu haben in denen die Klassennamen geschrieben sind und die mit Pfeilen verbunden sind. Aber wie soll mir das beim Programmieren helfen? Ich kann auch in die Deklarationszeile eier Klasse schauen und dann bin ich auch so schlau. Für die Dokumentatiion nehme ich sowieso help() oder IPythons ``??``-Werkzeug.
Hast du dir mal z.B. die Klassenhirachie von Epidoc angesehen? 0o -> Ich finde das sehr hilfreich, dass in der Dokumentation auch Klassendiagramme/Packagediagramme benutzt werden. Gerade für außenstehende ist es so einfacher zu sehen was aufeinander aufbaut um die API zu verwenden...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. Januar 2007, 14:08

sape hat geschrieben:OK Leo und Jack, wenn da kein Interesse besteht, stecke ich da meine Energie auch nicht weiter rein und Schmeiße dann alles in den Papierkorb :D
Naja, die "Ja"-Wertungen sind in der überzahl, nur haben die die für "Nein" gestimmt haben ihre Argumente dagegen gepostet.
sape hat geschrieben:
Leonidas hat geschrieben: BlackJack hat ja schon angesprochen, dass sich einige Sachen in UML nicht darstellen lassen.
Daher auch die Frage in meine Zitat, das du Zitiert hast, wegen eines eigenen neuen Format das auf Python zugeschnitten ist.
Löst das Problem aber nicht. Metaprogrammierung kann nicht ohne weiteres dargestellt werden. Ein anderes Problem ist eben, dass Code in Python oft erst zur Ausführzeit vorhersehbar ist. Wenn eine Klasse ein Attribut nicht im Quellcode hat, muss es nicht heißen, dass es dieses Attribut nicht irgendwann zur Ausführzeit haben wird.
sape hat geschrieben:Hast du dir mal z.B. die Klassenhirachie von Epidoc angesehen? 0o -> Ich finde das sehr hilfreich, dass in der Dokumentation auch Klassendiagramme/Packagediagramme benutzt werden. Gerade für außenstehende ist es so einfacher zu sehen was aufeinander aufbaut um die API zu verwenden...
Nein, habe ich nicht. Also das heißt nur mal zum interessehalber, nachdem jemand eine solche schon generiert hat. Habe dafür nie Bedarf gehabt. Das einzige was ich bisher genutzt habe, sind die simplen Vererbungsgraphen der PyGTK-Dokumentation und das auch nur, um zu sehen in welcher Ebene ein Attribut definiert wurde. Sonst ist es nicht nötig gewesen. Die Python-Dokumentation hat so einen Graphen nicht, weil sie in der Regel ziemlich flach ist (flat is better than nested). Django hingegen ist eher schon verschachtelt, aber dank der genialen und umfassenden Dokumentation ist es nicht nötig die genaue Vererbungsstruktur zu wissen. In der Tat bringt es auch nicht viel, sie zu wissen, denn es interessiert eigentlich auch nicht. Es Interessiert welche Klasse welche Methoden hat, nicht aber wo diese Methoden herkommen. Mir ist es egal, ob eine Klasse die ich nutze von dieser oder jener Klasse abgeleitet ist. Solange sie die Funktionen bereitstellt, die ich benötige ist das doch völlig unwichtig. Es kann auch sein, dass die Klasse in Zukunft von einer anderen Klasse abgeleitet ist. Aber auch in diesem Fall ist, solange sich die API nicht ändert, kein Problem zu sehen.

Als mich für einen außenstehenden ist es vor allem wichtig zu verstehen wie die API funktioniert, und nicht warum die API so ist wie sie ist.

Edit: Markup korrigiert.
Zuletzt geändert von Leonidas am Mittwoch 3. Januar 2007, 14:51, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Mittwoch 3. Januar 2007, 14:28

Leonidas hat geschrieben: Löst das Problem aber nicht. Metaprogrammierung kann nicht ohne weiteres dargestellt werden.
Was genau ist das?
Leonidas hat geschrieben: Ein anderes Problem ist eben, dass Code in Python oft erst zur Ausführzeit vorhersehbar ist. Wenn eine Klasse ein Attribut nicht im Quellcode hat, muss es nicht heißen, dass es dieses Attribut nicht irgendwann zur Ausführzeit haben wird.
Stimmt -> Mixins! Das habe ich ganz und gar nicht berücksichtigt da ich bisher keine Mixins genutzt habe (und immer noch nicht nutze) aber schon davon gelesen habe :-[ Jetzt wo du es erwähnst fällt mir auf das Mixins sowas sind. Oder? -> Also zur Laufzeit hinzugefügte Attribute und Methoden.

Python ist zu dynamisch ^^ Nun verstehe ich auch BlackJacks einwand mit dem "Einfach?" als ich meinte das die Auswertung Simple ist.

OK, Jungs, vergessen wir das Thema. War ne sehr blöde Idee im nachhinein.

lg
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. Januar 2007, 15:02

sape hat geschrieben:
Leonidas hat geschrieben: Löst das Problem aber nicht. Metaprogrammierung kann nicht ohne weiteres dargestellt werden.
Was genau ist das?
Metaprogrammierung kann man als Technik ansehen die Programme schreibt. Mit Metaklassen ist es möglich, das Verhalten von Klassen stark zu verändern. Ein simples Beispiel bringt Ian Bicking.
sape hat geschrieben:Stimmt -> Mixins! Das habe ich ganz und gar nicht berücksichtigt da ich bisher keine Mixins genutzt habe (und immer noch nicht nutze) aber schon davon gelesen habe :-[ Jetzt wo du es erwähnst fällt mir auf das Mixins sowas sind. Oder? -> Also zur Laufzeit hinzugefügte Attribute und Methoden.
Nein. Nimm mal diesen Code:

Code: Alles auswählen

class Everything(object):
    def __getattr__(self, name):
        return True

Code: Alles auswählen

>>> e = Everything()
>>> e.something
True
>>> e.something_else
True
Du siehst: eigentlich hat dei Klasse zur Definitionszeit die Attribute ``something`` und ``something_else`` nicht. Zur Lautzeit werden sie aber verfügbar.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Mittwoch 3. Januar 2007, 15:29

Leonidas hat geschrieben:
sape hat geschrieben:
Leonidas hat geschrieben: Löst das Problem aber nicht. Metaprogrammierung kann nicht ohne weiteres dargestellt werden.
Was genau ist das?
Metaprogrammierung kann man als Technik ansehen die Programme schreibt. Mit Metaklassen ist es möglich, das Verhalten von Klassen stark zu verändern. Ein simples Beispiel bringt Ian Bicking.
Ja, stimmt im Wiki hatte ich mal glaube ich was davon gelesen aber nicht so recht verstanden.
Leonidas hat geschrieben:[...]
sape hat geschrieben:Stimmt -> Mixins! Das habe ich ganz und gar nicht berücksichtigt da ich bisher keine Mixins genutzt habe (und immer noch nicht nutze) aber schon davon gelesen habe :-[ Jetzt wo du es erwähnst fällt mir auf das Mixins sowas sind. Oder? -> Also zur Laufzeit hinzugefügte Attribute und Methoden.
Nein. Nimm mal diesen Code:

Code: Alles auswählen

class Everything(object):
    def __getattr__(self, name):
        return True

Code: Alles auswählen

>>> e = Everything()
>>> e.something
True
>>> e.something_else
True
Du siehst: eigentlich hat dei Klasse zur Definitionszeit die Attribute ``something`` und ``something_else`` nicht. Zur Lautzeit werden sie aber verfügbar.
Ja das meine ich doch. Das nennt man doch Mixins. :?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 3. Januar 2007, 16:39

sape hat geschrieben:Ja das meine ich doch. Das nennt man doch Mixins. :?
Nein, das sind keine Mix-ins. Guck dir mal diese Definition von Mix-ins an. Wie man so etwas einsetzt ist hier beschrieben, Mix-in Klassen sind hier beschrieben, Mix-in Module hier.

Tatsächlich werden in der Stdlib einige Mix-ins verwendet, wie zum Beispiel ForkingMixIn und ThreadingMixIn.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Sumo
User
Beiträge: 1
Registriert: Freitag 26. Januar 2007, 19:49

Montag 5. Februar 2007, 02:43

Leonidas hat geschrieben: Zur Lautzeit werden sie aber verfügbar.
Klassendiagramme zeigen aber keine Objektzustände an.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 5. Februar 2007, 15:43

Wenn ich ein buntes (ha, UML!) Diagramm von Code haben will, das mich wie UML nur sehr bedingt weiterbringt, dann könnte ich mir auch http://www.tarind.com/depgraph.html genehmigen ;)

Persönlich komme ich mit vernüftiger API-Doku sehr gut zurecht, um Programme und Pakete verstehen und benutzen zu können.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 5. Februar 2007, 17:06

Sumo hat geschrieben:
Leonidas hat geschrieben:Zur Lautzeit werden sie aber verfügbar.
Klassendiagramme zeigen aber keine Objektzustände an.
Ergo bringen es Klassendiagramme nicht wirklich, zumindest nicht in Python.

Andererseits kann ich mich nicht erinnern, wo ich in diesem Thread diese von dir zitierte Aussage gemacht habe.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Montag 5. Februar 2007, 18:07

Leonidas hat geschrieben:[...]
Andererseits kann ich mich nicht erinnern, wo ich in diesem Thread diese von dir zitierte Aussage gemacht habe.
Ich auch nicht.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Dienstag 6. Februar 2007, 00:28

Ich glaube das Zitat hier kürzlich irgendwo im Zusammenhang mit Mix-Ins gesehen zu haben.
Antworten