Sunday, June 15, 2008

Do I want to go where the real action is?

The Linux Kernel Module Programming Guide:

You know C, you've written a few normal programs to run as processes, and now you want to get to where the real action is, to where a single wild pointer can wipe out your file system and a core dump means a reboot.

(Hervorhebung von mir)
Wollen? "Wollen" ist nicht der richtige Ausdruck, aber solange sich die iSCSI Target-Implementierung nicht ins Userland bewegt, muß ich mich in den Kernel bewegen. Ansonsten nix "Master of Science".

Wednesday, June 11, 2008

Zusammenarbeit Java und Python

Einer der Vorteile von Python ist die gute Integration von C-Bibliotheken z.B. um einzelne Funktionen aus Performancegründen auszulagern. Die Zusammenarbeit mit Java ist viel schwieriger. Es gibt mehrere Gründe, warum eine bessere Zusammenarbeit wünschenswert ist. Zum einen sind die sehr umfangreichen Bibliotheken ein riesiger Vorteil der Java-Welt, auf der anderen Seite könnte man eine Verbindung mit Java-Legacy-Anwendungen aus Python heraus herstellen wollen.

Es gibt mit Jython eine Python-Implementierung auf der JVM, die natürlich sehr einfach mit Java-Bibliotheken und -Programmen zusammenarbeiten kann. Jython hat in letzter Zeit einige Fortschritte erzielt, aber die Implementierung ist immer noch Jahre hinter der aktuellen Entwicklung der Sprache hinterher. In vielen Situationen scheidet Jython als Alternative einfach aus.

Eine Lösung, die ich seit einigen Wochen verwende, ist JPype. JPype erlaubt aus normalen (C-)Python heraus Zugriff auf Java-Bibliotheken und integriert diese gar nicht schlecht. Ein Beispiel: import jpype jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath) java = jype.JPackage("java") de = jype.JPackage("de") contact = de.dirkmeister.example.Contact(surname = "Meister") contact.mail = "XYZ@XYZ.de" contact.sendMail("Test-Mail") java.lang.System.out.println("Mail sent") Die Integrationg geht soweit, dass Java’s hashCode() Methode als __hash__, equals() als __eq__ und toString() als __str__ verwendet werden, so dass man quasi kaum merkt, ob ein Objekt nur ein Python- oder ein “Java”-Objekt ist. Selbst Getter- und Setter werden als Python-Properties integriert und sogar Exceptions werden transparent umgesetzt. Auch Swing-Anwendungen sollen einfach möglich sein.

Nachdem die Hürde der Installation überwunden hat, gestaltet ich die Arbeit erstaunlich flüssig und problemlos.

Ich verwende JPype um in Python auf das Hadoop Distributed File System (HDFS) zu zugreifen und dabei die volle FileSystem-API auf eine pythonifizierte Art zu verwenden z.B. sollen die Stream-Objekte als “File-like Objects” integriert werden. Den Code will ich in ein paar Wochen auf hier vorstellen.

Saturday, June 07, 2008

Google TechTalk: Fujaba-Storydiagramme

Fujaba-Storydriven Modeling (SDM) sind ein an der Uni Paderborn entwickelter Ansatz für General-Purpose-, visuelle, rein-modelbasierte Softwareentwicklung. Mit General-Purpose meine ich, dass es eine Modelsyntax für alle Domainen gibt, also kein unterschiedliches Meta-Modell für unterschiedliche Domains (DSL-Ansatz) mit jeweils problem-spezifischen Code-Generatoren. Das Story in SDM hat auch keinen Zusammenhang mit den Userstories in XP, ganz bestimmt nicht. SDM haben wir in der Vorlesung "Modellbasierte Softwareentwicklung" behandelt.

Gefallen hat mir der Ansatz nie: Zu unkompakt, komplex und unübersichtlich war mir immer die Syntax. Alle Beispiele aus der Vorlesung habe ich in Python und Java nachprogrammiert. Und Python war immer wesentlich lesbarer und kürzer als die Storydiagramme, Java auch in einigen Fällen. Der aus Storydiagrammen generierte Java-Code spottet jeder Beschreibung. Es wurde zwar in der Vorlesung behauptet, dass erfahrende Java-Entwickler Storydiagramme genau so in Code übersetzen würden, aber dann bin ich wohl nicht "erfahren".

Für mich waren Storydiagramme nicht das Silver Bullet, für das einige diese Modellierungssprache offensichtlich halten. Auch insgesamt bin ich von rein-modellbasierter Softwareentwicklung (das berühmte Zitat "Programmierer sind dumm" stammt auch aus der Vorlesung) nicht wirklich überzeugt.

Aber es gibt offensichtlich doch Leute, die sich dafür interessieren.
Der "Erfinder" Alfred Zundorf hat letzte Woche einen Google TechTalk gehalten: