mawe hat geschrieben:Tester hat geschrieben:was ich aber auch wissen muß, ist die Eignung von Python eben für ein Projekt der oben beschriebenen Art im Umfang von 10000 bis 20000 Zeilen
Gerade Python ist eine der (Script-)Sprachen, die sehr gut skaliert. Übrigens, wenn Dein Project in C++ 15000 Codezeilen hat, wird die Python-Version erheblich kürzer sein
Eben das wollte ich sagen, nachdem ich vom 20000 Zeilen gehört habe. Aber wie jens sagte, ist es oft sinnvoller das Programm komplett neu zu überdenken, da der Versuch C++ 1:1 in Python umzuschreiben viel Arbeit ist und warscheinlich suboptimal sein wird. Du könntest auch versuchen für Teilprobleme schon fertige Python-Bibliotheken zu nutzen, denn davon hat Python sehr viele.
mawe hat geschrieben:Tester hat geschrieben:In einem Paper habe ich mal gelesen, die dynamische Typisierung könnte bei mittleren bis großen Projekten langfristig problematisch werden,
Die Antwort auf diese Bedenken sind Unittests. Dazu auch ein Buchvorschlag:
Dive Into Python
Nein, ich denke nicht das dynamische Typisierung Probleme macht, denn ich kenne niemanden der solche Sprachen
wirklich im Alltag nutzt (also nicht nur kurz ansehen, dynamische Typisierung: bäh! Schnell zurück zu Java!) der sich deswegen beschwert hätte. Im Gegenteil, dadurch bekommt man die praktische Fähigkeit des
Duck typing, die manchmal recht praktisch ist.
In der
Liste von Sprachen mit dynamischen Typen tauchen einige Sprachen auf, wie LISP (interessante Sprache nur zu viele Implementationen), Smalltalk (herausragende Sprache nur zu wenige nutzbare Implementationen), Objective-C (naja, wird in Mac OS X überall benutzt), Python (wird immer populärer), Ruby (wird auch immer populärer) usw.
Und wann man von der Typenprüfung wirklich nicht loskommt gibt es noch
PyProtocols, das eine Art verbessertes
isinstance() ist.
Wie mawe gesagt hat, lohnt es sich für größere Projekte zumindest Teile von Extreme Programming zu realisieren z.B. Test-first programming (erst Unittests dann Code schreiben um die Unittests zu erfüllen).
Eine alternative zum unittest Modul wäre
py.test, allerdings wäre für dich wohl aktuell unittest besser, vor allem da es im Buch "Dive into Python" sehr gut erklärt wird (das Buch ist für nicht komplette Anfänger großartig).
Für interessierte gibt es
hier einen Vergleich von unittest und py.test.
Zuletzt noch zum Support bei Python: deutschsprachige Hilfe findest du hier in ziemlich guter Qualität (Eigenlob! Ich konnts nicht lassen *g*), aber auch in der Python-de Mailingliste, sowie in de.comp.lang.python. Englischsprachige Hilfe gibt es in comp.lang.python, wo so ziemlich alle deine Fragen gelöst werden können.
Versuch doch mal einen Teil deines Programms in Python zu schreiben, dann siehst du wie es sich "anfühlt". Viele Tricks lernt man erst mit bischen Erfahrung, aber das ist zu schaffen.
Zuletzt noch den Zen of Python, ein erstaunlicher Text (und Easter-Egg), den zumindest ich am Anfang meiner Python-Zeit nicht verstanden habe, aber inzwischen habe ich festgestellt das dieser Text jede Menge Tipps hat, wie man in Python am besten programmiert:
Code: Alles auswählen
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!