Frage zu Visual C++ Express



  • Hallo,

    ich bin absoluter Neuling und gerade dabei, mir C++ beizubringen. Ich habe diesbezüglich eine Frage zu Visual C++ Express.
    Alle Visual Express IDE's basieren doch auf .net.
    Kann man denn mit Visual C++ Express überhaupt "richtiges" C++ programmieren? Soviel ich weiss, umgeht man doch die Win-api, z.B. mit C#. Die .net Klassen kapseln die, nehm ich an. Macht das denn auch Sinn bei C++?
    Und basiert MFC z.B. nicht auf COM, also dem Component Object Model? Die .net Architektur soll doch COM nicht mehr nutzen, ich verstehe also nicht so recht den Zusammenhang bzw. den Sinn, mittels .net C++ zu programmieren.
    Ist denn die IDE für jemanden wie mich, der gerade C++ lernt, empfehlenswert?

    Grüße

    tupan



  • Trenn doch erstmal die IDE von der Programmiersprache, von Funktions/Klassenbibliotheken.

    IDE ist nur ein Programm zum Quelltext bearbeiten und bunt darstellen (vereinfacht gesagt).

    Programmiersprache, ist das, was du tippst (sehr vereinfacht gesagt).

    Funktions/Klassenbibliotheken sind die Funktionen bzw. Klaasen, die du benutzt.

    Es kann dir also völlig egal sein, in welcher Programmiersprache und mit welcher Klassenbibliothek dein Programm geschrieben wurde, weil es nichts über die Funktionsweise der IDE aussagt und welche Programmiersprachen die IDE bunt färben kann.



  • Hallo ProChild,

    danke für deine Antwort. Was du sagst, ist mir bewußt.
    Trotzdem, es geht mir um den Unterschied zwischen Visual C++ 6.0 und Visual C++ .net bzw. Express.
    Das eine IDE nur unterschiedliche Programme wie Compiler, Debugger usw. zusammenfasst, also einfach eine bequeme Entwicklung ermöglicht, weiss ich.
    Meine Frage ist nur: Visual C++ 6.0 basierte noch auf COM. Durch .net soll ja nicht mehr COM programmiert werden. Ich habe aber auch gelesen, man könne, wenn man denn will, wie mit 6.0 programmieren. Macht das Sinn? Und was ist mit der MFC Programmierung? Geht das noch unter .net?
    Momentan programmiere ich mit Dev-C++, wie gesagt, klein und fein, nicht zu überfrachtet. Ich vermisse allerdings Intellisense. Gerade für Einsteiger ist es sehr hilfreich, wenn man die Methoden eines Objekts angezeigt bekommt. Daher habe ich zusätzlich Visual C++ Express geöffnet, um die Methoden zu begutachten, die das entsprechende Objekt anbietet.

    Grüße

    tupan



  • tupan schrieb:

    Hallo ProgChild

    Lesen hilft 👍

    tupan schrieb:

    Was du sagst, ist mir bewußt.
    Trotzdem, es geht mir um den Unterschied zwischen Visual C++ 6.0 und Visual C++ .net bzw. Express.

    Sind zwei unterschiedliche Texteditoren...

    tupan schrieb:

    Das eine IDE nur unterschiedliche Programme wie Compiler, Debugger usw. zusammenfasst, also einfach eine bequeme Entwicklung ermöglicht, weiss ich.
    Meine Frage ist nur: Visual C++ 6.0 basierte noch auf COM. Durch .net soll ja nicht mehr COM programmiert werden. Ich habe aber auch gelesen, man könne, wenn man denn will, wie mit 6.0 programmieren. Macht das Sinn? Und was ist mit der MFC Programmierung? Geht das noch unter .net?

    Wenn du mit .NET programmierst, hast du doch schon eine Klassenbibliothek. Du kannst aber stattdessen auf die MFC verwenden. Die IDE hat damit nichts zu tun.

    tupan schrieb:

    Momentan programmiere ich mit Dev-C++, wie gesagt, klein und fein, nicht zu überfrachtet. Ich vermisse allerdings Intellisense. Gerade für Einsteiger ist es sehr hilfreich, wenn man die Methoden eines Objekts angezeigt bekommt. Daher habe ich zusätzlich Visual C++ Express geöffnet, um die Methoden zu begutachten, die das entsprechende Objekt anbietet.

    Lies Dokumentation oder Headerfiles. Und jetzt erklär mir bitte, warum du Dev-C++ und Visual Studio gleichzeitig benutzt, wenn dir eins von beiden zu zu "fett" ist...

    (Lesen)



  • Hallo ProgChild,

    ich habe Visual ++ Express zusätzlich geöffnet, um Zugriff auf die Methoden des Objekts zu haben.
    In den Tutorials wird ja meist darauf nicht eingegangen, da es ja um eine ganz bestimmte Aktion geht.
    Sicher, du hast recht, die Doku ist ein Weg. Aber wie ich dir vorhin schon schrieb, sehe ich nicht, warum das eine das andere ausschliesst?!
    Aber lassen wir die Diskussion hierüber. Ich akzeptiere deine Meinung natürlich.
    Übrigens, es lag weniger an meiner Unfähigkeit zu lesen, als es vielmehr ein Flüchtigkeitsfehler war, dass ich deinen Namen falsch schrieb, also ProChild anstatt ProgChild. Entschuldige bitte! Nichts für ungut 🙂

    Grüße

    tupan



  • Hallo ProgChild,

    nochmal zum Unterschied Visual C++ 6.0 und Express. Worum es mir ging ist: Kann man mit Visual C++ Express genauso C++ programmieren wie mit 6.0?
    Die .net Architektur ist ja ein völlig anderes Prinzip als die COM Technologie.
    Zum Beispiel untrscheidet sich Visual Basic 6.0 sehr von der .net Variante. Weil .Vb .net eben nun voll objektorientiert ist, verändert sich natürlich auch die Programmierung. Meine Frage war nun, ob es sich mit C++ ähnlich verhält? Müßte man also Code, den man in 6.0 programmiert hat, für Express nicht konvertieren? Dahin ging meine Frage, das beide Texteditoren sind, klärt nicht die technischen Hintergründe auf.

    Grüße

    tupan



  • tupan schrieb:

    Übrigens, es lag weniger an meiner Unfähigkeit zu lesen, als es vielmehr ein Flüchtigkeitsfehler war, dass ich deinen Namen falsch schrieb, also ProChild anstatt ProgChild. Entschuldige bitte! Nichts für ungut 🙂

    Akzeptiert 😉

    Btw. wenn du die .NET Klassenbibliothek verwendest, kannst du kein "richtiges" C++ verwenden, sonder (soweit ich weis) nur Managed C++. Wenn du also den C++ Compiler, der richtige Executeables erzeugt, benutzten willst, kommst du nicht an der MFC oder anderen C++ Klassenbibliotheken vorbei...



  • hm...verstehe.
    Ich hoffe, es ist okay, hier einen Link zu posten. Du wirst die Infos dort sicher nicht brauchen, für mich aber als Anfänger sind sie sehr interessant.
    Ich poste den Link mal, nur damit ich klarmachen kann, wie meine Frage gemeint war.
    http://www.microsoft.com/germany/msdn/library/net/VonVisualCPlusPlusZuVisualCPlusPlusNET.mspx?mfr=true

    Grüße

    tupan



  • Das ist eigentlich ehr ein Microsoft Propaganda-Artikel. Microsoft versucht mit .NET die Entwickler an Windows zu binden. Darum empfehlen sie ja auch, dass möglichst alle Leute .NET benutzen sollen.

    .NET macht eig. nur richtig Sinn in Kombination mit C#. Es kann sicher nicht schaden, C++ zu lernen. Es gibt erheblich mehr Klassenbibliotheken für C++, als für C# (oder andere .NET-Sprachen) und das wird sich auch so schnell nicht ändern, da es sich kaum für irgendeine Firma lohnt, ihre Software mit hohem finanziellen Aufwand auf C# zu portieren, nur um Microsofts Monopolstellung zu fördern...



  • ich gebe dir absolut recht. Stört mich auch, dass das das einzige brauchbare war bezüglich des Themas. Auf die Schnelle fand ich nichts anderes.
    Microsft forciert .net ganz gewaltig und möchte natürlich, dass die Entwickler drauf aufspringen. Es gibt nur einen Umstand, der mich wundert:
    Mit .net soll man ja Programme schreiben können, die keiner Installation bedürfen. Im besten Fall also einfach in ein Verzeichnis kopieren und es läuft. Vorausgesetzt, das Framework ist installiert natürlich. Ob dem so ist, vermag ich nicht zu sagen. Jedenfalls soll auch das Löschen entsprechend funktionieren, also einfach Ordner löschen - fertig.
    Komischerweise - .net gibt es ja schon ein paar Jahre, angeblich verwenden es auch jede Menge Entwickler inzwischen. Ich frage mich nur: wieso findet man dann an Windows Programmen nie ein .net Programm? Oder kennst du eins, was man so kennen müßte?
    Übrigens, grundsätzlich zum Thema Microsoft: Ich stehe der Monopolstellung auch sehr skeptisch gegenüber. Für mich ist Microsoft ein besseres Marketing Unternehmen, als dass es für technische Überlegenheit stünde. Aber ich will sie auch nicht schlechtreden. Alles hat seine Vor und Nachteile.
    Dass ich durchaus skeptisch bin, soll meine Zuneigung(herrje, ob das der richtige Begriff dafür ist?) zu Linux dokumentieren. Ich habe Debian Sarge installiert, seit ein paar Tagen auch Ubuntu aus Neugierde.

    Grüße

    tupan



  • tupan schrieb:

    Mit .net soll man ja Programme schreiben können, die keiner Installation bedürfen. Im besten Fall also einfach in ein Verzeichnis kopieren und es läuft. Vorausgesetzt, das Framework ist installiert natürlich. Ob dem so ist, vermag ich nicht zu sagen. Jedenfalls soll auch das Löschen entsprechend funktionieren, also einfach Ordner löschen - fertig.

    Das bezieht sich, glaub ich, nicht auf die Programme an sich, sondern auf die Componenten. Einfache Win32 Programme kann man ja auch einfach enpacken und wieder löschen. Problematisch wird es erst bei DCOM Componenten, die registriert werden müssen. Das sollte mit .NET einfacher werden.

    tupan schrieb:

    Komischerweise - .net gibt es ja schon ein paar Jahre, angeblich verwenden es auch jede Menge Entwickler inzwischen. Ich frage mich nur: wieso findet man dann an Windows Programmen nie ein .net Programm? Oder kennst du eins, was man so kennen müßte?

    Spontan fällt mir kein wichtiges ein. Ich hab auf meinem Computer bis jetzt auch noch nie das .NET-Framework installieren müssen. Nun benutze ich allerdings auch nicht sooo viele Programme.

    tupan schrieb:

    Übrigens, grundsätzlich zum Thema Microsoft: Ich stehe der Monopolstellung auch sehr skeptisch gegenüber. Für mich ist Microsoft ein besseres Marketing Unternehmen, als dass es für technische Überlegenheit stünde. Aber ich will sie auch nicht schlechtreden. Alles hat seine Vor und Nachteile.
    Dass ich durchaus skeptisch bin, soll meine Zuneigung(herrje, ob das der richtige Begriff dafür ist?) zu Linux dokumentieren. Ich habe Debian Sarge installiert, seit ein paar Tagen auch Ubuntu aus Neugierde.

    Ich finde es nur wichtig, dass man sich von solchen Unternehmen nicht zu sehr Abhängig macht, weil man sonst ziemlich schnell Probleme bekommen könnte.



  • was die Monopolstellung angeht, soviel ich weiss, soll die nächste Windows version noch regider sein bezüglich Einschränkungen. Aus Sicht von Microsoft nachvollziehbar vielleicht, aus Sicht des Users untragbar. Allein die Tatsache, dass man, wenn sich in gewissem Umfang Hardware ändert, eine erneute Registrierung fällig ist. Ein gutes hat es: Vielleicht fühlen sich mehr und mehr User derart gegängelt, dass sich Open Source wie Linux immer mehr durchsetzt. Das bliebe zu hoffen.

    Zum Thema .net und einfache Installation. Ich beziehe mich auf das Folgende Statement eines Tutorials:

    Weitergabe Ein .NET-Programm weiterzugeben ist viel einfacher geworden – insbesondere im Vergleich zu einem auf COM basierenden Programm, das Einträge in die Registrierungsdatenbank vornehmen muss. Im einfachsten Fall reicht es vollkommen aus, ein .NET-Programm (EXE- oder DLL-Datei) in das dafür vorgesehene Verzeichnis zu kopieren. Darüber hinaus ist aber auch die Verteilung mit einem Installationsassistenten und, ganz neu unter .NET 2.0, mit ClickOnce möglich.

    Grüße

    tupan



  • Wenn ProgChild kein .Net installiert hat, hat er auch kein VisualC++? Oder... 🙄

    Also, das VisualC++ (die IDE!) ist weiterhin größtenteils in C++ geschrieben ohne .NET. .NET wird benötigt, da VC++ _auch_ .NET-Entwicklung erlaubt. Aber wie ProgChild schon sagt, VC++ ist nur ein Tool. Man kann C++ auch programmieren, in dem man ein in Basic geschriebene IDE benutzt. Ist völlig irrelevant.

    Dann zu der einfachen Installation: Seit Windows XP kann man auch COM- und ActiveX-Objekte programmieren, die nicht registriert werden müssen. Hier scheint bei vielen noch eine Wissenlücke zu bestehen. Somit ist das Thema COM-Registrierung ab WinXP irrelevant!

    OneClick für .NET-Programme: es geht darum, das man ähnlich wie bei "Java Webstart" ein Programm über eine Website mit einem Click lokal auf dem PC starten kann. Dabei werden die nötigen Dateien (EXE, DLLs usw.) herunter geladen und gestartet. Keine Zauberei oder ähnliches. Theoretisch kann ich eine in C++ geschriebe EXE auf meiner Homepage direkt verlinken und der User kann diese von dort aus starten (sie wird herunter geladen und einfach gestaret). Leider müssen viele Programme aber in die Registry schreiben, so das man dieses meistens von einem Installer erledigen lässt. Theoretisch könnte dies auch ein Programm selbst erledigen.

    Viele C++ Programme laufen auch ohne Installation. Oder was macht ihr, wenn ihr ein HelloWorld in C++ programmiert? Installiert ihr das auch bevor ihr es testen könnt? 😉 Nein, natürlich nicht. Installation ist bei vielen Simplen Programmein nur eine User-Unterstützung, z.B. das ein Start-Menü-Eintrag angelegt wird u.ä. Es hat selten was mit COM-Registrierung oder so zu tun.

    OneClick liesse sich auch mit C++ Programmen durchführen, hätte MS mal dieses Konzept für native Win32-Programme ganz einfach entwickelt. Haben sie aber einfach nicht. Es hat nichts mit "unmöglich in C++" zu tun. Es müsste halt einfach nur gemacht werden.



  • Hallo Artchi,

    zum thema Com Componenten ohne Registrierung, hast du da vielleicht einen Link für mich? Ich kenne es halt nur so, dass Com Komponeten immer registriert werden müssen. Inwiefern XP da anders verfährt, würde mich sehr interessieren.

    Grüße

    tupan



  • Einen Link habe ich leider nicht zur Hand, da ich darüber etwas im deutschen MSDN Magazin gelesen hatte. Muß eine der letzten Ausgaben gewesen sein.

    Im MSDN meines VC2003 ist zwar nicht der Artikel drin, aber ein paar Infos:
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1031/cpguide/html/cpconconfiguringcomcomponentsforregistration-freeactivation.htm

    Schau mal in der MSDN-Indexliste unter "COM-Interop ohne Registrierung". Die Beschreibungen sind zwar nicht Tutorial-mäßig, aber vielleicht hilfts ja.

    Hier mal Copy&Paste daraus der erste Abschnitt:

    COM-Interop ohne Registrierung aktiviert eine Komponente, ohne die Windows-Registrierung zum Speichern von Assemblyinformationen zu verwenden. Anstatt eine Komponente während der Entwicklung auf einem Computer zu registrieren, erstellen Sie zur Entwurfszeit Win32-Manifestdateien, die Informationen über Bindung und Aktivierung enthalten. Diese Manifestdateien steuern anstelle der Registrierungsschlüssel die Aktivierung eines Objekts.

    Die Aktivierung der Assemblies ohne Registrierung anstelle der Registrierung beim Entwurf bietet zwei Vorteile:

    - Sie können steuern, welche DLL-Version aktiviert wird, wenn mehrere Versionen auf einem Computer installiert sind.
    - Endbenutzer können mit XCOPY oder FTP die Anwendung in ein gewünschtes Verzeichnis auf dem Computer kopieren. Die Anwendung kann dann von diesem Verzeichnis aus ausgeführt werden.

    In diesem Abschnitt werden die beiden Arten von Manifesten beschrieben, die für COM-Interop ohne Registrierung erforderlich sind: Anwendungs- und Komponentenmanifeste. Diese Manifeste sind XML-Dateien. Ein Anwendungsmanifest wird durch einen Anwendungsentwickler erstellt und enthält Metadaten zur Beschreibung von Assemblies und Assemblyabhängigkeiten. Ein Komponentenmanifest wird von einem Komponentenentwickler erstellt und enthält Informationen, die andernfalls in der Windows-Registrierung enthalten sind.

    Also, auch C++ Programme müssen ab WinXP kein großes "Traraaa!" mehr veranstalten, kopieren/downloaden und starten. Ist kein echtes OneClick, aber egal... 😉



  • Registration-Free COM Interop
    http://msdn2.microsoft.com/fh1h056h

    Simplify Application Deployment with Registration-Free COM
    http://www.codeguru.com/columns/kate/article.php/c12441/


Anmelden zum Antworten