C++.NET unterschiedlicher als C++?



  • Abend,

    wie der Threadname schon fragt. Unterscheiden die 2 sich soo von einander?
    Hab nämlich ein VC++ 2008 Buch gekauft und dort wird C++.NET beschrieben bzw. beigebracht.

    Jedoch will ich mich nicht von M$ abhängig machen. Da ich auch ein MacBook habe und dort mit XCode C++ programmieren will. Ich hab schon was über den DotNet-Boom gelesen, jedoch bin ich nicht so ein großer Fan von Microsoft (M$)...

    Lg Mentras



  • C++.NET gibt's nicht, es gibt bloss C++/CLI.
    C++/CLI ist 99.9% kompatibel zu ISO C++.
    Umgekehrt ist es gänzlich anders, da C++/CLI viele Erweiterungen bietet - um eben C++ mit dem ganzen .NET Gedöns zusammenzuknoten.

    Wenn du C++ lernen willst, dann solltest du nicht ein Buch verwenden, in dem C++/CLI verwendet wird.

    Der MSVC 2008 ist dennoch gut geeignet, denn du musst in deinen Projekten den C++/CLI Support ja nicht einschalten. Dann erlaubt der Compiler auch keine C++/CLI Konstrukte/Erweiterungen. Bzw. zumindest die meisten nicht (einige wie "foreach" gehen trotzdem, wenn man nicht allgemein die Sprach-Erweiterungen deaktiviert, was man auch aber kann -- bloss kann man dann nichtmal mehr windows.h inkludieren).



  • Welches Buch ist es denn?



  • Einstieg in VC++ 2008 von Andre Willms (Galileocomputing)

    Danke hustbaer für die Erläuterung!



  • BTW: ich kenne das Buch nicht. Wenn in deinem Buch kein "^" im Code vorkommt ( System::String^ blah etc.), dann wird auch kein C++/CLI verwendet. Dann kannst du das Buch ruhig verwenden.



  • Teil 1 von dem Buch behandelt ANSI C++. Erst im Teil 2 wird C++/CLI durchgenommen.



  • this->that schrieb:

    Teil 1 von dem Buch behandelt ANSI C++. Erst im Teil 2 wird C++/CLI durchgenommen.

    Genau,... Daweil bin ich noch beim ANSI C++,...
    Das heißt, wenn ich das alles richtig verstanden habe. Ist C++/CLI von Microsoft? und in wie fern unterscheiden die sich in der Syntax von einander bzw. die Befehle sollten ja dann anders heißen oder nicht? Oder sind dort mehr Befehle und beim anderen weniger? *etwasverwirrt*

    Lg Mentras



  • Mentras schrieb:

    Das heißt, wenn ich das alles richtig verstanden habe. Ist C++/CLI von Microsoft?

    Jopp. Ist allerdings ein offizieller Standard (Ecma soweit ich weiss). Und ich vermute mal auch nicht geschützt. Obwohl es fraglich (wenn auch durchaus denkbar) ist, ob es in naher Zukunft andere Implementierungen als die von Microsoft geben wird.

    und in wie fern unterscheiden die sich in der Syntax von einander bzw. die Befehle sollten ja dann anders heißen oder nicht? Oder sind dort mehr Befehle und beim anderen weniger? *etwasverwirrt*

    Eher zweiteres. In C++/CLI kannst du fast alle ISO C++ Programme 1:1 kompilieren. Du verwendest dann eben einfach keine "neuen" Features. Du kannst in C++/CLI aber auch Code schreiben, der Dinge wie die Garbage-Collection verwendet, oder andere .NET typische Sachen wie Delegates, Properties etc. Und natürlich kann man munter mischen.

    Und vor allem - was die Sprache interessant macht: du kannst in C++/CLI Klassen schreiben, die ganz normale .NET Klassen sind, und auch von anderen .NET Programmen (unabhängig davon in welcher Sprache sie geschrieben sind) verwendet werden können. Und dabei trotzdem für die Implementierung dieser Klassen auf "gutes altes C++" zurückgreifen. Was u.A. das Aufrufen von Betriebssystem-Funktionen oder Third-Party-Libraries extrem vereinfacht. Hier sehe ich auch den grössten Nutzen von C++/CLI: man kann relativ einfach eine Brücke zwischen "managed" (.NET) und "unmanaged" (C, C++, OS-Funktionen, ...) Code schlagen.

    Und natürlich kannst du das gesamte .NET Framework nutzen.

    Kurz gesagt: C++/CLI ist eine Erweiterung von C++.

    ----

    Das klingt jetzt alles ganz toll, aber in Wirklichkeit ist es leider viel weniger toll, als man annehmen möchte. Der ganze .NET Support verpasst der Sprache ein zusätzliches Level an Komplexität, welches für einen Anfänger meiner Meinung nach eher schädlich ist. Weiters muss man an den Punkten wo man von "C++ Code" zu ".NET-artigem Code" wechselt z.T. recht hässliche Konstrukte verwenden.

    C++/CLI ist meiner Meinung nach im Moment die komplexeste einzelne Sprache (wenn man sie vollständig beherrschen will, also jedes Sprachfeature zumindest kennen und verstehen möchte, und alle "üblichen Fallstricke" kennen möchte).

    ----

    Normale Programme in C++/CLI zu schreiben, "nur" damit man das .NET Framework nutzen kann (was IMO meist der einzige Punkt ist, der vom ".NET Teil" wirklich verwendet wird), ist für mich der Totale Wahnsinn (tm). Ich weiss nicht wer damit angefangen hat, zu verzapfen, dass das eine Tolle Idee (tm) wäre, aber ich würde ihm (oder ihr) dafür gern eins in die Fresse hauen.

    Wenn du .NET willst, dann lern C#. C# ist bei weitem weniger komplex als C++, d.h. auch viel schneller zu erlernen. Und erst recht viel schneller zu lernen als C++/CLI. Wenn du C++ lernen willst, dann bleib bei ISO C++. Wenn du dann später C++/CLI zusätzlich lernen willst, wäre es IMO auch der bessere Weg, zuerst gut C# zu lernen, und DANN erst, wenn du schon C# und C++ kannst, Gehversuche mit C++/CLI zu machen.

    Einige Dinge in C++/CLI wirst du nämlich erst verstehen, wenn du die "unmanaged Welt" sowie die "managed Welt" beide ausreichend kennst und verstehst. Und speziell eben gut C++ kannst. Ohne diesen Background werden dir viele Dinge in C++/CLI total bescheuert vorkommen, bzw. einfach unverständlich sein ("warum hat man das so gemacht, ginge anders viel einfacher" etc.). Hier hat man quasi Wasser mit Öl verheiratet. Und vor allem erst nach dem ersten Kind verheiratet: der C++ Standard war ja schon da, und musste nahezu unverändert übernommen werden, sonst wäre das ganze Unterfangen witzlos gewesen. Das Ergebnis ist zwar so schön wie es unter diesen Voraussetzungen nur sein kann, aber eben nicht schöner.



  • hustbaer deine antworten sind zu lang, pass mal im deutschunterricht besser auf wie man ne text zusammenfassung macht 😃 😃



  • pustbaer schrieb:

    hustbaer deine antworten sind zu lang, pass mal im deutschunterricht besser auf wie man ne text zusammenfassung macht 😃 😃

    aha



  • hustbaer schrieb:

    ... lange Antwort ...

    100% ACK!!



  • pustbaer schrieb:

    hustbaer deine antworten sind zu lang, pass mal im deutschunterricht besser auf wie man ne text zusammenfassung macht 😃 😃

    Ach, das passt schon. Fand die Erklärung ehrlich gesagt ziemlich gut! 👍

    Eigentlich will ich mich nicht in die .Net-World reinsteigern.
    Dann müsste ich mir ein anderes Buch kaufen, wobei das jetztige Buch kann ich ja noch bis zur Hälfte lesen 🙂

    C++ aufhören?

    Niemals, ich finde die Sprache hat etwas ansich. Es ist das knifflige Denken, dass mich so anreizt. Bei Visual Basic hat quasi die IDE mir den ganzen Code geschrieben, beim Eintippen des Buchstaben, kam sofort das Intelli-Sense und vervollständigte meinen Code, dazu kam noch das für jeden Befehl im Intelli-Sense es eine Beschreibung gab.

    Im Gegensatz zu VC++ (Die IDE) ist das Intelli-Sense auch umfangreich, jedoch beschreibt er mir die Befehle nicht! Er gibt mir höchstens die Anzahl der Parameter an und das find ich krass! Da guckt man schnell im Internet nach, sucht sich die Beschreibung und merkt sie sich.

    Zu C# wechseln würd ich ungern. Eine .Net Sprache kann ich - wobei das vorsichtig zu benutzen ist, können tut man nie etwas. Man kann sich nur verbessern.

    Danke nochmal hustbaer für deine gute Erklärung!

    Lg Mentras


Anmelden zum Antworten