Python vs. C++

Das Robot-Control-System was hier in zwei Blog-Einträgen bereits vorgestellt wurde ist mit Python programmiert. Aber dass soll nicht heißen, dass Python die beste Sprache dafür ist. Ein kleiner Exkurs zu C++ und SFML hat ergeben, dass man auch damit sehr ordentliche Programme schreiben kann. Um ehrlich zu sein, eigentlich kommt mir C++ ein wenig professioneller vor. Wenn man dort einen Grafikbildschirm öffnet ist er einfach da. Man startet das Programm und es werden die benötigten 60fps angezeigt. Kein Ruckeln, kein hoher CPU Verbrauch sondern die Applikation läuft einfach. Wenn also die C++ Community behauptet, dass alle anderen Programmiersprachen auf der Welt nur ein müder Ersatz sind für C++ so kann man ihnen nur beipflichten. Dennoch wird das Robot-Control-System zunächst weiterhin in Python entwickelt werden. Warum? C++ ist zwar eine mächtige Sprache wenn der Code einmal erstellt wurde, aber genau das ist das Problem. Bei Python geht der Edit-Compile-Run Zyklus um einiges schneller, insbesondere dann wenn man zwischendurch noch Stackoverflow fragt weil Probleme aufgetreten sind. Wenn hingegen die Python App inkl. der nötigen Algorithmen bereits fertig ist und es nur noch um Fragen wie Packaging, Bereitstellen auf verschiedenen Zielplattformen und niedrigen Ressourcenverbrauch geht, macht es Sinn den Quellcode nochmal neu für C++ zu schreiben. Die Aufgabe, vorhandenen Python Code nach C++ zu konvertieren ist eine überschaubare und sehr dankbare Tätigkeit, weil man damit die Qualität der Software beträchtlich steigert. Eine sauber programmierte SFML Applikation ist um einiges besser als ein lieblos zusammenprogrammierter Python Prototyp.

Zugegeben, anders als die Überschrift vermuten lässt geht es nicht darum Python mit C++ zu vergleichen, sondern im Grunde lautet die Empfehlung beide Sprachen zu nutzen. Man wird dadurch die Vorteile der anderen Sprache viel besser zu würdigen wissen. Für Python Programmierer wirkt C++ wie eine Offenbarung, weil dort alles so schön effizient läuft. Man ist auch nicht abhängig von irgendwelchen CPython, Jython und sonstigen Interpretern sondern hat am Ende die eine ausführbare Binärdatei die dann mit maximaler Performance läuft. Umgekehrt ist aus Sicht von C++ aber Python ebenfalls eine Verbesserung, weil man dort sehr viel schneller zu vorzeigbarem Code gelangt und man sich stärker auf die eigentliche Applikation kümmern kann.

Beide Sprache miteinander zu verbinden ist mehrmals versucht worden. Es gibt die Boost.Python Library die jedoch sehr schwer verständlich ist, und es gibt neuere Sprachen wie go welchen ebenfalls versprechen das beste von beiden Welten zu vereinen. Wirklich empfehlenswert ist davon nichts. Nach wie vor gilt C++ pur und Python pur als State-of-the-art in der jeweiligen Domäne. Sondern man sollte das ganze lieber von einem Software-Engineering-Prozess aus betrachten. Solange man in der Prototypenphase ist und noch nicht genau weiß was man eigentlich will, ist Python das Mittel der Wahl. Wenn man hingegen bereits einen Prototypen hat und jetzt richtige Software programmieren möchte, ist C++ besser geeignet um ans Ziel zu gelangen.

Sowohl Python als auch C++ müssen sich Kritik gefallen lassen. Python gilt als Anfängersprache die sehr langsam ausgeführt wird und vom Status her noch unterhalb von Java angesiedelt ist. Ist diese Kritik unsachlich? Wohl kaum, es beschreibt Python angemessen. Auf der anderen Seite gilt C++ als Pointerlastige und schwer zu erlernde Sprache wo der Code unleserlich ist und dauernd Compilerwarnungen angezeigt werden. Auch dieser Einwand ist berechtigt. Aber ich glaube nicht, dass man die Sprache verändern sollte. Sondern C++ und Python sind gut dort wo sie heute sind. Als Best-Practice kann man sagen, dass man sich in Eclipse sowohl pydev als auch CDT installieren sollte um beides zu nutzen. Eclipse ist das derzeit mächtigste IDE Framework, Python ist die mächtigste Prototyping Sprache und C++ die beste Programmiersprache.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s