Einführung in C# und das .NET Framework


... [ Seminar WS 2002/03 ] ... [ C# ] ... [ Einführung in C# ] ... [ .NET Framework ] ...

Übersicht: Einführung in C# und das .NET Framework

"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)]


Eine Einordnung

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 
using System;
public class HelloWorld
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!!");
    }
         
}
 
Listing 1.1

Das Umfeld (.NET)

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.


Die Standards ECMA und ISO

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].


... [ Seminar WS 2002/03 ] ... [ C# ] ... [ Einführung in C# ] ... [ .NET Framework ] ...