Ich bin gerade beruflich am Reverse Engineeren einer C++-Anwendung. Das ist ein 500K-Binary, in C++ und mit Boost. Das ist augenöffnend, wie viel Code durch diesen ganzen C++-Klassenbibliotheken-Müll in so ein Binary gezogen wird. Auf 100 Funktionen, die ich hier reverse, kommen 2 tatsächlich von dem Programmierer geschriebene Anwendungs-Funktionen. Der Rest sind irgendwelche Boost-Funktionen, iostream- und string-Handling und -Konvertierung. Der Code besteht zu grob 90% aus irgendwelchen Konstruktor- und Destruktor-Aufrufen, und der Rest ist im Wesentlichen Stack Unwinding für Exception Handling. Nicht mal 1% des Binaries sind die Anwendung. Wenn ich sowas sehe, muss ich mich schon fragen, wieso solche Leute nicht gleich Java programmieren. Das ist jetzt auch nicht gerade eine monströs umfangreiche Anwendung, das werden am Ende so — wenns hochkommt — 100-200 Zeilen C++-Code sein. Und so wird ja heutzutage Software entwickelt. Man schludert ein paar Zeilen hin, und die gesamte Funktionalität kommt aus irgendwelchen 3rd-Party-Libraries. Diese ganze Komplexität, die man sich da in seine Programme reinzieht, überblickt ja schon lange niemand mehr. Die Leute haben ja nicht mal ein Gefühl dafür, wieviel Code in dem Programm am Ende tatsächlich von ihnen kommt. In diesem Programm hier sind das um die 1%, eher noch weniger. Ein Programm dieses Funktionsumfanges hätte man auch in 10k Binary unterbringen können. http://blog.fefe.de/?ts=ae3606aa