Gerhard Knabe: C++ oder C#

Beitrag lesen

Wer C wirklich beherrscht und dann auf C++ umschwenkt, der wird sich gehörig umstellen müssen, auch wenn C++ auf C aufbaut.
Aber C++ lässt einen Großteil der Klarheit und der Systematik von C vermissen. Sowohl die Syntax als auch die im Hintergrund (durch Compiler und Laufzeit-Mechanismen) ablaufenden Dinge sind oft mysteriös und schwer zu durchschauen, und die weniger strenge Syntax von C++ verleitet zur Schlamperei.

Wer C wirklich beherrscht, der hat sich imperative und prozedurale Denkweise angeeignet und kommt mit den oo Konzepten von C++ nicht wirklich gut zurecht, denn hier ist ein Paradigmenwechsel erforderlich. Das hat nichts mit der Syntax zu tun sondern mit grundlegend unterschiedlichen konzeptionellen Ansätzen. Von irgend einer Programmiersprache zu sagen, sie sei klar und systematisch halte ich für irreführend, denn in jeder Sprache kannst Du unklare und unsystematische Software schreiben. Das gilt für C ebenso wie für C++ und C#.

C und C++ waren beide deswegen so erfolgreich, weil sie zwar die Möglichkeiten bieten, klar und systematisch zu entwickeln, einmal imperativ und einmal objektorientiert, aber dem Anwender das nicht aufzwingen. Dies macht sie auf der einen Seite universell einsetzbar, auf der anderen Seite aber auch schwer beherrschbar. Es ist ein gutes Mass an Selbstdisziplin erforderlich, um strukturierten Code abzuliefern bzw. einen Wildwuchs während eines Projektes zu verhindern.

Wichtiger als die konkrete Syntax einer Sprache sind die Konzepte und Ideen, die hinter dieser Sprache stehen, denn diese sind auch auf andere Sprachen übertragbar. Wer etwa C++ beherrscht, wird mit C# keine großen Schwierigkeiten haben, denn ihm sind z.B. die Konzepte Ableitung, Polymorphismus und generische Funktionen/Klassen schon bekannt, er weiss wie er diese Konzepte effektiv in der Entwicklung einsetzen kann. Die abweichende Syntax von C# ist dabei schnell gelernt. Der Umstieg von C nach C++ ist dagegen viel schwerer, weil neue Konzepte sowie deren effektiver Einsatz erlernt werden müssen. Darüber hinaus lassen sich C Programme ohne oder nur mit geringen Änderungen auch mit einem C++ Compiler übersetzen, was dazu verleitet in der C-Denkweise zu verharren.

Am Schluss noch folgende Bemerkung: C# ist untrennbar mit dem .NET Framework verbunden. C# zu lernen heisst gleichzeitig, mit dem .NET Framework entwicklen zu können. Die Laufzeitsysteme von C und C++ sind dagegen Peanuts. Der Einarbeitungsaufwand ist riesig.

MfG
GK