[linux-l] Microsoft B.G. about bugs

Steffen Dettmer steffen at dett.de
Sa Feb 22 01:54:23 CET 2003


* Carsten Posingies wrote on Fri, Feb 21, 2003 at 15:47 +0100:
> > und deswegen strcpy(3) statt strncpy(3) nutz.

C++ strings?
 
> Jepp, und wer jetzt mit "C++" ankommt, der soll mal wieder ins
> Bettchen gehen und drüber nachdenken, was für einen Stuss er
> redet. 

Yep, mach ich dann gleich mal.

> C++ ist nämlich in letzter Konsequenz auch nur "C". 

Nein. C++ eignet sich westentlich besser für große Projekte. Es
gibt zunächst namespaces. Dann kann man sich mit weniger Aufwand
sichere Klassen bauen und mit Testdrivern testen, und bei der
Benutzung dieser Klassen Zeit sparen. Ich arbeite momentan mit C
und C++ und weiß, wovon ich rede, glaub ich. Ein string +=
irgendwas ist sicher, ein strncat nie (kann mindestens
abgeschnitten werden, nicht \0 terminiert sein etc.). C ist
weniger typsicher. Bildet man polymorhpie mit Funktionszeigern
nach, wird es noch "riskanter". Auch "buffer" sind in C blöd.
Allokiert man statisch, reichen die vielleicht nicht. Allokiert
man dynamisch, kann wieder die Größe falsch sein oder man kann
das delete/free vergessen. In C++ kann man sich einen sicheren
ByteBuffer bauen und den auf den Stack schmeißen. Dann testet man
hier einmal massiv alle Operationen (append, slice und was man da
so haben möchte), und dann hat man da keine Fehler mehr, weil der
ByteBuffer das richtig macht, und im Destructor delete schon
richtig aufruft. In C++ funktioniert 
const char *const buffer
immer wie erwartet, bei C Kompilern gibt's wohl etliche, die das
nicht können. In C++ gibt es Referenzen, deren geschickter
Einsatz viel dynamik spart und Sicherheit bringt. Exceptions und
auto_ptr helfen auch mit einfachen Mitteln schon mal sehr viel
weiter.

Der code wird dann kleiner, einfacher und lesbarer.

So, jetzt geh ich ins Bett :)

> (Und sage mir jetzt niemand, Java sei per se fehlertolerant und
> absturzsicher...)

Na ja, was in der Praxis leicht durch unsaubereres Programmieren
ausgenutzt wird, so daß man unterm Strich auch nix mehr von hat.
Ich muß zugeben, ich ziehe C++ vor, aber GUIs mache ich verdammt
gerne in Java :) Java und C++ finde ich jedenfalls einen
deutlichen Schritt vorwärts, wenn man sich C und Macro-Assembler
auf der anderen Seiten anguckt.

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l