Nach wxWidgets weiter? Was lerne ich nun sinnvollerweise?
-
stefanjann schrieb:
Wo will ich hin?
- Sauberes C++
- Perfekte kleine Programme (also so wenig wie möglich Overhead)
- Vorwiegend Windows (weils jeder hat), aber auch CE-Systeme sowie Linux und Mac.
- Schnittstellen wie z.B. Midi-Steuerung, Bluetooth oder Netzwerk (UPD, TCP)
- Fit genug zu sein um auch mal was ausgefallenes wie z.B. Handy (Windows Mobile) oder NintendoDS zu machen.- Sauberes C++ ist wichtig, aber MFC fällt mir da nicht ein
- MS Compiler und MFC bekommen die Programme nur so klein, weil die MFC bei WINDOWS schon dabei ist, dynamisches Linken von wxProgrammen z.b. führt auch zu erheblich kleineren exen.
- Viele Libs aus dem MS Umfeld (MFC sowieso) sind nicht plattformunabhängig.
- Für Netzwerk solltest du dir mal boost::asio anschauen, dann hast du eine Plattform und Library unabhängige Version.
- Handy und Nintendo sind noch mal eigene Welten, was Programmierung angeht.Vielleicht solltest du dir mal im allgemeinen Boost ansehen, da hats einige nette Libs dabei.
Und wx verwendet ja die Systemcontrols, glaub also nicht, das MFC Programme so viel besser aussehenphlox
-
Hallo,
bei mir sammeln sich langsam die Begriffe und irgendwie wird mir klar, dass ich mal jemanden braucht der mir bitte mit wenigen Worten zuammen fassen kann, was ist:
- MFC
- ATL
- Boost
- GTK+
- wxWidgets
- gtkmm
- QTund für welche Bereiche sollte man was am Besten einsetzen.
Ich weiß, dass klingt jetzt an dieser Stelle etwas komisch, aber ich bin noch blutiger Anfänger und irgendwie verliere ich gerade den Überblick.So wie ich das verstehe, ist gtkmm, wxWidgets und QT eine Art Befehlssammlung, die sich je nach Betriebssystem an die passenden Libs hängen und die passenden Befehle aufrufen um ein schönes graphisches Programm zu erzeugen.
Die Grundlagen dazu bieten MFC, ATL oder GTK+?
Boost ist ne Art Erweiterung für C++ die viele Vorgänge schon mal sinnvoll zusammen gefasst hat.
Hab ich das jetzt richtig verstanden?
-
GUI Frameworks:
- MFC -> am besten vergessen, sehr hässliches C++
- GTK+ -> gtkmm ist der C++ Wrapper davon, nettes C++, auf Windows aber keine native GUIs
- wxWidgets -> hässliches C++
- QT -> Braucht eigenen Pre-Preprocessor. Nur unter GPL für OpenSource erhältlich, ansonsten hat es einen stolzen Preis.COM Framework:
- ATLBibliotheken Sammlung für allgemeine Aufgaben:
- Booststefanjann schrieb:
So wie ich das verstehe, ist gtkmm, wxWidgets und QT eine Art Befehlssammlung, die sich je nach Betriebssystem an die passenden Libs hängen und die passenden Befehle aufrufen um ein schönes graphisches Programm zu erzeugen.
wxWidgets und Qt kapseln auf Windows einfach nur die WinAPI in eine C++ Klassenhierarchie.
gtkmm kapselt GTK+ und dieses setzt unter Windows glaub ich auf OpenGL, kapselt also die Schnittstellen zu OpenGL und erstellt, bzw. zeichnet, damit ein GUI.stefanjann schrieb:
Die Grundlagen dazu bieten MFC, ATL oder GTK+?
Nein. MFC, ATL und GTK+ sind alles Frameworks, welche andere Schnittstellen kapseln.
stefanjann schrieb:
Boost ist ne Art Erweiterung für C++ die viele Vorgänge schon mal sinnvoll zusammen gefasst hat.
Keine Erweiterung für C++, aber eine inoffizielle Erweiterung der C++ Standardbibliothek. Sie bietet Bibliotheken für alle möglichen Bereiche in meistens sehr sauberem C++.
stefanjann schrieb:
Hab ich das jetzt richtig verstanden?
Nein ... aber vielleicht jetzt *g*
Ganz ehrlich, wenn ich auch noch so einen Satz lesen muss:
stefanjann schrieb:
..., aber ich bin noch blutiger Anfänger und irgendwie verliere ich gerade den Überblick.
Dann komme ich ehrlich gesagt wirklich nur zu diesem Schluss, dass du zuerst mal "Die C++ Programmiersprache" von Bjarn Stroustrup lesen solltest. Lern zuerst vernünftiges und sauberes C++, bevor du in die Abgründe gewisser Bibliotheken gehst.
Es gibt im übrigen viele sehr schlechte C++ Bücher auf dem Markt. Was ich bisher zu "C++ von A bis Z" gehört habe, ist eher ein mittelmässiges Urteil. Vor allem geht es viel zu früh auf Themen ein, welche ein Anfänger lieber noch ein bisschen aussen vor lassen sollte, bis er sich im richtigen C++ gefestigt hat. C++ zu lernen braucht Zeit.
Grüssli
-
Dravere schrieb:
GUI Frameworks:
- MFC -> am besten vergessen, sehr hässliches C++
- GTK+ -> gtkmm ist der C++ Wrapper davon, nettes C++, auf Windows aber keine native GUIs
- wxWidgets -> hässliches C++
- QT -> Braucht eigenen Pre-Preprocessor. Nur unter GPL für OpenSource erhältlich, ansonsten hat es einen stolzen Preis.COM Framework:
- ATLBibliotheken Sammlung für allgemeine Aufgaben:
- BoostQT steht unter LGPL!
Ist somit von der Lizenz fast mit wxWidgets gleich zu setzen.
Zu GTK sollte man auch sagen, das vieles nur in C möglich ist, wenn man etwas komplexere Anforderungen hat. GTKmm ist halt nur ein Wrapper.phlox
-
Danke Dravere für deine Ausführungen,
ja, ich bin blutiger Anfänger und da ich nicht gerade die Zeit habe vieleSchulen zu besuchen muss ich mir leider über Bücher und Tuts mein C++ drauf schaffen. Daher bin ich auch so viel in diesem Forum und versuche zu lernen, lernen und lernen. Natürlich besuche ich viele Internetseiten und viele Tutorials und probiere mit QT, wxWidgets, MFC und wie sie nicht alle heissen.Leider verliert man dort gerne den Überblick. Gerade bei den Profis gibt es tausende Kürzel unter denen sich man erstmal was vorstellen soll. Alle Frameworks haben Vorteile, Nachteile, Anhänger und Gegner. Ein ordentliches Bild kann man da schlecht bekommen.
Ich möchte erst mal kleine Programme schreiben. Habe mir also das hochgelobte Buch "C++ von A bis Z" gekauft und war begeistert. Verschiedene Stimmen hier im Forum haben aber dieses Buch schon zerrissen mit Sätzen wie "maximal als Nachschlagewerk", "schlechterSchreibstiel" oder auch "was hat den GUI in so einem Buch verloren". Andere loben es hoch hinauf: "Perfekt zum Einstieg", "schnell bei GUI mit wxWidgets".
Für einen Anfänger wie mich ist es schwer die "echten" Kritiken von den "ich-moser-nur-mal" zu unterscheiden. Was ist jetzt das A und O?
Eigentlich will ich doch nur Programme schreiben und das in C++. Ich will ein kleines MIDI-Programm schreiben, welches mir ein bisschen Musik über mein MIDI-Keyboard macht. Danach will ich mit Hilfe von Netzwerken und TCP/IP ein kleines Spiel schreiben, wo ich schon seit jahren ein Konzept habe und das umsetzen. Und so ganz nebenbei interessieren mit noch Windows Mobile-Anwendungen.Woran unterscheidet man eigentlich schelchten von gutem C++? Ich hab schon mal gelernt, das man keine Macros verwenet, wie man das in wxWidgets kennt. Und das man sich die aktuellen Standards anschaut und keine namespaces global verfügbar macht.
Dann hab ich mir QT angeschaut. Dann noch GTK+. Bei GTK+ fällt mir auf, dass alles in DLLs steckt. Kann ich ein Standalone schreiben ohne die DLLs mitzuliefern? Auch hier wieder Glaubenskriege. Die einen sagen, die WinAPI ist natürlich für Windows das einzig wahre, die anderen Sagen, richtig gut wird man erst wenn man die WinAPI nicht nutzt.
Sobald man sich auf eine Lib oder GUI oder ein Framework einlässt findet man sofort viele Gegner die einem sofort sagen, warum man das nicht tun sollte.
Daher auch mein letzter Beitrag. Man verliert so leicht den Überblick. Ich bin fest entschlossen ordentliches C++ zu lernen. Ich werde mir auch das Buch "Die C++ Programmiersprache" von Bjarn Stroustrup noch kaufen und hoffe dann etwas mehr durchblick zu bekommen.
Danke schon mal an alle die mir hier im Forum auch immer wieder meine Newbe(e)-Fragen beantworten und mir in diesem Thread helfen einen Durchblick zu bekommen.
-
Vielleicht sollte man auch sagen, das gutes C++ nicht wirklich was mit GUIs zu tun hat.
Boost ist ein sehr guter Ort, wenn du da noch nicht warst, da gibts viele Interessante Libs.
Auch Dinge wie Designpatterns in C++ könnten für dich interessant sein, evtl. kennst du sie ja schon aus PHP.Und natürlich gibt es von jeder Lib anhänger, und jede Lib hat nun mal ihre Vor und Nachteile.
phlox
-
> Was ich bisher zu "C++ von A bis Z" gehört habe, ist eher ein mittelmässiges Urteil.
Das Buch ist für einen erweiterten Einstieg mehr als geeignet. Er geht auf nahezu alle Aspekte von ANSI C++ ein (OOP/Polymorphie/Templates), ein bisschen wenig Boost, aber besonders z.B. Verkettete Listen. Und nichts ist besser für einen Anfänger als ein Buch, worin er etwas Zusatz dazu, z.B. Netzwerk-Programmierung/Boost-Programmierung und GUI-Programmierung lernt, damit kommt er durch den C++ Jungle, bis er auf eignenen Beinen steht und sein Wissen mit dem "trockenen Stroustrup" verfeinert, das Buch kann man als Anfänger ja vergessen.
> Vielleicht sollte man auch sagen, das gutes C++ nicht wirklich was mit GUIs zu tun hat.
Leider. Träumen wir nicht alle von std::gui?
-
phlox81 schrieb:
QT steht unter LGPL!
Ist somit von der Lizenz fast mit wxWidgets gleich zu setzen.Ist mir ganz neu. Habe aber gerade selber nachgeschaut. Es stimmt tatsächlich, ist aber ist erst seit der Version 4.5 so, deshalb wusste ich noch nichts davon.
@stefanjann,
Mein Problem ist, welches ich mit "C++ von A bis Z" habe, dass das Buch auf viel mehr als nur C++ eingeht und dadurch C++ zu kurz kommt.
C++ ist eine hoch komplexe Sprache, welche duzende von Bücher nur als Sprache füllt. Reines C++ kennt aber keine GUIs, keine Graphik, keine Tastaturen, Joysticks, Mäuse, keine Konsole, usw. usf. Reines C++ ist also extrem roh, gründsätzlich ziemlich ernüchternd für einen Anfänger, da er mit reinem C++ nichts grossartig aussehendes erreichen kann.
Ich setze daher das Buch "C++ von A bis Z" zu den Büchern, welche den Anfänger aufmuntern wollen, in dem sie ihm nicht richtig C++ beibringen, dafür schon viel zu früh in GUI Programmierung einsteigen. Damit kann der Anfänger bereits unglaubliches machen, er hat eine riesige Freude. Allerdings merkt er auch nicht, dass man seine Probleme deutlich einfacher und schöner hätte lösen können. Für die Wartung eines Programmes sogar zum Teil fatale Fehler gemacht hat.Ich selber habe mit einem Buch über C++ und die MFC angefangen. Damals fand ich das Buch unglaubliche Weltklasse. Ich konnte C++ programmieren! War ich stolz! :p
Heute halte ich das Buch für ein Verbrechen. Ich konnte damals nicht im geringsten C++ programmieren, man hat mich schlicht und einfach angelogen.Ich habe "C++ von A bis Z" nicht selber gelesen, aber wenn ich schon nur diesen Titel lese und dann die Leute mir erzählen, dass sie in dem Buch GUI- oder Socketprogrammierung lernen, dann ist dieses Buch genauso eine Lüge. Denn in diesen wenigen Seiten, in welchen wirklich C++ gelernt wird, kann man unmöglich C++ von A bis Z lernen. Dem Leser wird mir grossartigen Programmen, vor allem grossartig in dem man was sieht, vorgegaukelt, dass er programmieren kann.
@Ad aCTa,
Ja, das Buch "Die C++ Programmiersprache" ist für einen Anfänger ein wenig zu schwer. Aber es gibt gute C++ Lernbücher auch für Anfänger (z.b. C++ Primer), welche auch C++ lernen und dem Anfänger nicht Dinge vorgaukeln oder völlig veraltete Bibliotheken verwenden, wo der Anfänger dann einen schlechten Stil abkupfert. Und wenn man einmal eine Angewohnheit im Programmieren sich angeignet hat, kommt man immer wieder sehr schlecht davon los. Das ist ja das blöde Problem bei AngewohnheitenUnd nein, ich träume nicht von
std::gui
. Würde meiner Meinung nach überhaupt nicht in den Standard passen. Es wäre aber mal an der Zeit, dass irgendwo ein platformunabhängiges C++ GUI kommt, welches über schönes und modernes C++ implementiert wurde.
Artchi soll sich mal sputen.Grüssli
-
Dravere schrieb:
Und nein, ich träume nicht von
std::gui
. Würde meiner Meinung nach überhaupt nicht in den Standard passen. Es wäre aber mal an der Zeit, dass irgendwo ein platformunabhängiges C++ GUI kommt, welches über schönes und modernes C++ implementiert wurde.
Artchi soll sich mal sputen.
GrüssliWer oder was ist Artchi?
-
stefanjann schrieb:
Wer oder was ist Artchi?
Ein Forumsmitglied:
http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-4508.htmlGrüssli
-
Wenn ich duke nukem forever durchgespielt habe, kann ich mir mal diese Wundergui anschauen....