Gemeinsam C++ lernen, wer macht mit? Speziell auf Anfänger bezogen.



  • ⚠ C++ != C++/CLI
    Das Sind zwei Grundverschiedene Sprachen.

    R.Paul W. schrieb:

    Im Moment lese ich "Visual C++ 2010" von Dirk Louis, um mich der Entwicklung von GUI-Anwendungen etwas näher zu bringen und vielleicht später auch "richtige" Anwendungen schreiben zu können.

    C++/CLI + Windows Forms MACHT KEINEN SINN!
    Wenn du GUIs in C++ (ohne CLI) schreiben willst, dann benutz entweder die MFC, WTL oder die Platformunabhaengigen wie GTK(mm), QT und wxWidgets.



  • Vielleicht hat die Website recht (vielleicht auch nicht), das kann ich jedoch nicht wirklich gut beurteilen, weil ich noch ein Anfänger bin.
    Ich weiß nicht:
    Diese ganze Geschichte mit das C++ von Visual Studio sei ganz anders als das "richtige" C++, kommt mir etwas übertrieben vor. Zumindest empfand ich es bis jetzt als nicht allzu schwer von der reinen C++-Syntax auf die neue umzusteigen. Klar hatte ich zu Beginn mein persönliches Drama damit, dass man nicht mehr

    #include <iostream>
    

    schreibt und anstatt von

    using namespace std;
    

    ,

    using namespace System;
    

    eintippen muss. Die Umstellung von

    cout << xy << endl;
    

    auf

    Console::WriteLine(xy);
    

    war für mich auch irgendwie ein Schock und vom Aufbau her erinnert mich das eher ein bisschen mehr an das bisschen Java, was ich im Informatik-Unterricht gesehen haben (wobei mein Lehrer dort mehr als kläglich versagt hat 😉 ), aber insgesamt fand ich es doch ganz akzeptabel und verständlich. 🙂 (Manchmal sogar etwas verständlicher als reines C++...mich aber bitte nicht wegen dieser Aussage auf den Scheiterhaufen werfen 😉 😃 ).
    Zumindest habe ich, Website hin oder her, vor dieses Buch zu Ende durch zu arbeiten, um zumindest grundlegend zu lernen, wie diese ganze GUI-Anwedungen-Erstellen-Geschichte funktioniert (habe bis jetzt nur Konsolen-Anwendungen geschrieben). Danach werde ich vielleicht, wenn nötig auf ein anderes IDE oder eine "andere" Sprache umsteigen (Java?!?).

    Trotzdem danke für deinen Hinweis (und sag mir bescheid, wenn ich etwas falsch interpretiert hab von dem, was du/ die website geschrieben hast/hat)! 🙂



  • Das ist kein "Visual Studio C++". Du hast keine Ahnung 😉 Such mal im Forum, gibt schon genug Threads zu dem Thema, keine Lust das wieder durchzukauen.



  • C++/CLI ist nicht "das C++ von Visual Studio" oder "die neue Syntax".
    C++/CLI ist eben C++/CLI. Aka. ein rundes Schwein das durch ein eckiges Loch gepresst wurde.
    Dafür was es ist, ist es mMn. sehr gut geworden. (Wobei man auch bedenken sollte dass es bereits der 2. Anlauf dieser Schweineverformung ist. Der erste nennt sich "managed C++", war einigermassen grauenhaft, und wird von MS auch nicht mehr weiter supported.)

    Aber GUI Anwendungen in C++/CLI zu entwickeln macht wirklich keinen Sinn, da hat "die Webseite" (aka. Jochen Kalmbach, der auch öfters hier im Forum postet) absolut Recht.

    Ich würde C++/CLI als eine Sprache einstufen, die man - für bestimmte recht spezielle Anwendungsfälle - genau dann gut verwenden kann, wenn man davor schon *sehr gut* C++ und C# kann. Für die meisten Sachen ist es aber einfach das falsche Werkzeug.



  • Sag mal ist es in diesem Forum Brauch, dass man mindestens von 1-2 Leuten runtergemacht wird, sobald man irgendeine Frage stellt, wo etwas inkorrekt formuliert wurde?! Ich hab bis jetzt 3 mal etwas in dem Forum gepostet (die ersten beiden Male waren Verständnisfragen und ich wurde zur Sau gemacht, weil ich zu dem Zeitpunkt noch nicht wusste, was STL ist) und wurde jedesmal angemeckert...anscheinend sollte man sich hier als Anfänger nicht rumtreiben (das zeigen auch die ersten beiden Antworten auf diesen Post von Samp)! So viel dazu...

    C++/CLI ist nicht "das C++ von Visual Studio" oder "die neue
    Syntax".

    Es ist mir klar, dass dies nicht die korrekten Formulierungen sind, nur für mich war es ja bis jetzt "die neue Syntax" und "das C++ von Visual Studio", da ich zuvor mit Dev-Cpp gearbeitet habe und dort lediglich "reines C++" kannte! 😉

    Zumindest habe ich, Website hin oder her, vor dieses Buch zu Ende durch zu arbeiten, um zumindest grundlegend zu lernen, wie diese ganze GUI-Anwedungen-Erstellen-Geschichte funktioniert (habe bis jetzt nur Konsolen-Anwendungen geschrieben). Danach werde ich vielleicht, wenn nötig auf ein anderes IDE oder eine "andere" Sprache umsteigen (Java?!?).

    Und bei der Aussage bleibe ich weiterhin... 🙄



  • C++/CLI ist wirklich nur als Inter-OP von managed nach unmanged gedacht. Es ist durchaus eine nuetzliche Sprache, ich habe nie etwas anderes behauptet, wenn man z.B. alte Bibliotheken wrappen will.
    Aber fuer GUIs ist es einfach ungeeignet. Probier mal WPF-Programme C++/CLI zu schreiben. Es ist moeglich, aber Unterstuetzung seitens des Designers bekommst du sogut wie keine. Wenn du Designer-Gestuezt arbeiten willst, musst du Windows Forms nehmen. Die sind nicht schlecht, werden aber nicht mehr weiterentwickelt.

    Entscheide dich: Willst du C++ (und damit meine ich richtiges C++) benutzen? Wenn ja, dann benutze die von mir vorgeschlagenen Bibliotheken. Willst du auf .NET zurueckgreifen? Dann benutz C# oder VB als Sprache. Beides zu mischen ist moeglich, macht aber nur seltenst Sinn.

    EDIT: Wir machen dich nicht runter, wir wollen dir helfen. Mach nicht den Fehler C++/CLI als Primaersprache zu benutzen oder es als C++-Erweiterung zu sehen. Das schafft mehr Probleme als es loesen wird.



  • EDIT: Wir machen dich nicht runter, wir wollen dir helfen. Mach nicht den Fehler C++/CLI als Primaersprache zu benutzen oder es als C++-Erweiterung zu sehen. Das schafft mehr Probleme als es loesen wird.

    Das mit runtermachen war eher auf Leute wie Mechanics bezogen, dein Beitrag war durchaus hilfreich... 👍

    Entscheide dich: Willst du C++ (und damit meine ich richtiges C++) benutzen? Wenn ja, dann benutze die von mir vorgeschlagenen Bibliotheken. Willst du auf .NET zurueckgreifen? Dann benutz C# oder VB als Sprache. Beides zu mischen ist moeglich, macht aber nur seltenst Sinn.

    Ich glaub nicht, dass es für mich als Anfänger sinnvoll ist noch eine weitere Sprache zu lernen, also wahrscheinlich C++.
    Da kommt bei mir dann natürlich die Frage auf, welche Möglichkeiten habe ich damit und gibt es dazu irgendwelche guten Tutorials/Bücher???

    Naja ich will auf jeden Fall C++/CLI zu Ende lernen (sprich das Buch durchlesen und mir dazu meine Gedanken machen 😉 ), man weiß ja nie wozu das später noch zu gebrauchen sein wird (vielleicht bringt ja Vater Microsoft eine Neuerung davon raus, welche es deutlich nützlicher macht 😉 😃 )!



  • R.Paul W. schrieb:

    man weiß ja nie wozu das später noch zu gebrauchen sein wird (vielleicht bringt ja Vater Microsoft eine Neuerung davon raus, welche es deutlich nützlicher macht 😉 😃 )!

    Du hast wohl noch nichts von C++/CX gehört ? 🤡
    http://msdn.microsoft.com/de-de/library/windows/apps/hh700360.aspx



  • R.Paul W. schrieb:

    Ich glaub nicht, dass es für mich als Anfänger sinnvoll ist noch eine weitere Sprache zu lernen, also wahrscheinlich C++. [...]
    Naja ich will auf jeden Fall C++/CLI zu Ende lernen

    Ist das nicht ein Widerspruch?

    man weiß ja nie wozu das später noch zu gebrauchen sein wird (vielleicht bringt ja Vater Microsoft eine Neuerung davon raus, welche es deutlich nützlicher macht 😉 😃 )!

    C++/CLI ist doch sehr nützlich.



  • R.Paul W. schrieb:

    Ich glaub nicht, dass es für mich als Anfänger sinnvoll ist noch eine weitere Sprache zu lernen, also wahrscheinlich C++. [...]
    Naja ich will auf jeden Fall C++/CLI zu Ende lernen

    Ist das nicht ein Widerspruch?

    Ja und nein, eigentlich ist es schon irgendwie eine andere Sprache, aber im Vergleich zu Java o.ä. ist es nicht so viel anders als C++.



  • R.Paul W. schrieb:

    Entscheide dich: Willst du C++ (und damit meine ich richtiges C++) benutzen? Wenn ja, dann benutze die von mir vorgeschlagenen Bibliotheken. Willst du auf .NET zurueckgreifen? Dann benutz C# oder VB als Sprache. Beides zu mischen ist moeglich, macht aber nur seltenst Sinn.

    Ich glaub nicht, dass es für mich als Anfänger sinnvoll ist noch eine weitere Sprache zu lernen, also wahrscheinlich C++.
    Da kommt bei mir dann natürlich die Frage auf, welche Möglichkeiten habe ich damit und gibt es dazu irgendwelche guten Tutorials/Bücher???

    Buecher und Tuts gibt es zu diesen Bibliotheken genug (einige besser, einige schlechter), aber bevor man dir da was empfehlen kann, muesstest du dich erstmal fuer eine der Libs entscheiden. Hier mal meine Erfahrungen pro und contra fuer einige dieser Libs:

    • WinAPI

    • + extrem maechtiges Interface

    • + Extrem systemnah, nur mit Syscalls waerst du naeher dran

    • + Gut dokumentiert in der MSDN

    • - Nur ein C Interface (d.h. sachen a la cout darfst du nicht erwarten)

    • - nutzt ein veraltetes Design (wird sich aus Kompatiblitaetsgruenden auch nicht mehr aendern)

    • - einige Leute finden die Namenskonvention grauenhaft (wenn man dran gewoehnt ist und ihr Muster versteht kann man gut damit arbeiten

    • Fazit: WinAPI ist das Mittel der wahl, wenn die anderen Bibliotheken eine bestimmte Funktion nicht anbieten. Fuer den produktiven Einsatz mit C++ sollte sie jedoch nicht benutzt werden, ausser man braucht unbedingt eine Funktion aus ihr.

    • MFC

    • + Objektorientierte Kapselung vieler WinAPI-Funkitionen

    • + Framework fuer Anwendungen nach dem MVC-Modell

    • + Sehr gute WinAPI-kompaitblitaet, d.h. wenn du eine Funktion vermisst kannst du ohne Umwege darauf zurueckgreifen

    • + Bietet nciht nur GUI sondern auch viele Utility-Klassen

    • + Gut dokumentiert in der MSDN

    • - Kein modernenes C++ (sie ist zwar Objektorientiert, aber benutzt ein veraltetes Design)

    • - Namenskonvention

    • Fazit: *Die* Bibliothek fuer native Windows-Anwendungen in C++. Zwar etwas in die Jahre gekommen, aber dennoch gut zu verwenden. Die nahtlose Integration mit der WinAPI macht sie zu einem extrem maechtigen Werkzeug. Trotz kleiner Mankos zu empfehlen.

    • GTKmm

    • + Platformunabhaengig, d.h. Anwendungen laufen auch auf Linux usw.

    • - Dadurch kann sie aber auch nur einen begrenzten Funktionsumfang anbieten, der auf allen System auf denen sie laeuft vorhanden ist

    • - Anwendungen brauchen beim ersten Start nach einem reboot ziehmlich lange (getestet auf Windows)

    • Fazit: Gutes Mittel um Platformunabhaengige GUI-Anwendungen zu schreiben. Bietet allerdings keine WinAPI-Integration an, d.h. wenn du an bestimmten Steuerelementen mehr haben willst als die vorhandenen eigenschaften musst du darauf verzichten oder sie von Hand in der WinAPI erzeugen.

    Mit QT und wxWidgets habe ich noch keine Erfahrungen gemacht.

    R.Paul W. schrieb:

    Naja ich will auf jeden Fall C++/CLI zu Ende lernen (sprich das Buch durchlesen und mir dazu meine Gedanken machen 😉 ), man weiß ja nie wozu das später noch zu gebrauchen sein wird (vielleicht bringt ja Vater Microsoft eine Neuerung davon raus, welche es deutlich nützlicher macht 😉 😃 )!

    Lobenswerte Einstellung; es schadet nie mehrere Programmiersprachen zu koennen. Fuer Interops ok, fuer Anwendungen bitte richtiges C++ :p



  • Plattformunabhängigkeit ist mir im Moment nicht so wichtig. Ich hab zwar auf meinem Zweitrechner (ich hab insgesamt 3 Stück zu Hause 😃 ) Liux installiert, nutze es aber nicht aktiv. Zumeist arbeite ich mit Windows 7 (eventuell auch mit XP). GTKmm scheint für mich also nicht die beste Wahl zu sein. Bleiben noch WinAPI und MFC:

    Fuer den produktiven Einsatz mit C++ sollte sie jedoch nicht benutzt werden

    Demnach würde ich also zu MFC tendieren, es wäre aber schön, wenn noch jemand die Pros- und Contras von QT nennen könnte. 🙂



  • Bei MFC vergass ich ein Contra: Es ist leider erst mit VS Prof. und hoeher enthalten. Solltest du VS Express verwenden (und kein Schueler oder Student sein um VS Prof. kostenlos bei MS abzukupfern), kannst du leider nciht die aktuelle MFC verwenden (im Platform-SDK ist glaub ich eine alte Version vorhanden, aber die zu verwenden waere Leichenschaendung).
    Als kostenlose Alternative kann ich noch die WTL nennen. Stammt auch von MS und basiert auf der ATL, ist aber Open Source. Ansonsten duerften die Pros und Contras weitesgehend mit denen von MFC uebereinstimmen, aber es ist schon laenger her, dass ich sie mal verwendet habe, also ohne Gewaehr).



  • Ich bin noch Schüler (demnächst hoffentlich auch Student der Mathematik an der Uni Oldenburg 😉 )...



  • R.Paul W. schrieb:

    Plattformunabhängigkeit ist mir im Moment nicht so wichtig. Ich hab zwar auf meinem Zweitrechner (ich hab insgesamt 3 Stück zu Hause 😃 ) Liux installiert, nutze es aber nicht aktiv. Zumeist arbeite ich mit Windows 7 (eventuell auch mit XP). GTKmm scheint für mich also nicht die beste Wahl zu sein. Bleiben noch WinAPI und MFC:

    Fuer den produktiven Einsatz mit C++ sollte sie jedoch nicht benutzt werden

    Demnach würde ich also zu MFC tendieren, es wäre aber schön, wenn noch jemand die Pros- und Contras von QT nennen könnte. 🙂

    Bis gestern hatte ich die "Ehre" ein MFC Programm weiterzuentwickeln. Lass es mich so sagen: MFC/WinAPI ist nicht stellvertretend für gute C++-Programmierung. Es ist - vorsichtig ausgedrückt - die Hölle auf Erden. Oder um einen Spruch von einem Kollegen zum Besten zu geben, der da zu mir meinte: "Ich bedaure Dich, aber ich bin froh, dass ich es nicht machen muss.".
    Ich denke, das wurde auf Jonas OSDever Liste nicht gut genug herausgestellt. Die Libs sind zwar gut dokumentiert, aber das heißt nicht, dass irgendwas mal einfach funktioniert - es gibt eine Vielzahl von Reihenfolgeabhängigkeiten und anderem Mist. Schon sehr 'gewöhnungsbedürftig'.

    GTKmm habe ich vor 6 Jahren ausprobiert, bin dann aber lieber mit Gtk (ohne mm, objektorientiert, aber halt in C) gefahren, auf Linux und Windows. Die Einrichtung von Gtk habe ich als Abschluss des C-Tutorials für verschiedene Entwicklungsumgebungen beschrieben.
    wxWidgets rendert auf Windows mit MFC, auf Linux mit Gtk und auf Mac mit Carbon, wenn ich mich recht entsinne. Das Feedback von Gtk ist
    Da habe ich bisher nur etwas mit Python mit gespielt. Lies sich aber mit arbeiten.

    Seit gestern abend lese ich das Qt-Tutorial auf proggen.org (nicht von mir geschrieben) und sammle darin erste Erfahrungen auf'm Mac. Auch der Qt Creator kommt als optionale IDE ganz gut. Ich bin durch das Tutorial noch nicht ganz durch, aber bisher gefällt es mir sehr gut. Die Programme können grundsätzlich ohne Änderungen auf Linux, Mac und Windows kompiliert werden, sowie für einige Händis (Android und iOS sind geplant).

    Wenn Du die WinAPI/MFC nutzen möchtest, rate ich Dir trotzdem zu wxWidgets. Die Erfahrungen, die Du dort sammelst sind eher auf moderne GUI-Frameworks anzuwenden, während MFC eher als schlechtes Beispiel dient.



  • Wenn du 23 13,50 Euro verschmerzen kannst, um MS Produkte die in die tausende gehen kostenlos zu kriegen: Fordere eine ISIC an, registriere sie nach erhalt auf der selben seite online und dann melde dich hier an.
    Und dann fang mit saugen kan 😉

    BTW: Es gibt Unis, die die ISIC standardmaessig (und wenn ich mich nicht taeusche sogar kostenlos) an ihre Studenten rausgeben. Sollten dir, entgegen aller Wahrscheinlichkeit, die 23 13,50 Euro wehtuen, dann informier dich mal auf der Seite deiner Uni, ob die das machen.



  • 23 € dürften nicht den weltuntergang für mich bedeuten (zur not bitte ich meine eltern darum 😉 )...



  • Xin der Link ist gut, danke! 🙂

    Qt klingt gut, ich schau mir das demnächst mal an...



  • Sorry, mein Fehler, ein ISIC kostet (inkl. Versand) sogar nur 13,50 Euro.
    Hatte (warum auch immer) 23 in Erinnerung und nicht nochmal kontrolliert. Asche auf mein Haupt 😞



  • Sorry, mein Fehler, ein ISIC kostet (inkl. Versand) sogar nur 13,50 Euro.
    Hatte (warum auch immer) 23 in Erinnerung und nicht nochmal kontrolliert. Asche auf mein Haupt

    Hab mich auch schon ein bisschen gewundert, auch egal:

    13,50 € dürften kein Drama sein... 😉


Anmelden zum Antworten