Nach dem ich nun schon seit einiger Zeit mit der Hochsprache Python liebäugle, habe ich mich nun dazu durch gerungen, mir diese nun etwas näher anzusehen.
Der Auslöser dafür ist die - durch eine angestrebte Migration eines größeren Windows-XP-Firmennetzwerkes zu Linux bedingte - Notwendigkeit, bestehende Microsoft-Office-Makros in OpenOffice zumindest funktionell nachzubilden. Gerade diese Makros machen den Abschied vom proprietären Office oft sehr schwierig - warum sollte es also in meinem Fall anders sein
.Also galt es zunächst festzustellen, wie diese Makros am besten zu programmieren sind. Da ich in Sachen (Office-) Makros relativ (also absolut) unbeleckt bin, galt meine erste Suche den Möglichkeiten, die OpenOffice zur Makro-Programmierung bietet. Natürlich stieß ich zu nächst auf das boardeigene OpenOffice-Basic, welches es nativ ermöglicht, Makros zu implementieren. Allerdings finde ich die angebotene UNO-Schnittstelle viel interessanter. Darüber ist es möglich, in anderen Sprachen entwickelte Makros in OpenOffice verfügbar zu machen (s. Projektseite). Da unter den genannten Sprachen sich ebenfalls Python befindet, lag die Bestrebung für mich nahe, es zu diesem Zweck einzusetzen.
Da ich (wie auch meine Kollegen) so oder so eine für mich neue Sprache erlernen muss, bietet Python einfach die besseren Einstiegs- und vor allem spätere Einsatzmöglichkeiten. Damit lassen sich schließlich nicht nur Makros, sondern so ziemlich alle anderen Sachen realisieren. Für letztere setzte ich in der Vergangenheit eigentlich immer auf Perl - allerdings will ich nun auch mal mit der Mode gehen
.
Soweit zumindest in der Theorie, was die Praxis zu bieten hat, wird die Zukunft zeigen.
…und schon gehen die Schwierigkeiten los. Erst vor kurzem wurde Python 3000, also Python 3, veröffentlicht. Das soll zwar (noch) etwas langsamer als Python 2.5 sein, dafür aber dermaßen überarbeitet und verbessert worden sein, dass es mit seiner Vorgängerversion nicht mehr kompatibel ist. Eben diese ist aber die derzeit aktuelle und in den meisten Distributionen vorhandene. Ubuntu Intrepid Ibex bringt noch die Version 2.5.2 mit, OpenSUSE bietet schon 2.6. Letztere bietet eine Art Kompatibilitäts-Modus, in dem man die Lauffähigkeit des Scripts in der dreier Pythonversion mit dem Schalter python -3 beim Programmaufruf überprüfen lassen kann. So heißt es bei Ubuntu: warten auf die nächste Version im April.
Natürlich lässt sich Python 3 auch installieren, allerdings kann die standardmäßig verwendete Version nicht einfach überschrieben werden. Viele systemnahe oder anders notwendige Programme wurden in Python verfasst. Wie oben ja schon beschrieben, sind die alte und neue Version einfach inkompatibel. Würde man die Standards einfach umschreiben, würden viele Programme einfach nicht mehr funktionieren. So muss ich beide Versionen parallel installieren und beim Programmaufruf festlegen, welche Version denn nun genutzt werden soll. Um der Vollständigkeit Genüge zu tun, will ich noch erwähnen, dass ein Converter für ältere Python mitgeliefert wird. Der überprüft allerdings lediglich den Syntax, nicht aber die Semantik der Programme.
Das Ganze führt dann auch direkt zu Einstiegsproblem #2:
Welche IDE bzw. welcher Editor ist wohl der beste für mich? Da ich seit relativ kurzer Zeit bekennender Anhänger von Netbeans (PHP- & Webentwicklung) bin, liegt mein Bestreben nahe, diese IDE auch für Python einzusetzen. Leider ist die Unterstützung in Version 6.5 für Python noch nicht integraler Bestandteil und ein entsprechendes Plugin befindet sich noch im Beta-Stadium. Allerdings besteht Hoffnung auf die Version 7. Bliebe noch Eclipse mit dem PyDev-Plugin. Doch von dieser IDE hatte ich mich ja schon zu Gunsten von Netbeans verabschiedet. Irgendwie widerstrebt es mir auch, zwei dermaßen mächtige und und umfangreiche IDEs zu installieren und zu benutzen.
Weiterhin existiert noch Eric4, eine (grundsätzlich) eigene Python-IDE. Bei der fand ich allerdings (in angemessener Zeit) keine Möglichkeit, zwischen den Python-Versionen zu switchen.
Auch Editoren, wie der allmächtige Vim oder Kate bieten zwar grundsätzlich genug Funktionalitäten zum Programmieren, sind aber dennoch irgendwie unpraktisch. So muss man immer zwischen Editoren-Fenster zum Ausführungsfenster des Scripts wechseln.
Lange Rede, kurzer Sinn, schließlich landete ich bei Geany - einer kleinen, schnellen aber funktionsreichen Entwicklungsumgebung. Deren Pluspunkte sind u.a.:
Mit Geany bin ich rund um zufrieden und würde es für alle Script-Programmierungen, bei denen man das Programm direkt ausführen will, uneingeschränkt empfehlen. Für Webentwicklung etc. bleibe ich allerdings dann doch eher bei Netbeans. Unter OpenSUSE musste ich allerdings noch das Paket vte nachinstallieren, um die virtuelle Konsole im Programm im Nachhinein verfügbar zu machen. Damit diese dann komplett unterstützt wird, musste ich das Konfigurationsverzeichnis .geany aus meinem Benutzerverzeichnis löschen. Erst dann funktionierte sie uneingeschränkt. Für Ubuntu holte ich mir das DEB-Paket direkt von getdeb.net, wo es in aktuellster Version 0.15 (Ubuntu-Repos: 0.14) vorliegt.
Nach dem diese Vorüberlegungen & -arbeiten abgeschlossen sind, kann es endlich ans Eingemachte gehen.
Um eine neue Programmiersprache zu erlernen, ist es nicht ganz trivial, geeignete Quellen zu finden. Die Zeiten, wo man sich eine Referenz von O’Reilly oder Addison Wesley aus dem Buchladen seiner Wahl holen konnte und damit hinreichend vernünftige Literatur hatte, sind leider vorbei. Sicherlich, ein Buch kann man sich immer noch kaufen, allerdings hinken die nicht selten der Aktualität (siehe Python-Versionen) hinterher. Eine Suche bei Google (ja, es ist ein Datenkrake, aber liefert immer noch die besten Treffer) ist da meist schneller, kostengünstiger und auch in den Ergebnissen aktueller. Dennoch muss man bei der angebotenen Informationsvielfalt diese filtern. Nicht alles, was im Internet zu finden ist, ist richtig oder manchmal einfach nicht die beste Lösung für das eigene Problem.
Oftmals kann man da einfach nur auf sein Glück verlassen, sich aus den richtigen Quellen zu bedienen. Einen guten Anhaltspunkt bieten da Referenzen, die von verschiedenen (ernstzunehmenden) Quellen immer wieder genannt werden. Dazu kann man wohl auch die Google-Treffer-Sortierung zählen, aber auch einschlägige Foren. Bei einer relativ intensiven Suche fand ich folgende Online-Quellen, die für mich in Bezug auf Python ganz gute Ergebnisse liefern:
Allen gemein ist, dass sie in Bezug auf Python 3 mit Vorsicht zu genießen sind, was sich besonders bei den Code-Beispielen bemerkbar macht. Nichtsdestotrotz bieten sie, meiner Meinung nach, einen guten Einstieg und Überblick über Python. Besonders der Linux-User-Einsteigerkurs und vor allem A Byte of Python haben sich besonders hervorgetan - durch eine leicht verständliche Erklärung der Thematik. Das Openbook auf Galileo Computing bietet zudem einen Überblick über die Neuerungen von Python 3. Dieser Einblick wird auf der englischsprachigen Referenz vertieft.
Mit dem Werzeug und Informationen ausgerüstet, geht es nun an die eigentlich Arbeit.
…to be continued
Hey Sven,
ich kann die gedit als Editor ans Herz legen. Auch sehr simpel und es gibt mehr und meiner Meinung nach bessere Plugins.
Eine Bitte noch berichtest du auch über die Erfahrungen mit UNO?
Rockige Grüße,
Marco
Gedit finde ich auch ganz nett und wie Marco schon gesagt hat, gibts ja auch schon relativ viele Plugins.
Wenn ich zwischen Eclipse und Netbeans wählen sollte, bevorzuge ich Eclipse. Aber ist ja auch Geschmackssache.
Mit Python wollte ich mich auch mal auseinandersetzen, also würde mich über weitere Beiträge freuen
Dieser Blog benutzt das großartige WordPress.
Geany ist wirklich genial, benutze die Entwicklungsumgebung selbst für Perl und Cpp-Skripte.
Würde mich über weitere Stellungsnahmen zu Python freuen