| Bezüglich Optimierung kenne ich sehr wohl die folgenden Grundsätze:
- Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet. - M.A. Jackson
- "More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity." - W.A. Wulf
- "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." - Donald Knuth
- "The best is the enemy of the good." - Voltaire
Trotzdem hier meine Meinung zur C und C++ und deren Performance.
Im amerikanischen Linux-Journal wurde kürzlich ein Leserbrief als Replik auf einen Artikel publiziert, welcher sich mit den Programmiersprachen C und C++ auseinandersetzte.
Der Leserbriefschreiber stellte fest, dass im Jahr 2003 C++ eine geeignete Sprache für kleinere und mittlere Projekte sei, und es Zeit sei, einige alte Märchen zu beendigen.
- C++ ist langsam. Heutige Compiler seien schon sehr gut, und mit Templates kann ein Grossteil des Overheads von Konstruktoren und Destruktoren zur Compile-Zeit erledigt werden.
- Compilierte C++ -Bibliotheken sind inkompatibel zueinander. Heute nähern sich aber alle Compiler dem Standard an, und das Problem gehört der Vergangenheit an.
- C++ ist das schlechteste von beiden Welten. Dies ist aber nur eine Frage des Standpunkts: Stelle dir die Klarheit von Kapselung, Konstruktoren/Destruktoren, Exceptions, Vererbung wenn notwendig und die Geschwindigkeit von Pointern wenn gewünscht.
- C++ ist fett und komplex: ist dies nicht eher ein Problem des objektorientierten Ansatzes. Es ist schwierig, den objektorientierten Ansatz zu verinnerlichen, wer aber einmal objektorientiert programmiert hat, der möchte nicht mehr zurück.
- Nicht jeder kennt C++ und daher ist die Sprache schlecht als gemeinsamer Standard geeignet. Dies kann aber kein seriöser Grund sein, etwas gutes zu ignorieren.
Als alter Programmierer kenne ich C sehr gut und habe auch schon vieles über C++ gelesen (allerdings weniger programmiert). Ich will hier nicht sagen, dass C eine gute Sprache sei, aber die obigen Argumente für C++ finde ich zum grösseren Teil Schwachsinn.
- C++ ist langsam. Ja, es gibt noch langsamere Sprachen wie Java, Perl und bash, aber ich finde, dass langsame Programme nicht eine naturgegebene Sache sind, sondern Mängel, die heute meistens durch die Anschaffung eines schnelleren Computers kaschiert werden. Der Fehler von C++ liegt vielleicht nicht so sehr in der objekten Langsamkeit sondern eher darin, dass die Sprache die Programmierer im Entwickeln von langsamen Code unterstützt. Leider ist es heutzutage günstiger, einen schnelleren Computer zu kaufen, wenn dafür der Programmierer 2 Stunden weniger lang entwickeln muss. (Dafür warten dann 10'000 Anwender täglich 30 Sekunden länger, bis die Applikation gestartet ist, aber das zahlt ja nicht die Software-Firma)
- C++ -Bibliotheken sind inkompatibel zueinander. Das ist der Preis, den man für ein ABI (application binary interface) zahlen muss. Natürlich kann man versuchen, die ABI's zu standardisieren, aber so ca. alle 3 Jahre gibts nach meiner Erfahrung einen neuen Standard, und wer behauptet, der aktuelle Standard werde sich nie mehr ändern, der tönt für mich eher naiv. Ja, und wer Software die älter als 2.5 Jahre ist einsetzen will, ist ein Trottel oder lebt noch hinter dem Mond. Sonst wären wir Programmierer ja bald einmal arbeitslos.
- C++ ist das schlechteste von beiden Welten. Der gute Programmierer verbindet das beste von beiden Welten und der schlechte Programmierer eben das schlechteste von beiden Welten. Möge jeder selber nachzählen, wiewenige gute und wieviele schlechte Programmierer es gibt.
- C++ ist fett und komplex. Ja, ich habe schon OO programmiert, und ich bin auch der Meinung, dass ich das OO-Paradigma verstanden habe. Man kann auch mit C im Geiste objektorientierter Programmierung programmieren, nur bedeutet das ein bisschen mehr Aufwand. Dafür weiss man, was man hat und wieviele Bytes und Clock-Cycles wo verbraten werden. Aber natürlich ist alles eine Abwägenssache: will man Memory sparen oder Zeit um den Segmentation-Violation-Fehler zu suchen?
- Nicht jeder kennt C++. Vielleicht ist das auch gut so?
|