Ich weiß nicht .. bei Python, jedesmal wenn ich mir denk, eigentlich ist die Sprache eh gar nicht soo schlecht, kommt wieder irgendein neuer Kompatibilitätssch*ß von Python 3 daher. Oder irgendein verrücktes "Feature" in der Sprache, bei dem man wieder Tage an Debugging verliert weil sich das Ding nicht so verhält wie mans erwarten würde oder eine Funktionalität hinter 3 Indirektionen versteckt ist.
Die Scriptsprache die mir bisher noch am besten gefallen hat (und ich glaub gar nicht dass ich das sage), ist Ruby. Die Dokumentation ist ein Graus, der Interpreter ist mit Abstand der langsamste aller Scriptsprachen, die Versionen sind noch öfter inkompatibel als bei Python (allerdings dafür nicht so gar arg verschieden), IDEs gibts glaub ich keine besonderen, Libraries gibts nicht so viel wie bei Python, ...
.. aber wenn man Algorithmen runterschreiben will, sind die funktionalen Programmiersprachenfeatures einfach um Größenordnungen besser als bei Python. Und die Block-Konstrukte sind zwar eigentlich vom Design her etwas hacky, aber in der Anwendung einfach genial. Und es hat eine normale C-Syntax, nicht diesen Whitespace-Einrückungs-Mist.
Einen Graphen aufbauen und durchlaufen? Kein Problem. Alle Elemente einer Liste nach einem Kriterium aufsammeln und mit einer anderen Liste vereinen? Einzeiler. Eine Halbordnung und Datenfluss-Analyse implementieren? Geht mit 30 Zeilen Code.
Nur die breite Unterstützung und die Libraries sowie die einfachen Scripting-Features (normale imperative Programmierung, einfaches Interfacing mit anderen Programmen und IO, ..) sprechen aber halt schon sehr für Python. Wenn ich irgendwas scripte, würde ich meistens auch Python verwenden. Ruby eher nur für Algorithmus-lastiges (bei denen Performance nicht so wichtig ist - aber hey, wenn Performance ein Kriterium ist, verwendet man keine Scriptsprache, sondern C++, vielleicht noch C#).
Man kann mit Python schon auch durchwegs brauchbaren Quellcode schreiben. Brauchbar, im Sinne von, wenn man ihn geschrieben hat, kann man oder gar jemand anderer 2 Monate später immer noch was damit anfangen.
Das Problem, ganz besonders bei der Python-Syntax ist halt, das bedeutet dass man zumindest:
- Bei *allen* Funktionen die nicht absolut trivial und offensichtlich sind (und selbst dann meistens), genau im Funktions-Kommentar jeden Parameter-Typ und Return-Typ dokumentiert
- Bei zumindest jeder Funktion und jeder Klasse am Ende einen '#end def' Kommentar macht um die Einrückungen sichtbar zu machen bzw. explizit das Ende der Funktion/Klasse hinzuschreiben.
.. und damit wird der Code letztlich länger und aufwendiger zu schreiben als in anderen Sprachen mit C Syntax und statischen Typen, und keiner machts sauber. Und selbst wenns wer macht, passt keiner die Kommentare an, wenn sich was ändert.
Aber anders ist der Code einfach nicht zu lesen und zu warten. Ich weiß gar nicht wieviel Lebenszeit ich bereits darauf verschwendet hab, in fremden Scriptcode und insbesonders in Pythoncode irgendwie mühsam über den Debugger rauszukletzeln was eine Variable, Parameter oder Rückgabewert eigentlich für einen Typ hat um rauszufinden wie ich ihn verwenden oder erweitern kann, und ich weigere mich mittlerweile auch, in irgendwelchen Opensource-Scripten rumzuwerken, wenn die nicht tiptop dokumentiert oder zumindest trivial verständlich und sauber sind. Dafür ist mir einfach die Zeit zu schad.
Lua hat mir auch ganz gut gefallen, ist aber eher etwas für kleine Plugins scripten, z.B. bei Gameengines. Größeren Code würde ich damit nicht schreiben wollen.
Erlang ist
auch wenns auch interessante Features hat.
Wer mal richtig Programmieren lernen will, dem sei Haskell ans Herz gelegt. Hab ich aber selber noch nie die Zeit dafür gefunden mich da mehr einzuarbeiten.