Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

A Brief History of C#

Geschrieben von: Christoph Wille
Kategorie: C#

This printed page brought to you by AlphaSierraPapa

Ein wichtiger Bestandteil des Microsoft .NET Framework ist die Programmiersprache C# (sprich "C Sharp"). Diese Programmiersprache wurde von Grund auf für das Microsoft .NET Framework designed, und kommt von der Windows Anwendungsentwicklung bis hin zur ASP.NET Programmierung zum Einsatz. Große Teile des .NET Frameworks wurden sogar mit C# entwickelt.

Ich möchte hier am Anfang darauf hinweisen, daß dies ein 10,000 Meter-über-Grund Überblick über die Features von C# und das .NET Framework ist. Dieser Artikel soll als Appetizer dienen, sich die Zeit zu nehmen, in das Microsoft .NET Framework SDK einzutauchen.

Warum sollte man C# lernen?

Als ASP Programmierer stellt sich natürlich die Frage, warum man C# lernen sollte - statt VBScript hat man ja jetzt einen vollen Visual Basic Compiler zur Verfügung. Der Grund liegt in den vielen Detailänderungen, die ASP.NET und der neue Visual Basic Compiler mit sich bringen. Oft ist es einfacher, eine Seite völlig neu zu schreiben (und zu optimieren), anstatt sie an ASP.NET anzupassen - und dann sind die Features von C# so herausragend, daß es sich wirklich auszahlt, den Umstieg zu wagen.

C# ist eine moderne Programmiersprache, die für Programmierer entwickelt wurde, die Firmenanwendungen schreiben: sie ist modern, einfach zu erlernen, vollständig objektorientiert und vor allem eines: Typsicher (ein integer ist ein integer ist ein integer © Ferengi). Wenn man einen integer als String behandeln möchte, so muß man diese Funktionalität explizit anfordern. Für die einen eine schlechte Nachricht, für die anderen eine gute: der Variant Datentyp ist tot.

C# ist zu großen Teilen von C und C++ abgekupfert (nur die besten Sachen, allerdings) - wenn man also etwas C++ kann, wird man sich sehr schnell in C# zurechtfinden. Weil wir gerade bei dieser Verwandtschaftsbeziehung sind, einige Unterschiede zu C++: es gibt keine Pointer, und die Speicherverwaltung wird von einem Garbage Collector übernommen - nie wieder Speicherlecks, Ausnahmefehler, und das Herumpfuschen mit dynamischer Speicherverwaltung fällt auch weg!

Ebenfalls ein Unterschied zu C++, den C++ als auch VB Programmierer sehr begrüssen werden, ist daß es nur einen einzigen Bereichsauflösungsoperator gibt: den Punkt (.). Keine Doppelpunkte (::), keine Pfeile (->) mehr. Das fällt unter die Einfachheit der Sprache, genauso wie es eine strikte Compilerprüfung gibt, daß man keine uninitialisierten Variablen verwendet (das hat fast jeder C Programmierer schon gemacht...).

Besonders hervorhebenswert ist auch, daß C# ein starkes Exception Handling hat, das auf der Runtime des .NET Frameworks aufsetzt - dadurch wird die Fehlerbehandlung beinahe zu einem Vergnügen. Und außerdem kann man seine eigenen Exceptions generieren - ein deutlicher Fortschritt zur Fehlerbehandlung, wie sie aus COM bekannt ist.

Und als letzten Punkt möchte ich nochmal auf das .NET Framework hinweisen: es wurde zu großen Teilen in C# entwickelt - also dürfen Sie mal raten, welcher Compiler am meisten getestet und optimiert wurde... noch Fragen, warum man einen Blick auf C# riskieren sollte?

Die Common Language Runtime

Die Common Language Runtime (oder später nur noch Runtime) ist der eigentliche "Hammer" von Microsoft .NET - es ist eine Runtime, die die Ausführung von Code überwacht und viele nützliche Services zur Verfügung stellt. Auf diese werde ich in dieser Sektion eingehen.

C#, und alle anderen Compiler die die Runtime unterstützen, kompilieren nicht auf Maschinencode, sondern auf die sogenannte Intermediate Language (IL). Zusätzlich zur IL wird noch Metadata generiert, die den Code beschreibt. Die IL und Metadata erlauben es der Runtime, den Code verschiedener Sprachen miteinander direkt kommunizieren zu lassen, als auch strikte Sicherheit (security) und Typsicherheit (type safety) zu garantieren.

Ein "extremer" Ausfluß der Runtime ist, daß ich ein Objekt in C# schreiben kann, von diesem in VB ableite, und schließlich wieder in C# verwende. Mit COM war das nicht möglich, ganz zu schweigen von den C++ Compilern, wo C++ DLL's eines Compilerherstellers mit denen eines anderen nicht kompatibel sind.

Ein weiteres "cooles" Feature ist der Garbage Collector. Ich deklariere und verwende Variablen, und wenn mein Programm sie nicht mehr braucht, wird der Speicher, den sie belegen automatisch freigegeben. Diese Freigabe erfolgt allerdings nicht immer sofort, sondern eine kleine Zeitspanne ist dazwischen - deshalb ist es wichtig, Resourcen, die "teuer" sind (zB Datenbankverbindungen), explizit zu schließen. Obwohl dies bereits jetzt der "gute Ton" war, wird es in Zukunft noch wichtiger werden.

Der Ausdruck Intermediate Language wird bei einigen den schalen Nachgeschmack der Langsamkeit hinterlassen haben. Dem ist aber dank hervorragender JIT (just in time) Compiler nicht so - der IL Code wird bei Erstausführung auf Native Code kompiliert. Ab diesem Zeitpunkt wird nur noch der Native Code ausgeführt. Der Geschwindigkeitsunterschied zu "normal" kompiliertem C++ sollte üblicherweise deutlich kleiner als 5 Prozent sein.

Das .NET Framework

Sie wollten immer schon eine schier unendliche Bibliothek an Funktionen zu Ihrer Verfügung haben? Dann ist das .NET Framework genau das, auf das Sie gewartet haben. Hier finden Sie hunderte Klassen, von Collections bis hin zur Serviceprogrammierung, vom Windows Applikationsframework hin zu den Web Frameworks für ASP.NET.

Man kann stundenlang in der Dokumentation herumbrowsen ohne auch nur annähernd alles gesehen zu haben. Diese Stunden sind hervorragend investiert, weil man lernt über Klassen, die einem später möglicherweise sogar Tage an Entwicklungsaufwand ersparen können - von denen man ohne browsen möglicherweise nichts gewußt hätte.

Das .NET Framework enthält auch die Datentypen, die in C# als Basisdatentypen zur Verfügung stehen. Also wenn Sie sich über "einfache" Datentypen wie Integer informieren möchten, dann finden Sie diese im System Namespace der Dokumentation.

Schlußbemerkung

Dieser Artikel war wirklich der kürzeste Überblick über C# und das Microsoft .NET Framework, der noch informativ sein kann. Wie in der Einleitung bereits bemerkt, soll der Artikel das Interesse wecken, sich frühzeitig mit dieser neuen Technologie auseinanderzusetzen. Es werden weitere Artikel zur Programmierung von ASP.NET mit C# auf AspHeute folgen.

Zum Abschluß noch eine schamlose Werbung: das Buch Presenting C# enthält zwei Kapitel, die sich nur mit C# und dem .NET Framework im Detail auseinandersetzen.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

C# XML-Kommentare — Dokumentation von selbst
http:/www.aspheute.com/artikel/20020730.htm
Datenbankzugriff mittels ADO.NET
http:/www.aspheute.com/artikel/20001102.htm
Datentypen in C#
http:/www.aspheute.com/artikel/20000726.htm
Die String Klasse in C#
http:/www.aspheute.com/artikel/20000803.htm
Einführung: C#-Klassen in ASP.NET
http:/www.aspheute.com/artikel/20001012.htm
Einstieg in Visual Studio.NET - die erste Webanwendung mit Visual C#
http:/www.aspheute.com/artikel/20031010.htm
Kontrollstatements in C#
http:/www.aspheute.com/artikel/20000714.htm
Last but not least - .NET 1.0 ist da!
http:/www.aspheute.com/artikel/20020117.htm
Schleifenbefehle in C#
http:/www.aspheute.com/artikel/20000717.htm
Sprachenintegration in .NET
http:/www.aspheute.com/artikel/20011010.htm
Was ist neu in ASP.NET
http:/www.aspheute.com/artikel/20000712.htm
Web Services 101 in ASP.NET
http:/www.aspheute.com/artikel/20010621.htm

Links zu anderen Sites

Die aspDEdotnet Diskussionsliste
http://www.aspgerman.com/aspgerman/listen/anmelden/aspDEdotnet.asp
Introducing C#
http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp
Presenting C#
http://www.amazon.com/exec/obidos/ASIN/0672320371/alphasierrapapa

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.