
C# ist eine kompilierte, statisch typisierte, objektorientiere, funktionale und aspektorientierte Programmiersprache. Die Entwicklung begann im Jahr 1999 geleitet durch den bei Microsoft angestellten dänischen Programmierer Anders Hejlsberg. Im darauffolgenden Jahr wurde C# auf Microsofts Professional Developers Conference vorgestellt. Die Version C# 1.0 erschien im Jahr 2002. Seit 2003 ist C# ISO-standardisiert.
Der Name der Sprache, „C Sharp“, bezieht sich auf das Zeichen ♯ (Kreuz, Englisch: Sharp) aus der Notenschrift, das den Grundton einer Note um einen Halbton erhöht. Dies ist eine Anspielung auf die Sprache C++.
Alleinstellungsmerkmale
C# muss sich seit seiner Vorstellung 2002 mit der Sprache Java messen. Tatsächlich sind die beiden Sprachen relativ ähnlich, so dass ein Umstieg von der einen auf die andere Sprache verhältnismäßig einfach fällt. Dennoch haben sie sich im Laufe der Jahre weiter auseinanderentwickelt und C# bietet so einige Sprachkonstrukte, die Java zum jetzigen Zeitpunkt noch nicht beherrscht.
Das wesentliche Merkmal von C# ist die gute Integration in Microsoft .NET (dotnet). Das ursprüngliche .NET-Framework war eine Middleware zur Entwicklung von Windows-Anwendungen mit diversen Schnittstellen zum Betriebssystem. Mittlerweile ist .NET aber ein Sammelbegriff für verschiedene Plattformen und Technologien.
Einsatzbereiche
C# ist die wohl verbreitetste Programmiersprache zur Entwicklung mit .NET. Daneben werden zurzeit offiziell F# und Visual Basic unterstützt. Weitere Sprachen wie C++ bieten ebenfalls viele Interaktionsmöglichkeiten.
ASP.NET Core Blazor ist eine Technologie, die es unter dem Einsatz von WebAssembly ermöglicht, interaktive Webanwendungen zu entwickeln, in denen anstelle von JavaScript C# zum Einsatz kommt.
.NET MAUI (Multi-platform App UI), früher Xamarin, ist eine Plattform zur Entwicklung von Apps in C# für verschiedene Zielplattformen, zurzeit Android, iOS, macOS, Windows und Tizen.
.NET bietet eine gute Integration mit der Azure-Cloud. ML.NET ist ein Machine-Learning-Framework. .NET adressiert auch die Entwicklung auf Mikrocontrollern und Einplatinencomputern mit den .NET IoT Libraries, dem .NET nanoFramework und der Plattform Meadow.
Die Game Engine Unity verwendet C# als Skriptsprache und ermöglicht die Entwicklung von Spielen für verschiedene Zielplattformen wie PlayStation, XBox und Nintendo-Konsolen.
Genau wie Java ist C# auch im B2B-Bereich verbreitet. Als Pendant zur auf Windows beheimateten .NET-Plattform gibt es die offene Implementierung Mono, die auf Linux und MacOS läuft. Bekannte in C# geschrieben Clientanwendungen sind der Windows-Paketmanager Chocolatey und der Passwortmanager KeePass.
Pros
C# ist eine relativ einfach zu erlernende Sprache. Dabei muss man viele der fortgeschrittenen Sprachkonstrukte nicht von Anfang an beherrschen. Die Sprache ist sehr gut und ausführlich dokumentiert, hat eine sehr große Entwicklergemeinschaft und wird aktiv weiterentwickelt. Dass dies auch zukünftig weiter so passiert, ist mit Microsoft im Rücken ziemlich sicher.
C# hat eine automatische Speicherbereinigung, erlaubt aber auch den Einsatz von Zeigern in speziellen unsafe
Code-Abschnitten. Wie im Bereich Einsatzgebiete dargestellt, ist C# hervorragend ins Microsoft-Ökosystem integriert.
C# bietet, vor allem im Vergleich zu Java, viele interessante Features und syntaktischen Zucker. Es gibt String Interpolation, den Null-Conditional-Operator, Nullable Types, Unsigned Types, Typinferenz, Ranges und Indices, Generics, Records und Attributes (Annotationen, Metadaten). Als funktionale Features gibt es Delegates (Zeiger auf Methoden), also First-Class Functions, mit denen sich auch Closures realisieren lassen, Lambdas, List Comprehension, Extension Methods und Switch Expressions. Zur asynchronen Programmierung bietet C# wie man es aus JavaScript kennt, die Schlüsselwörter async
und await
.
Cons
C# hat zum jetzigen Zeitpunkt fast 120 Schlüsselwörter. Auch wenn der Einstieg in die Sprache leicht fällt, so ist die Sprache in ihrer Gesamtheit doch sehr umfangreich, wenn man sie vollständig verstehen und verwenden möchte.
Microsoft hat in der Vergangenheit beim Betriebssystemwechsel mehrfach die Unterstützung für alte .NET-Versionen abgekündigt und regelmäßig neue Frameworks eingeführt. C#-Anwendungen, die von .NET stark Gebrauch machen, haben daher unter Umständen eine deutlich kürzere Halbwertszeit, als z.B. Java-Anwendungen, die bis auf wenige Ausnahmen auch noch auf Jahre später entwickelten Versionen der JVM-Plattform lauffähig sind.
C# ist zwar mittlerweile – wie übrigens alle bisher von mir vorgestellten Programmiersprachen – auf verschiedenen Plattformen lauffähig, allerdings ist die Mono-Plattform noch nicht so ausgereift wie .NET auf Windows und es gibt Einschränkungen bei der Entwicklung von Linux- und MacOS-Anwendungen. Die aktuelle Version 6 von .NET kann auch nativ auf Linux installiert werden, bildet aber nicht die Gesamtheit der Plattform ab. So ist .NET für Linux aktuell eher auf Server-/Terminalanwendungen fokussiert. Frameworks wie WPF (Windows Presentation Foundation) zur Entwicklung graphischer Benutzeroberflächen werden nicht unterstützt. Was die Zukunft genau bringt, ist ungewiss. Die Lage ist zurzeit mindestens undurchsichtig.
Datenblatt
Name | C# |
Webseite | https://docs.microsoft.com/en-us/dotnet/csharp/ |
Erscheinungsjahr | 2000 |
Aktuellste Version (Stand 18. September 2022) | Version 10.0 vom 8. November 2021 |
Typisierung | statisch |
Paradigmen | imperativ objektorientiert funktional aspektorientiert |
Pros | Cons |
---|---|
leicht zu erlernen | viele Breaking Changes im .NET-Ökosystem |
gute Dokumentation | cross-platform mit Einschränkungen |
große Community, weit verbreitet | sehr umfangreich (fast 120 Schlüsselwörter) |
automatische Speicherbereinigung, aber Option für unsafe Code | |
vielseitige Sprachkonstrukte und syntaktischer Zucker |
virtuallet
virtuallet ist ein kleines Programm von mir, welches ich in diversen Programmiersprachen implementiert habe. Hier geht es direkt zum C#-Code von virtuallet auf GitLab. Hier gibt es weitere Infos zu virtuallet.