C# oder Visual Basic? Die richtige Programmiersprache für .NET-Entwickler

Werkzeuge  –  Kommentare

Wie die Überschrift des Artikels zum Ausdruck bringt, handelt es sich fast schon um einen Glaubenskrieg in der .NET-Entwicklergemeinde um die Wahl der "richtigen" Programmiersprache. C# oder Visual Basic heißt die Frage, die schon viele Projektteams bewegt hat. Immer häufiger scheint C# zu gewinnen, dabei ist Visual Basic gar nicht weniger leistungsfähig, sondern nur mit dem schlechten Ruf aus der Vergangenheit belastet.

10 wichtige Fragen zu .NET

In dieser zehnteiligen Serie liefert .NET-Experte Holger Schwichtenberg Antworten auf die am häufigsten gestellten Fragen, die .NET-Entwickler beschäftigen.

  1. Reicht .NET 2.0, oder muss man .NET 3.5 einsetzen?
  2. C# oder Visual Basic? Die richtige Programmiersprache für .NET-Entwickler

Während die Programmiersprache Java in den 1990er-Jahren mit dem Leitsatz "Eine Sprache für alle Plattformen" angetreten ist, zielte Microsoft zunächst mehr auf "Eine Plattform für alle Sprachen" ab. Von Anfang an stand die Integration zahlreicher Programmiersprachen im .NET-Mittelpunkt. Inzwischen weichen die gegensätzlichen Positionen von Java und .NET auf: Es gibt .NET-Laufzeitumgebungen für andere Plattformen, und es gibt Compiler für andere Programmiersprachen, die auch Java-Bytecode erzeugen können.

Insgesamt existieren mittlerweile über 50 Programmiersprachen für .NET. Darunter sind nicht nur objektorientierte Sprachen wie C#, Java, C++, Visual Basic (VB) und Delphi, sondern auch funktionale wie SML (Standard ML), Caml und Haskell sowie "alte Tanten" wie Fortran und Cobol vertreten. Es gibt sowohl kommerzielle als auch kostenlose Implementierungen. Eine ständig aktualisierte Liste der .NET-Programmiersprachen findet man unter dotnetframework.de.

Wirklich bedeutend sind nur C# und Visual Basic (.NET). Mit deutlichem Abstand folgt C++/CLI, die C++-Variante für .NET, die vor allem für die Migration von C++-Code nach .NET und die Integration bestehenden C++-Codes in .NET-Projekte wichtig ist. F#, Microsofts neue Mehrparadigmen-Sprache, die sich vor allem durch funktionale Konstrukte von C# abhebt, könnte an Bedeutung gewinnen, da Microsoft sie ab Visual Studio 2010 mit der Entwicklungsumgebung ausliefert.

Visual Basic mit und ohne .NET

Visual Basic hat eine lange Tradition in der Windows-Entwicklerwelt. Die Sprache galt in den Versionen 1.0 bis 6.0 als einfach und sehr produktiv, war aber gleichzeitig als unsauber und unstrukturiert verpönt (gerade bei Entwicklern, die mit C++, Delphi oder Java gearbeitet haben). Visual Basic 6.0 war allenfalls eine objektbasierte Sprache. Es fehlten insbesondere Konstrukte zur Implementierungsvererbung.

Mit dem Wechsel von Visual Basic 6.0 zur Version 7.0 hatte Microsoft jedoch einen radikalen Wandel vollzogen. Die neue Version wurde eine echte objektorientierte Sprache mit Vererbung, fast ebenso mächtig wie das gleichzeitig neu entwickelte C#. Bis zur aktuellen 9.0-Release gab es weitere Angleichungen, zum Beispiel Operatorüberladung. Eine Aussage von COM- und .NET-Guru Don Box über VB 7.0, die bereits aus dem Jahr 2001 stammt, sei an dieser Stelle zitiert: "Visual Basic .NET bedeutet, dass man sich nicht länger schämen muss, ein VB-Entwickler zu sein!" Microsoft hat bei VB.NET ganz bewusst auf die Kompatibilität mit der VB-6.0-Vorgängerversion verzichtet und nahm aus zwei Gründen Inkompatibilität hin:

  1. Man bereinigte alle Funktionen aus VB 6.0, die signifikante Verwirrung bei den Entwicklern stifteten.
  2. Man änderte oder entfernte alle Features aus VB 6.0, die nicht kompatibel mit dem .NET Framework waren.

Etwas konfus war die Namensgebung. Aus Visual Basic 6.0 wurde Visual Basic .NET 7.0. Jedoch verzichtet Microsoft seit Version 8.0 in .NET 2.0 wieder auf den Zusatz .NET, sodass die Versionen seitdem Visual Basic 8.0 (alias Visual Basic 2005) und Visual Basic 9.0 (alias Visual Basic 2008) heißen. Die offizielle Begründung war, dass es nun hinlänglich bekannt sei, dass die neuen Versionen auf .NET basieren. Zu vermuten ist jedoch, dass dies eher passiert ist, um den Widerstand einiger Entwickler zu brechen, die nicht von Visual Basic 6.0 auf .NET umsteigen wollten. Befürchten kann man nur, dass – nachdem Microsoft eine Zeit lang die Buchstaben .NET auf alles geklebt hat, egal ob .NET drin war oder nicht – nun das Ruder in das andere unvernünftige Extrem umschlägt.

Seit dem Wegfall von ".NET" im Namen ist es nicht leicht, in der Schriftsprache zwischen dem "alten" Visual Basic (Versionen 1.0 bis 6.0) und dem neuen (Versionen ab 7.0) zu unterscheiden. Es bietet sich an, vom "klassischen Visual Basic" oder "COM-basierten Visual Basic" im Kontrast zum ".NET-basierten Visual Basic" zu sprechen. Als Alternative ginge auch "Visual Basic (.NET)".

C# als C++++

C# ist eine Programmiersprache, die Microsoft neu für das .NET Framework entwickelt hat. Das "#" könnte man in ein vierfaches Pluszeichen aufspalten (also C++++). Vor allem C++ und Java haben C# konzeptionell beeinflusst; es lassen sich aber auch Parallelen zu Visual Basic und Delphi finden.

C# ist das Ergebnis eines Projekts, das Microsoft startete, nachdem Sun Microsoft Ende der 1990er-Jahre die Weiterentwicklung von J++, einer Microsoft-eigenen Anpassung des von Sun entwickelten Javas, verboten hatte. "Vater" von C# ist Anders Hejlsberg, der zuvor Entwickler von Turbo Pascal und Borlands Delphi war. Inzwischen ist C# bei der ECMA (ECMA Standard 334, Arbeitsgruppe TC39/TG2) und bei der ISO (ISO/IEC 23270) standardisiert.

Hinsichtlich der Versionsnummern von C# herrscht etwas Verwirrung. Es gibt einerseits eine offizielle Zählung mit Versionsnummer (parallel zum .NET Framework), andererseits mit Jahreszahlen (parallel zu Visual Studio). Intern verwenden die Entwickler eine dritte Zählung für den Compiler. Die erste Version von C# im Rahmen des .NET Framework 1.0 trug intern die 7.0. Zu .NET 1.1 gab es dann C# 7.1, im .NET Framework 2.0 und 3.0 meldet sich der C#-Compiler mit Version 8.0. Das .NET Framework 3.5 enthält den Compiler in der Version 9.0. Offiziell zählt Microsoft dennoch die Versionsnummern von C# analog zu denen des Frameworks – ausgenommen im .NET Framework 3.5. Darin ist C# 3.0 (alias C# 2008) enthalten.

Tabelle 1: C# hat drei unterschiedliche Versionsnummern