C++ ist nicht C# - schon gar nicht, wenn man ASP.NET programmieren möchte

Der Dotnet-Doktor  –  2 Kommentare

Den Lesern meiner .NET-Bücher geben ich über meine .NET Framework-Website die Möglichkeit, Feedback zu meinen Büchern zu geben und mutmaßliche inhaltliche Fehler zu melden.

Ein Softwareentwickler von T-Systems meldete heute unter dem Titel "Visual Studio 2005 ist nicht Visual Studio 2005", dass er "Visual Studio 2005" installiert habe, aber damit keine ASP.NET-basierten Webanwendungen entwickeln könne, denn ihm stehe nicht einmal wie auf Seite 58 in meinem Buch ASP.NET mit C# 2005 beschrieben, die Funktion "Datei/Neu/Website" zur Verfügung. Seine Beschwerde bezog sich darauf, dass es offenbar verschiedene Editionen von Visual Studio gäbe und ich im Buch nicht klar gemacht hätte, welche Version er installieren müsse, damit er das Buch benutzen kann. Er habe deshalb zu "Visual Studio .NET 2003" gewechselt".

Zum Glück für mich stand die verwendete Version (Visual Studio Team Suite) aber schon auf Seite 33 im Buch, sodass es sich zumindest um keinen Fehler im Buch handelt. Es blieb aber die Frage, was denn der Softwareentwickler installiert hatte. Im folgenden Maildialog sendete er mir dann einen Screenshot, auf dem ich sehen konnte, dass es Visual C++ (!) Express 2005 war.

Diese Geschichte erzähle ich nicht, um zu beweisen, das mein Buch fehlerfrei ist (Es gibt sicherlich Fehler in einem 1150-seitigen Buch), sondern weil sich daraus die Frage (und hier intern eine Diskussion) ergab, ob C++ und C# gleichwertig und austauschbar sind.

Die Antwort muss "Nein" lauten:

  • Visual C++-Compiler ist der einzige Microsoft Compiler in Visual Studio 2005 und Visual Studio 2008 ist, der noch direkt Maschinencode (Native Code/Unmanaged Code) erzeugen kann. C++ kann wahlweise Native Code oder über die C++/CLI-Syntax Managed Code erzeugen. Alle anderen Compiler erzeugen nur Managed Code. C++ kann sogar Native Code und Managed Code in einer DLL mischen.
  • Mit C++ kann man immer noch hardwarenäher programmieren, z.B. in den Bereich Multi-Threading (z.B. OpenMP) und Treiber.
  • Andersherum können einige Programmiergebiete von .NET bisher nicht in C++ genutzt werden, dazu gehören insbesondere Webanwendungen mit ASP.NET und die Erstellung von Stored Procedures/Triggern und Funktionen in .NET-Code mit der SQLCLR innerhalb des Microsoft SQL Server 2005.
  • Bei Online-Buchhändler Amazon genau gibt es englische Bücher zu C++/CLI und genau 0 deutsche Bücher. Zu C# gibt es seitenweise Literatur. Das allein ist für viele ein Grund, nicht C++/CLI zu verwenden.
  • Die Syntax von beiden Sprachen - trotz der Annäherung bei der Umstellung von Managed C++ auf C++/CLI - in beiden Sprachen immer noch so verschiedenen, dass man sich nicht ein C#-Buch kaufen sollte, wenn man bei der C++-Syntax bleiben will. Ich persönlich finde C# wesentlich eleganter und prägnanter.

Bei unseren Kunden ist das Interesse an C++/CLI übrigens schon höher als es der Buchmarkt ausdrückt, denn viele Kunden wollen Ihre bestehende C++-Codebasis in der .NET-Welt mit C# weiterverwenden. Für die Interoperabilität zwischen Managed Code und Native Code ist C++/CLI geradezu ideal.

P.S. Übrigens ist die Installation von Visual Studio .NET 2003 keine Alternative, wenn man ein ASP.NET 2.0-Buch vor sich hat. Mit der alten Version der IDE kann man fast gar nichts von ASP.NET 2.0 machen.