Die IDE an sich
Nach einem Jahr verschärftem Toolmonkeyism auf der Arbeit bin ich zu der Überzeugung gelangt, dass auch beim Python-Programmieren ein wenig IDE-Unterstützung nicht schlecht wäre. Eclipse (besonders das erstaunlich stabile 3.3) wächst einem dann doch ans Herz. Nicht dass ich für Python unbedingt Ctrl-1 bräuchte (z.b. den infernalischen Java-Typinferenz-Hack, Variablen ohne Typ zu deklarieren und sich per Tastendruck den Typ hinschreiben zu lassen – geht leider nicht in new-style For-Schleifen!), aber Refactoring-Support wäre schon was feines.
Refactoring in Python
Natürlich ist Refactoring in Python beliebig schwierig und der Bicycle Repair Main verhaut den Code teilweise schon ziemlich. Aber „Extract Method”, „Inline Variable”, „Extract Local Variable” und ähnlich einfache Sachen sollten durchaus zu machen sein, solange man keinen Unfug mit locals(), globals(), __dict__ oder (get|set|has)attr(...) macht. Und wenn man auf dieser Ebene programmiert, sollte man wissen, dass man sich mit automatischen Refactorings vielleicht nicht unbedingt nur Freude ins Haus holt.
Python-IDEs
In Zuge des TreeAligner-Workshops habe ich tatsächlich wieder mal ernstzunehmend Python programmiert. Um die ganze Sache etwas lehrreicher zu gestalten (PyParsing ist zwar nett, aber nicht mehr neu!) habe ich mich entschlossen, den Emacs zu verlassen und einige Python-IDEs auszuprobieren. Da ich eric schon zur Genüge kenne und auch nicht wirklich benutzbar finde, habe ich micht auf Pydev 1.3.8 und WingIDE 3.0.0b1 beschränkt.
Das schlechte zuerst: Pydev
Pydev ist wirklich erschreckend schlecht. Zwar hat man die üblichen Eclipse-Vorteile (run configurations etc.), aber dafür hat der Python-Editor keine Indentation-Engine: pro TAB-Taste wird einfach ein Level tiefer eingerückt, automatische Indentierung scheint nicht zu gehen. Das ist besonders nervig wenn man sich der datenzentrierten Programmierung verschrieben hat und andauernd große Dictionaries oder Listen als Literale im Code erstellt. Allein dieses Manko lässt Pydev schon aus dem Wettbewerb fallen.
Die automatische Code-Vervollständigung erschließt sich mir nicht wirklich, zumindest wird wohl die aktuelle Datei gescannt (das kann Emacs auch…). Die wenigen Refactorings, die Pydev unterstützt, scheinen aber zu funktionieren, wenigstens ein kleines Plus; insgesamt aber nicht überzeugend.
Etwas besser: WingIDE 3.0
WingIDE hat eine überraschend gute Code-Vervollständigung (alle Imports werden gescannt), auch Funktionsaufrufe auf Objekten werden vervollständigt, soweit WingIDE den Typ inferieren kann, ohne das Programm auszuführen. Der Editor ist gelungen und die Emacs-Emulation überzeugend. Die Indentation-Engine ist sehr gut und produziert bei tief verschachtelten Datenstrukturen subjektiv schönere Ergebnisse als der Emacs.
Der Debugger hat alles, was man erwartet, obwohl er manchmal etwas schneller reagieren könnte. Auch nervt, dass das Starten eines Debug-Laufes und das Weiterausführen nach einem Breakpoint ein Befehl sind. Alle anderen Zusammenstöße, die ich mit dem Debugger hatte, rechne ich meinem extravaganten Programmierstil zu.
WingIDE hat keinerlei Unterstützung für Refactorings, es sei denn, man versteht under „Rename Variable” eine Search/Replace-Operation. Für ein neues major release einer professionellen kommerziellen IDE im Jahr 2007 ein sehr schwaches Zeichen. Außerdem nerven einige kleine Bugs, die aber bei einer Beta-Version entschuldbar sind – von der Reaktion auf mein Feedback werde ich wohl eine Kaufentscheidung abhängig machen.
Einige Sache würde ich mich nur wünschen (z.b. ein ähnliches Feature wie Quick Outline in Eclipse). Darüber hinaus habe ich mir die Skriptbarkeit der IDE noch nicht angeschaut, und wie stark man sie tatsächlich erweitern kann. Unterstützung für py.test wäre schon etwas, das man implementieren könnte.


![Validate my RSS feed [Valid RSS]](http://shlomme.diotavelli.net/images/valid-rss.png)
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment