Hallo Christian,
- 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?
Da KISS gilt: ein starkes 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. :-)
#define true false
ist auch möglich. Und es geht ja auch nicht darum, warum man das tun sollte, sondern dass man es tun kann. Du sprachst ja davon, dass die Sprache unsaubere Konstrukte zulässt.
malloc
vsnew
new
in C++,malloc
in C. Nach meinem Wissen nach istnew
Typsicher, was malloc() eben nicht ist. Abgesehen davon siehtnew
optisch im Codefluss einfach sauberer aus, vor allem beim Arrays.
Möglich ist es aber beides zu benutzen, und darum ging es mir hier.
- Pointer-Arithmetik
Eine wunderbare Sache – wen man damit umgehen kann. :-)
Niemand kann zuverlässig mit Pointer-Arithmetik umgehen. Der Nachweis wird seit 40 Jahren geführt: Out-Of-Bound-Fehler, Buffer Overflows und ähnliche Fehler sind zuverlässige Fehlerquellen und sorgen immer wieder für Remote-Execution-Lücken. Und das sage ich mit etwa 10 Jahren aktiver C-Erfahrung. Nicht umsonst sind Go und Rust entstanden.
LG,
CK