Skip to content

Es war einmal: C/C++

Heute endet eine weitere Ära bei manitu: C/C++ - bezogen auf unser Back- und Frontend.

Dazu sollte ich vorwegschicken, dass ich im Herzen ein leidenschaftlicher Programmierer bin, dazu noch eingefleischter C/C++-Fan und -Freund. Dieses Ende berührt mich doch sehr.

Dazu eine kleine Geschichte. Im Jahr 1997 - also vor fast 23 Jahren - startete ich zur Abrechnung und Verwaltung der Kunden mit einer eigenen Windows-Software, geschrieben in C/C++. Ich schreibe bewusst C/++, da es zum einen oft ein Mix aus beidem war, und ich (und da werden mir jetzt einige ins Genick springen wollen) in diesem Punkt eigentlich ungern unterscheide. Die Software war anfangs nur Einzelplatz-tauglich, später erweiterte ich sie auf Netzwerk-Fähigkeit.

Schon wenige Jahre später migrierte ich das Tool in eine Web-Applikation, die als in C/C++ geschriebenen CGIs in Verbindung mit MySQL-Datenbanken lief. Das war der eigentliche Anfang unseres heutigen Backends.

Im Laufe der Jahre kamen immer weitere einzelne Tools dazu, und wie es manchmal eben so ist, war C/C++ nicht immer die erste Wahl, gerade wenn es darum ging, "mal eben schnell" ein neues Feature oder ein kleines, separates Tool zu entwickeln.

Da kam PHP ins Spiel. Immer wieder kamen in PHP geschriebene kleine Mini-Anwendungen und Tools hinzu, die ganz unabhängig von C/C++ liefen. Und über lange Jahre hinweg pflegten wir in der Tat Code doppelt, gerade auch was die Datenbank-Schemata anbetraf. Auch und gerade für C/C++ hatten wir über die vielen vielen Jahre hinweg einen eigenen OR-Mapper geschrieben (also Datenbank-Tabelle zu Objekt in C++). Dennoch war es gerade in den letzten Jahren in C/C++ immer mühseliger geworden, neue Dinge so schnell wie in PHP zu realisieren.

In der ganzen Zeit stellte sich mir immer wieder die Frage, auf welcher Basis wir weiterentwickeln wollen, würden und werden. C/C++ ist immer noch mein Kandidat des Herzens, aber wenn man ehrlich ist, geht "sowas" in PHP, Python, Java etc. einfach viel "besser", wenn man besser als einen guten Kompromiss aus schnell, gut und günstig definiert ;-) Es gab durchaus auch Überlegungen eines kompletten Redesigns in Java, letztendlich hat aber PHP das Rennen gemacht.

Auch dort haben wir viel eigenen Code angehäuft, den wir oft wiederverwenden, und auch hier nutzen wir OR-Mapper (auch selbst entwickelte, denn das auf dem Markt existierende entsprach oft nicht unseren Anforderungen).

Und so kam es, wie es kommen musste: C/C++ hat am 30.06.2020 bei uns ausgediehnt. Und ja, das hat mit der Änderung der Mehrwertsteuer zu tun. Denn die Abrechnung war in der Tat das letzte noch verbliebene Einheitchen, und dort wollte ich nicht weiter Energie investieren, und den Code einmal in C/C++ und nochmal in PHP schreiben.

Ich habe heute selbst die letzten C/C++-Code-Reste aus unserem Repository entfernt und den letzten Commit gemacht.

R.I.P. C/C++

P.S.: In einigen anderen internen Dingen nutzen wir weiterhin C/C++, gerade wenn es um Performance geht :-P

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Steven Coolmay

Ich finde die Entscheidung gut. Es gibt Gebiete da macht es Sinn das eine Hochsprache verwendet wird und es gibt Einsatzgebiete für Scripte.
Ich finde es auch grausam das es verteufelt wird im Office viel mit Excel Tabellen zu arbeiten.
Auf der einen Seite wird die IT oft vernachläßigt und auf der anderen Seite werden für Kleinigkeiten Projekte ins Lebengerufen die jedes Augemaß verloren haben.

Jo

Also C und C++ sind deutlich andere Sprachen. Spätestens seit C++11. Die ganze Struktur via RAII und smart Pointer ist eine andere. Sicher kann man C+ oder so schreiben. Also C code mit ein paar Klassen und das durch nen C++-Compiler jagen, aber das ist ja der Komaptibilitätslayer und nicht die eigentliche Sprache ...

Colonel Panik

konsolenanwendungen in c# und .net, einfach irgendwo hinschieben, läuft überall. windows, android, linux, ios, egal.

Hoschi

C++11 war und ist wirklich eine deutliche Verbesserung für C++. Die Frage ist halt was man eigentlich tun will und was man kann und dann arbeitet man mit dem passenden Werkzeug.

Insbesondere -fsanitize hat mein Leben mit GCC (oder auch CLANG) erheblich verbessert und die Smartpointer tun ihr übriges.

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
BBCode-Formatierung erlaubt
Formular-Optionen