Zitat:
Herkunft
Im Prinzip gehört C#, dessen Name als C Sharp gesprochen wird, der Sprachfamilie von C und C++ an, da sowohl die Syntax als auch einige Sprachkonzepte an diese beiden Sprachen angelehnt sind. C# wurde von Microsoft in Kooperation mit Anders Hejlsberg, dem Designer der Sprache Delphi, entwickelt und am 14. Februar 2002 im Rahmen des .net Framework veröffentlicht, über das Sie später in » was ist .net noch mehr erfahren werden.
Ein Ziel bei der Entwicklung von C# war unter anderem, die Sprache so einfach wie möglich zu gestalten und dabei auch einige fehlerträchtige Konzepte von C und C++ wie beispielsweise Mehrfachvererbung zu vermeiden. Der Gefahr, dass sich die weit verbreitete Meinung, C und C++ seien schlecht verständlich und schwer erlernbar, auch auf C# übertragen könnte, wollte Microsoft so von vornherein begegnen.
Plattformunabhängigkeit
Der größte und auffälligste Unterschied zwischen C# auf der einen und C beziehungsweise C++ auf der anderen Seite ist, dass mit C# entwickelte Programme plattformunabhängig sind. Das heißt, ein Programm läuft nicht nur unter dem Betriebssystem, unter dem es entwickelt wurde, sondern auf allen Systemen, für die eine Version des .net Framework existiert.
Dabei müssen diese Systeme nicht unbedingt PCs sein, es kann sich dabei beispielsweise auch um tragbare Geräte wie PDAs oder Mobiltelefone handeln. So existiert zum Beispiel eine speziell an die Eigenschaften mobiler Endgeräte angepasste, besonders kompakte Version des .net Framework. Ein ähnliches Konzept verfolgt die Sprache Java mit ihren verschiedenen Editionen (J2SE, J2ME, J2EE), womit ebenfalls plattformunabhängige Programme erzeugt werden können.
Da die Plattformunabhängigkeit jedoch keine spezielle Eigenschaft von C#, sondern eine generelle Eigenschaft von .net ist, finden Sie nähere Informationen dazu unter » was ist .net.
» nach oben
Objektorientierung und andere moderne Konzepte
C# ist wie fast jede andere moderne Programmiersprache objektorieniert, wobei die Objektorientierung von C# deutlich konsistenter und weitreichender ist als die anderer Sprachen, denn in C# wird fast alles als Objekt angesprochen. Sogar die einfachen Basisdatentypen für Ganz- und Dezimalzahlen oder für einzelne Zeichen lassen sich in C# als Objekt darstellen und entsprechend flexibel und vielseitig einsetzen.
Ergänzt wird C# durch die ebenfalls durchgängig objektorientierte Klassenbibliothek des .net Framework, die gerade im Vergleich zu den anderen häufig eingesetzten Klassenbibliotheken wie MFC oder JFC deutlich übersichtlicher gestaltet ist.
Des weiteren enthält C# einige Konzepte, die stark an Java angelehnt sind, teilweise aber deutlich ausgereifter arbeiten, wie beispielsweise eine umfassende und durchdachte Fehlerbehandlung oder eine automatische Resourcenverwaltung (Garbage collection).
Hier noch einige Details für erfahrenere Programmierer:
Zitat:
Details
C# hebt sich trotz der gemeinsamen Sprachfamilie deutlich von C und C++ ab, was beispielhaft an zwei Aspekten erläutert werden soll.
Das Konzept der Mehrfachvererbung wurde in C++ eingeführt, um eine Klasse von mehr als nur einer Basisklasse ableiten zu können. Dabei besteht allerdings die Gefahr, dass die abgeleitete Klasse, beispielsweise auf Grund namensgleicher Methoden in den Basisklassen, semantisch nicht eindeutig und der Code daher aufwändig und kompliziert ist. Um diese Probleme zu vermeiden, wird Mehrfachvererbung von C# nicht unterstützt, sondern nur die einfache Vererbung.
Zeiger stellen in C und C++ ein elementares und sehr mächtiges Konzept zur Manipulation von Daten dar. Allerdings werden auf Zeigern basierende Speicherzugriffe während der Laufzeit nicht geprüft, so dass der gesamte Speicher von einem in C oder C++ geschriebenen Programm manipuliert werden kann. Da dies vor allem auf Systemen, in denen mehrere Anwendungen gleichzeitig laufen, zu erheblichen Sicherheitsproblemen führen kann, werden Zeiger von C# nicht unterstützt.
Meine persönliche Meinung dazu: