Freitag, 10. Juli 2020, 07:04
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
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
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Steven Coolmay
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
Colonel Panik
Hoschi
Insbesondere -fsanitize hat mein Leben mit GCC (oder auch CLANG) erheblich verbessert und die Smartpointer tun ihr übriges.