milou: Visual C++, C++, C#

Hallo.
Wo liegt der Unterschied zwischen C++ und Visual C++ genau.
Visual sagt mir ja das es was visuellees sein muss.
Hat VC++ eine ganz andere Syntax oder hat man einfach nur eine andere Entwicklungsumgebung?
Ich habe hier mehrere C++ Kompendien und ein Visual "DirektX 9 und C++"-Kompendium da.
Ich denke Zweiteres dient der Spieleprogrammierung.

Auf jeden Fall ist mein Ziel kleine Tools zu programmieren. Stapelverarbeitung und so weiter, diese sollten auch eine Oberfläche haben.

Was empfehlt ihr mir?

Oder sollte ich C++ garnicht erst lernen?

Habe bisher nur ganz kleine Anfangskenntnisse.
Ich mache seit vieeelen Jahren XHTML, CSS, PHP, JS und habe gehört das sich die PHP Syntax sehr an C anlehnen würde.

Wo ist der große Unterschied zwischen C und C++?
Wenn ich C++ "kann", ist es dann kein Problem "schnell" auf C# umzusteigen(weil ich für Webprojekte dann vllt gerne mal ASP C# benutzen würde).

Wie seht ihr die Zukunft der C-Varianten?

Liebe Grüße,

Milou

  1. Hi,

    Wo liegt der Unterschied zwischen C++ und Visual C++ genau.

    ganz kurz auf den Punkt gebracht: C++ ist eine Programmiersprache, "Visual C++" ist eine Software - nämlich eine Entwicklungsumgebung von Microsoft für C++, die außer dem Compiler noch eine Menge anderer Werkzeuge enthält.

    Visual sagt mir ja das es was visuellees sein muss.

    Gewissermaßen, ja. Man kann mit VC++ große Teile des Projekts mit einer graphischen Oberfläche zusammenstellen und muss den Code nicht komplett selbst von Hand schreiben.

    Ich habe hier mehrere C++ Kompendien und ein Visual "DirektX 9 und C++"-Kompendium da.
    Ich denke Zweiteres dient der Spieleprogrammierung.

    Hauptsächlich - obwohl DirectX auch für andere Dinge gut sein kann, etwa Video/Audio-Anwendungen.

    Oder sollte ich C++ garnicht erst lernen?

    Doch, das würde ich dir schon empfehlen. C/C++ ist immer noch eine sehr weit verbreitete Sprache, auch wenn sie in den letzten 10 Jahren geringfügig an Bedeutung verloren hat.

    [...] habe gehört das sich die PHP Syntax sehr an C anlehnen würde.

    Ja, das ist zum großen Teil so.

    Wo ist der große Unterschied zwischen C und C++?

    Traditionelles C hat keine Unterstützung für objektorientiertes Programmieren in der Sprache verankert, während C++ zwar auf C basiert und auch zu C "abwärtskompatibel" ist, aber speziell auf OOP zugeschnitten ist.
    Das soll nicht heißen, dass man mit reinem C nicht objektorientiert programmieren könnte - denn OOP ist vor allem eine Denkweise, die man im Prinzip mit jeder Programmiersprache umsetzen kann. Aber C++ unterstützt das eben durch viele Sprachkonstrukte.

    Wenn ich C++ "kann", ist es dann kein Problem "schnell" auf C# umzusteigen(weil ich für Webprojekte dann vllt gerne mal ASP C# benutzen würde).

    Weiß ich nicht, ich kenne C# selbst nicht. Ich habe aber vom Hörensagen her den Eindruck, dass C# sich eher an Java orientiert.

    Wie seht ihr die Zukunft der C-Varianten?

    In bestimmten Anwendungsbereichen (z.B. Systemprogrammierung, Automatisierung, µC-Technik) auch auf Jahre hinaus nicht wegzudenken; im Anwendungs- und GUI-Bereich bekommen sie langsam Konkurrenz; in anderen Bereichen wie etwa der Web-Programmierung sind sie gar eher Exoten.

    So long,
     Martin

    --
    Was du heute kannst besorgen,
    das geht sicher auch noch morgen.
    1. Mahlzeit,

      in anderen Bereichen wie etwa der Web-Programmierung sind sie gar eher Exoten.

      Allerdings sind gerade die Exoten Hochlastsysteme. Und deren Entwicklung ist auch wieterhin ein Faktor, den ein Programmierer wirtschaftlich nicht iognorieren darf.
      Als Beispiel wäre da Google, Ebay, Chat.de und viele andere Portale, die durch die Verwendung von C/C++ weniger Ressourcen brauchen als mit anderen Techniken und dadurch Geld einsparen.

      Exoten stimmt also, aber trotzdem nicht zu vernachlässigen, weil diese Art von Anwendungen in den nächsten Jahren weiter an Bedeutung gewinnen werden.

    2. Traditionelles C hat keine Unterstützung für objektorientiertes Programmieren in der Sprache verankert, während C++ zwar auf C basiert und auch zu C "abwärtskompatibel" ist, aber speziell auf OOP zugeschnitten ist.

      Wie meinst du denn in diesem Zusammenhang "abwärtskompatibel"? C++ hat Syntaxkonstrukte, die in C Syntaxfehler sind. Meinst du eventuell eher, dass C "aufwärtskompatbibel" zu C++ ist (also C-Programme auch C++-Programme sind, ich weiß allerdings nicht, ob das überhaupt so ist)?

      --
      Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
      Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
      1. Hallo,

        [...] während C++ zwar auf C basiert und auch zu C "abwärtskompatibel" ist, aber speziell auf OOP zugeschnitten ist.
        Wie meinst du denn in diesem Zusammenhang "abwärtskompatibel"? C++ hat Syntaxkonstrukte, die in C Syntaxfehler sind. Meinst du eventuell eher, dass C "aufwärtskompatbibel" zu C++ ist (also C-Programme auch C++-Programme sind, ich weiß allerdings nicht, ob das überhaupt so ist)?

        ungefähr so, wie du es in der Klammer andeutest, habe ich es gemeint: Ein Programm in "Plain C" genügt auch den Regeln von C++ und lässt sich jederzeit auch mit einem C++-Compiler übersetzen. Umgekehrt lässt sich C++ nicht mit einem herkömmlichen C-Compiler übersetzen.
        Also ist C++ abwärtskompatibel, d.h. es schließt C als Untermenge mit ein.

        So long,
         Martin

        --
        Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
          (Gunnar Bittersmann)
        1. Hallo,

          Ein Programm in "Plain C" genügt auch den Regeln von C++ und lässt sich jederzeit auch mit einem C++-Compiler übersetzen.

          Das stimmt so pauschal nicht: Der C++-Standard verbietet implizite Casts von und zu (void *), d.h. folgende Konstruktion ist in C möglich, in C++ nicht:

          int a = 5;  
          int *p = &a;  
          void *v = p;
          

          In beiden Sprachen möglich (und korrekt) wäre:

          int a = 5;  
          int *p = &a;  
          void *v = (void *)p;
          

          Zudem definiert C++ einige neue Keywords, die C nicht kennt, d.h. folgender Stück Code wäre in C erlaubt, in C++ nicht:

          char *class = "klassenname";

          Man kann vielleicht sagen: C ist von C++ insofern eine Untermenge, als dass man alle C-Programme mit minimalem Aufwand so abändern kann, damit sie sich sowohl mit einem C- als auch mit einem C++-Compiler übersetzen lassen.

          Viele Grüße,
          Christian

  2. Moin,

    ich versuche, dass mal aufzulösen. Falls ich was vergessen, möge man mich bitte ergänzen oder korrigieren.

    Wo liegt der Unterschied zwischen C++ und Visual C++ genau.
    Visual sagt mir ja das es was visuellees sein muss.
    Hat VC++ eine ganz andere Syntax oder hat man einfach nur eine andere Entwicklungsumgebung?

    C++ ist eine Programmiersprache mit einer festen Syntax und einer Standard-API, die jeder C++ Compiler mitliefern soll.

    Visual C++ ist zum einem Microsofts Implementierung eines C++ Compiliers und der zugehörigen Standard-API. Zusätzlich kommen noch Bibliotheken für die Nutzung von Windows-Funktionen und für die grafische Oberfläche hinzu.

    Außerdem bezeichnet Visual C++ noch Microsofts IDE für C++.

    C++ selbst ist unabhängig vom Betriebssystem, C++-Programme, die nur die Standard-Funktionen nutzen, laufen auch auf Linux, Mac OS etc. Man muss Sie allerdings jeweils neu kompilieren.

    Auf jeden Fall ist mein Ziel kleine Tools zu programmieren. Stapelverarbeitung und so weiter, diese sollten auch eine Oberfläche haben.

    Was empfehlt ihr mir?

    Möglicherweise wäre für den Einstieg Visual Basic oder Java geeigneter. Oder eine Skriptsprache, z.B. Python. Java hat den Vorteil, dass die Programme mit hoher Wahrscheinlichkeit auch auf anderen Betriebssystemen funktionieren (Java VM vorausgesetzt).

    Oder sollte ich C++ garnicht erst lernen?

    C++ ist eine der weitesten verbreiteten Programmiersprachen. Daher ist ein schlechte Idee C++ zu lernen. Allerdings ist C++ auch eine der schwierigsten Programmiersprachen.

    Habe bisher nur ganz kleine Anfangskenntnisse.
    Ich mache seit vieeelen Jahren XHTML, CSS, PHP, JS und habe gehört das sich die PHP Syntax sehr an C anlehnen würde.

    Korrekt. Die Syntax von PHP ist extrem stark an C angelehnt, und PHP ist auch C implementiert. Wenn man C beherrscht, kann man sich sogar denken, wie der C-Code hinter einigen Funktionen aussieht.

    Wo ist der große Unterschied zwischen C und C++?

    C eine relativ eingeschränkte Programmiersprache (im Vergleich zu C++, Java etc.) Z.B. besitzt C keine Unterstützung für OOP (ist ist aber sehr wohl möglich in C objektorientiert zu programmieren, z.B. mit Hilfe der glib aus dem Gnome-Projekt).

    C++ ist eine Weiterentwicklung von C, die neben anderen Sachen auch die Objektorientierung beinhaltetet.

    Wenn ich C++ "kann", ist es dann kein Problem "schnell" auf C# umzusteigen

    Nein, C# hat außer dem 'C' und der generellen Syntax nicht viel mit C++ zu tun (so weit ich weiss).

    (weil ich für Webprojekte dann vllt gerne mal ASP C# benutzen würde).

    Wie seht ihr die Zukunft der C-Varianten?

    Ich persönlich mag die MS-Sachen nicht wirklich, da Sie immer auf Windows beschränkt sind - mit Ausnahmen wie z.B. .Net und Mono. Meine Empfehlung wäre, von Anfang darauf zu achten so weit wie möglich platformunabhängig zu arbeiten. Das kann z.B. mit Java erfolgen, aber auch unter Nutzung von C oder C++ und entsprechender Bibliotheken (glib, Gtk, Qt, wxWidgets...)

    Was die Zukunft der Programmiersprachen angeht, ist meine Einschätzung wie folgt: C wird sich noch lange Zeit halten, insbesondere für Hardwarenahe Programmierung (Treiber, Betriebssysteme, usw.). C++ wird auch weiterhin verbreitet sein, der Anteil wird aber nicht weiter zunehmen. Java und C# werden ihren Marktanteil halten oder ausbauen können. Eventuell werden sich neue Sprachen, wie z.B. D ein Stück von Kuchen sichern können.

    Eine gute <em>erste</em> Anlaufstelle für Informationen zu solchen Themen ist übrigens die Wikipedia, falls du dort noch nicht nachgeschaut hast.

    Gruß

    Stareagle

    1. Grüße,

      Visual C++ ist zum einem Microsofts Implementierung eines C++ Compiliers und der zugehörigen Standard-API. Zusätzlich kommen noch Bibliotheken für die Nutzung von Windows-Funktionen und für die grafische Oberfläche hinzu.

      Necrosoft Visual Studio 2005 Express bringt windows.h NICHT mit - was meinst du mit Windowsfunktionen^^?
      MFG
      bleicher

      1. Hallo,

        Visual C++ ist zum einem Microsofts Implementierung eines C++ Compiliers und der zugehörigen Standard-API. Zusätzlich kommen noch Bibliotheken für die Nutzung von Windows-Funktionen und für die grafische Oberfläche hinzu.

        Necrosoft Visual Studio 2005 Express bringt windows.h NICHT mit - was meinst du mit Windowsfunktionen^^?

        das ist ja wohl selbstverständlich. Es muss doch einleuchten, dass diese plattformabhängig und daher Bestandteil des entsprechenden SDKs ist:

        http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx

        Freundliche Grüße

        Vinzenz

        1. Grüße,

          das ist ja wohl selbstverständlich. Es muss doch einleuchten, dass diese plattformabhängig und daher Bestandteil des entsprechenden SDKs ist:

          ja - aber AFAIK ist VC (WC) ein hauseigenes Produkt von Necrosoft, das sonst alles dran setzt seine Produktion "geschlossen" zu halten - und es wäre nur logisch, wenn die Expressversion die, genauso wie die "volle", mitbringen würde - ich wusste bisher nämlich nicht, dass VC unter nichtWindows laufen könnte -
          und wenn es schon für Fensterchen gedacht ist - wäre doch zu erwarten, dass es einem das runterladen weiterer Pakete für grundlegendes Mist erspart, oder?

          Das passt IMHO zur WindowsMediaschinder&Co Strategie einfach nicht...

          MFG
          bleicher

          1. Hi,

            (...) ich wusste bisher nämlich nicht, dass VC unter nichtWindows laufen könnte (...)

            was meinst Du damit? Wenn Du damit sagen willst, VC würde demgemäß auch, sagen wir z.B. unter Wine oder ReactOS laufen, dann wäre mir das neu, und ich wäre an Details interessiert! ;-)

            und wenn es schon für Fensterchen gedacht ist - wäre doch zu erwarten, dass es einem das runterladen weiterer Pakete für grundlegendes Mist erspart, oder?

            Das passt IMHO zur WindowsMediaschinder&Co Strategie einfach nicht...

            Es dürfte darum gehen, den Entwicklern das Erstellen von sog. "sicheren", "verwalteten" .NET-Anwendungen nahezulegen. (Im Gegensatz zu nativen Anwendungen.) Die Express-Editions bringen m.W. alles mit, um .NET-Anwendungen zu erstellen.

            Viele Grüße
            Def

            1. Grüße,
              SDK Päckchen braucht mehr platz als mein Laptop übrig hat - VC Professional würde da gar nicht draufpassen - und nun brauche ich NUR die Funktionalität von windows.h - was soll ich jetzt machen? Kann man diesen einzelnen Header einzeln hinzufügen?

              und ja - ich würde ein anderes IDE nutzen - wenn es nicht die Vorschrift gäbe - dass man mit VS arbeiten soll.

              MFG
              bleicher

          2. Hallo,

            das ist ja wohl selbstverständlich. Es muss doch einleuchten, dass diese plattformabhängig und daher Bestandteil des entsprechenden SDKs ist:

            ja - aber AFAIK ist VC (WC) ein hauseigenes Produkt von Necrosoft, das sonst alles dran setzt seine Produktion "geschlossen" zu halten - und es wäre nur logisch, wenn die Expressversion die, genauso wie die "volle", mitbringen würde

            nein, wieso? Und inwiefern bringt die "volle" das mit? Visual Studio 2005 und Vista - glaub' ich nicht :-) Bei meiner Professional-Variante ist jedenfalls das komplette SDK *nicht* dabei ...

            • ich wusste bisher nämlich nicht, dass VC unter nichtWindows laufen könnte -

            Das wäre mir auch neu.

            und wenn es schon für Fensterchen gedacht ist - wäre doch zu erwarten, dass es einem das runterladen weiterer Pakete für grundlegendes Mist erspart, oder?

            Nein, wieso?

            Bei normaler Anwendungsentwicklung für Windows gibt normalerweise keinen Grund, das entsprechende Windows-SDK zu nutzen - ganz im Gegenteil. Wozu also ein extrem dickes Paket in eine kostenlose Express-Edition bündeln und pflegen? Für die paar Entwickler, die das brauchen? Wer das SDK benötigt, besorgt es sich - und gut ist. Wo ist das Problem?

            Bei Deiner Einstellung zum Hersteller der Software, die Du hier durchblicken läßt, rate ich Dir gerne zur Linux-Anwendungsentwicklung.

            Freundliche Grüße

            Vinzenz

    2. Hello,

      dass eine Plattformunabhängigkeit wünschenswert ist, ist klar. Man könnte dann seine Programme statt auf ca. 700 Millionen i386/i686 Computern lauffähig zu bekommen, auch ein paar andere noch beschicken.

      Aber mal Scherz beiseite:
      Wenn man anfängt Tools zu programmieren, sollte man vielelicht gerade etwas mehr über die Plattform wissen, für die man die Tools bauen will.

      Plattformuinabhängigkeit kostet immer den Verzicht auf die besonderen Stärken einer Plattform und ist daher nicht immer das Gelbe vom Ei.

      Also erst darüber nachdenken, wohin es gehen soll. Sollen nur Windows-Möhren auf i686er Technologie beschickt werden oder sollen wirklich auch andere bedient werden?

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de