Ich habe mit PHP programmieren gelernt. Daher kommt meine Neigung zu den Skriptsprachen. Neben PHP habe ich bisher mit Python, C, C++, Javascript, Perl und Matlab programmiert (und noch paar unwichtige Programmiersprachen wie AutoLISP etc). Als Datenbank favorisiere ich MySQL und SQLite.

Es gibt viele tolle Programmiersprachen, die für verschiedene Zwecke geeignet sind. Der Programmierer lobt meist die Sprache, die er am Besten kann. Bei mir war’s bis vor kurzem PHP. Ich habe viele Web-Anwendungen programmiert und kannte ich damit am Besten aus. PHP ist eine C-Abwandlung, eine Skriptsprache, die beim Ausführen kompiliert wird und hat ähnliche Syntax wie C. Mittlerweile ist sie auch objektorientiert. Performance? Na ja…

C/C++ gelten bei den Stand-Alone Applications sicherlich als Maß aller Dinge. Der Code wird nicht beim jeden Ausführen kompiliert und er ist maschinensprachennäher. Man kann seinen Code optimaler gestalten. Man allokiert und löscht seine Speicher selber, man bestimmt feste Variablentypen, schreibt selber die Klammer und (im Lower lever Fall C) verzichtet man auf die Klassen. Mir hat es als Scientific-Programmierer noch nicht wirklich Spaß gemacht. Dafür ist C/C++ meist schneller. Bei der Echtzeitverarbeitung von Sensor-Daten hat es sich gezeigt, dass ich mit C einen A/D Wandler bis zu 3 mal schneller lesen kann als mit Python auf meinem Raspberry Pi, der für Python optimiert ist. Mit einem einfachen C-Code, der mir den A/D-Wandler Register liest, kann ich das Programm mit ~15kHz „takten“. Mit dem identischen Python-Code erreiche ich höchstens ~5kHz. C/C++ bewährt sich auch bei den Tasks, die eine hohe Präzision an Zeitmessungen erfordern, wie z.B. Ultraschall Pings. Man behalte das Ganze im Kopf und entwickle als Ingenieur mit einer hübschen und einfachen Programmiersprache Python.

Python ist eine wirklich schöne Programmiersprache mit Indenting. Am Anfang kann es für Quereinsteiger nervig sein, dass man darauf beachten muss, eine richtige Indenting einhalten zu müssen aber am Ende merkt man wie schön, übersichtlich und einfach das Programmieren sein kann. Es unterstützt Multiprocessing, das Parallelisieren mehrerer Threads (was für mich essenziell wichtig ist) und bietet eine Super Auswahl an Bibliotheken für Numerik und Signalverarbeitung. Bei meinem aktuellen SLAM-Roboter Projekt mit dem Mikrocontroller Raspberry-Pi bin ich mit Python unterwegs. Ich kann auch trotzdem mehrere parallele C-Threads mit Python kommunizieren. D.h. ich kann die performance-intensive Threads in C outsourcen und meine Algorithmen weiterhin schön in Python schreiben. Eine tolle Sache.