Hallo Christian,
Ausgerechnet C++ als Beispiel anzubringen, die weniger unsaubere Konstrukte zulässt, ist aber sehr ironisch ;-)
nun ja, wie gesagt, subjektiv habe ich C++-Projekte bisher als sauberer empfunden als JavaScript-Projekte. Das kann aber auch ein glücklicher Zufall sein.
Im Hochschulbereich programmiere ich zum Großteil in Java und bin damit bestens zufrieden, gerade weil es anders als C++ einige Sachen eben nicht zulässt, wie GOTO. Aber ich erkenne bei C++ an, dass es durchaus nützlich ist, wenn man ordentlich damit programmiert.
- drei Turing-Vollständige Sprachen in einem Compiler (Templates sind seit C++11 Turing-Vollständig, der Preprozessor ist es schon länger)
Ist das nun ein Für- oder Gegenargument?
#define TRUE FALSE
(happy debugging…)
Auch wenn ich das Beispiel sehr lustig finde, ist es unrealistisch. Wieso sollte man so etwas in den Quellcode schreiben? Zumal es seit C++ true und false als Schlüsselwörter gibt. :-)
Bjarne Stroustrup selbst warnt immer wieder vor der Nutzung von #define. Sie sind Bestandteil von C++ und können genutzt werden, aber außer für Header-Guards sehe ich da kaum einen vernünftigen Nutzungsgrund.
malloc
vsnew
new
in C++, malloc
in C. Nach meinem Wissen nach ist new
Typsicher, was malloc() eben nicht ist. Abgesehen davon sieht new
optisch im Codefluss einfach sauberer aus, vor allem beim Arrays.
- Pointer-Arithmetik
Eine wunderbare Sache – wen man damit umgehen kann. :-) Ich glaube aber, dass das Verständnis hilfreich ist zum Allgemeinen Verständnis. Aber auch hier bietet C++11 und neuer schöne Konstrukte um Zeiger zum Großteil zu umgehen.
- Mehrfachvererbung
Ach komm, eine Raute braucht man doch tagtäglich in der Programmierung! :P
Mir fallen noch jede Menge mehr Beispiele ein, soll ich weiter machen? ;-)
Ich werde dich nicht aufhalten. :-)
Freundliche Grüße
Christian