"C# is a simple, modern, object oriented, and type-safe programming language derived from C and C++. It will immediately be familiar to C and C++ programmers. C# aims to combine the high productivity of Visual Basic and the raw power of C++." [Microsoft(1)]
C, C++ und nun C#, so lautet die chronologische Reihenfolge der C-Familienmitglieder.
Doch C# ist nicht wirklich ein direkter Nachfolger von C++, sondern möchte
laut Microsoft vielmehr die besten Eigenschaften aus mehreren Sprachen vereinen.
Als die wesentlichen Paten werden hier Visual Basic und C++ genannt, doch schon
ein erster Blick auf den Code eines einfachen Programms [Listing 1.1] verrät
bereits optisch auch eine gewisse Verwandschaft zu Suns Java.
Das Java von Microsoft nicht genannt wird liegt "wahrscheinlich daran,
um den Markennamen nicht zu nennen und damit juristische Probleme zu umgehen"
[c't(2)]
Es stellt sich die Frage, wozu denn eine neue Programmiersprache nötig
ist, wenn sie doch kein wirklich neues Konzept besitzt und somit wenig revolutionär
ist. Andererseits könnte man auch fragen, ob es nicht durchaus sinnvoll
sein kann eine Sprache zu erschaffen, die bewährte Konzepte vereint und
umsetzt. Mit dieser Ausarbeitung werde ich versuchen, die Konzepte und Spracheingenschaften
zu beleuchten und den bewährten Programmiersprachen gegenüber zu stellen.
Im Besonderen geht es hier um den Vergleich mit Java, denn C# ist dieser Sprache
strukturell am ähnlichsten. Zudem wurden viele Ideen aus Java übernommen
oder gar kopiert. An einigen Stellen scheint jedoch auch ein Verweis zu C++
oder gar Delphi als durchaus sinnvoll.
Als Verfasser und Entwickler von C# zeichnen sich Anders Hejlsberg, Scott Wiltamuth
und Peter Golde verantwortlich. Erstgenannter war lange Zeit bei Borland für
die Entwicklung von Turbo Pascal und Delphi verantwortlich.
C# gilt als die Sprache für .NET, auch wenn es prinzipiell möglich ist mit verschiedenen anderen Sprachen auf dem .NET-Framework aufzusetzen (z.B. VisualBasic.NET, C++.NET). Erste Gerüchte und inoffizielle Reportagen über eine neue Sprache von Microsoft gab es bereits 1998. Damals wurde wurde die Sprache COOL genannt und bekannt wurde nur, dass sie eine große Ähnlichkeit zu Java haben sollte. Mitte des Jahres 2000 nahmen die Spekulationen ein Ende, als Microsoft die Spezifikation für die neue Sprache C# herausgab. Nur einen Monat später stellte Microsoft bereits eine Preview-Version ihres .NET Frameworks vor, welches einen ersten C#-Compiler beinhaltete.
Nachfolgend ein kleines "Hello World"-Beispiel
C# | |
//Hello World public class HelloWorld { static void Main(string[] args) { Console.WriteLine("Hello World!!"); } } |
|
Listing
1.1 |
C# setzt auf der von Microsoft entwickelten .NET Plattform auf und besitzt
selbst keine eigene Klassenbibliothek. .NET geht aus der Weiterenticklung von
NGWS (Next Generation Windows Services) hervor. Wesentliche Bestandteile von
.NET sind das Common Type System (CTS), die Common Language Specification (CLS)
und die Common Language Runtime (CLR). Diese Komponenten sollen die Interoperabilität
der Programmiersprachen auf der Binärebene herstellen. Dies bedeutet, dass
alle Sprachen, die auf .NET aufbauen prinzipiell miteinander interagieren können
(siehe Kapitel 2).
Auf diese Weise bedient sich C# etablierten Bibliotheken, die bereits eine lange
Entwicklungszeit hinter sich haben und in C++ oder Visual Basic geschrieben
worden sind. Einige neuere Klassen sind bereits in C# entwickelt und dienten
so gleichzeitig zum großflächigen Einsatztest der Sprache. Das .NET-Framework
beinhaltet über 7.000 Klassen und 150.000 Methoden, was bereits eine Kennzahl
für die Komlexität und Ergiebigkeit dieses Frameworks ist.
C# und die .NET-Plattform hatten bereits zum Start im Januar 2002 einiges an
Aufmerksamkeit aus der Industrie erhalten. Das liegt unter anderem daran, dass
Microsoft mit der Sprache C# und dem .NET Framework eine Basis entwickelt hat,
die den Entwickler eine Vielzahl von "Werkzeugen" an die Hand gibt,
die die Produktivität steigern helfen.
Ein weiterer Schritt zur allgemeinen Akzeptanz von C# und .NET ist die Ratifizierung
und Standardisierung im Dezember 2001 durch die ECMA (European Computer Manufacturers
Association) durch die Standards ECMA-334 (C#) und ECMA-335 (CLI) [ECMA(3)]
[Heise(4)]. Dieser Rang eines Industriestandards
führt dazu, dass weitere Firmen sich mit der Sprache und Plattform befassen
und sich daran begeben diese auf "Nicht-Microsoft-Umgebungen" zu portieren.
Standardisiert wurde C# und die Laufzeitumgebung CLI (Common Language Infrastructure).
Teil der CLI sind unter anderem das CTS (Common Type System), die CLS (Common
Language Specification), das Ablaufsystem VES (Virtual Execution System), die
Zwischensprache CIL (Common Intermediate Language) sowie Standardbibliotheken.
Laut Meldung vom 12.10.2002 stehen die beiden .NET-Komponenten C# und CLI nun kurz vor der ISO-Standardisierung [Heise(5)]. Nach der ISO-Standardisierung von C# wird es nun beispielsweise möglich einen Compiler oder Interpreter dafür zu bauen, da man eine garantierte festgelegte Basis hat. Zusätzlich steht mit Standardisierung des CLI der .NET-Implementation auf anderen Plattformen theoretisch nichts mehr im Wege. Ein Projekt ist beispielsweise das Mono-Projekt, dass einen Compiler, eine Runtime-Umgebung sowie einen Satz von Klassen-Bibliotheken beinhaltet und so einen Einsatz von .NET unter Linux ermöglicht [www.go-mono.com].