C++ - Wo soll ich anfangen?!?!
-
Hallo liebe forumsmitglieder!
Bin neu hier, deswegen kurz meine „eckdaten“...
- Oli aus der Schweiz, verheiratet, familie
- Technik freak (besonders aviatik)
- Grosser verfechter von open source
- Linux (momentan ubuntu) und window$ userVor etwa 4 monaten habe ich einen 20 abende dauernden kurs abgeschlossen, in welchem die C++ basics vermittelt wurden. Habe also ne grobe ahnung davon, wie ein C++ programm aussieht. Nur leider beschränkt sich mein wissen (welches z.t. in kursunterlagen und nicht ausschliesslich in meinem kopf „gespeichert“ ist) darauf, progrämchen zu schreiben, welche bestenfalls auf der konsole laufen.
Nun möchte ich das gelernte aber anzuwenden beginnen und zwar im rahmen von software mit richtigen GUIs. Klar, am anfang sollen es kleine projekte sein. Später hoffe ich, durch beiträge an open source projekte etwas zurückgeben zu können – und natürlich meine eigene erfahrung mit anderen zu teilen. Ich fände es echt toll, wenn ihr aus eurem erfahrungsschatz berichten, und mir zeigen würdet, wie ihr angefangen habt! Vielleicht ging es euch ja auch mal wie mir heute, nämlich dass ihr keine ahnung hattet, wo ihr anfangen sollt. Vielleicht hattet ihr aber auch jemanden, der euch ganz viel gezeigt hat – was ich leider nicht behaupten kann; da kommt ihr ins spiel...
Als einstieg habe ich das buch „Cross-Platform GUI Programming...“ von Julian Smart angeschaft, weil mir wxWidgets ne gute sache zu sein scheint und ich programme für linux und window$ schreiben möchte. Überdies hat mich code:blocks ziemlich überzeugt (wohl eher aus subjektiven gründen).
Die diskusion sei hiermit eröffnet. Vielen dank jetzt schon, für euer sehr geschätztes feedback!!!
Oli
PS: Ist dieser thread überhaupt am richtigen ort angesiedelt?
-
Hallo! Ich habe das gelesen und weiss nicht viel mit der Frage anzufangen. Ich denke, man fängt stets immer ganz unten an der Basis an, die man versteht. Welche Basis das sein soll, sollte ein gutes Buch liefern.
-
1. Stell sicher, dass du auch C++ gelernt hast und nicht C mit Klassen. Das ist leider bei vielen Abendkursen der Fall. Kannst du uns vielleicht mal ein kleines Progrämmchen zeigen wie du es anstellen würdest, ein paar Namen einzulesen und alphabetisch sortiert auszugeben?
2. Such dir ein Framework aus. WxWidgets ist sicherlich eine gute Wahl. Such dir ein Tutorial (sollte viele geben), mit diesen kannst du sehen, wie ein GUI-Programm ungefähr aussieht und kannst ein paar einfache Fenster auf den Bildschirm zaubern mit ein bisschen Basisfunktionalität.
3. Und dann heißt es üben: Typische Übungsprogramme sind im Prinzip die gleichen die man auch auf der Konsole machen würde, zum Beispiel Taschenrechner, Fahrkartenautomat, usw. Versuch dabei erstmal mit den einfachen Mitteln aus dem Tutorial auszukommen um ein Gefühl für die Sache zu bekommen.
4. Versuch nach und nach den Stil (nicht die volle Funktionalität!) existierender Anwendungen nachzumachen. Zum Beispiel Menüleisten oder grafische Elemente hinzufügen. Versuche selbstständig anhand der Doku des Frameworks rauszufinden wie das geht, damit du ein Gefühl für diese bekommst.
5. Wenn du einigermaßen sicher in den Grundlagen bist, überflieg die Doku des Frameworks, was es sonst so alles bietet. Versuch alle Dinge mal auszuprobieren, um mal zu sehen wie sie funktionieren und wozu sie gut sind.
6. Profit!
-
Hey Oli,
aus deinem Beitrag lässt sich wohl herauslesen, dass du in der Softwareentwicklung generell fitt werden möchtest, sonst würdest du nicht davon reden, der OS-Community irgendwann etwas zurückgeben zu wollen.
Aber gerade dann ist es falsch, zu früh auf GUI-Anwendungen zu schielen. An deiner Stelle würde ich die imperativen Grundlagen inklusive objektorientierter Programmierung anhand der Konsole lernen.
Es lassen sich auch interessante Anwendungen ohne GUI entwickeln. Jede Benutzereingabe, die man in einer GUI tätigen kann, kann man auch in der Konsole eingeben. Und Hauptaugenmerk sollte schließlich auf der eigentlichen Programmfunktion und nicht auf der netten Benutzeroberfläche liegen, oder nicht?
-
Vielen dank für eure hilfreichen antworten!
Ja, es ist gewiss so, dass man an der basis anfängt und dann darauf aufbaut. Und genau da bin ich irgendwie hängen geblieben. Am letzten kursabend hat der kursleiter dann noch etwas von "deployment" und anderen fachausdrücken gefaselt und uns erklärt, dass wir noch weit davon entfernt sind, richtig brauchbare anwendungen zu schreiben. Das war schon ziemlich demotivierend, weswegen ich nicht wirklich weiter weiss. Vielleicht hilft dir das, berniebutt, zu verstehen warum ich die fragen hier stelle.
Kennt vielleicht jemand aus erfahrung ein gutes buch, welches einen aus den basics heraus ins "richtige" programmieren führt? Wie wär's z.b. mit "C++ lernen und professionell anwenden"?
Übrigens: Es war ein C++ kurs und kein C mit klassen kurs - obwohl das natürlich auch behandelt wurde, um den einstieg in objektorientierte programmierung zu erleichtern.
Oli
-
Also für die Basis fand ich den C++ Primer Plus super. Es könnte allerdings sein, dass dich dieses Buch unterfordert. Kannst ja mal im Inhaltsverzeichnis nachsehen was so behandelt wird.
Dann habe ich noch Effective C++ sehr hilfreich und interessant gefunden zum lesen. Ist ein Standardwerk, das wohl so ziemlich bei jedem professionellen C++ Progger im Bücherregal steht. Hier werden für viele Probleme Lösungsansätze vorgestellt. Es zeigt also wie man C++ richtig anwendet und nicht nur was man machen kann.
-
lambda_0 schrieb:
Aber gerade dann ist es falsch, zu früh auf GUI-Anwendungen zu schielen. An deiner Stelle würde ich die imperativen Grundlagen inklusive objektorientierter Programmierung anhand der Konsole lernen.
Objektorientierte Programmierung lernt man glaub ich einfacher mit GUI-Anwendungen.
-
Natürlich ist es demotivierend zu hören, dass man zwar jetzt schon einige Wochen für die Programmiersprache geopfert hat und man trotzdem noch nicht viel anzufangen weiß. Doch das ist zunächst leider so und das ist wie beim Lernen eines Instrumentes meistens die größte Schwierigkeit: Man darf einfach nicht aufgeben!
Das von dir erwähnte Buch "C++ lernen und professionell anwenden" habe ich auch in meinem Regal stehen und hatte damals täglich jeden Abend weitergelesen. Mir hat das Buch sehr viel gebracht und als fortführende Lektüre ist es daher sicherlich empfehlenswert.
Wenn dir das alles viel zu lange dauert, dann würde ich dir zu C# raten (In dem Fall solltest du dir aber auch dort ein Buch suchen. Ich glaube es gibt auch ein kostenloses von Galileo Computing). C# läuft jedoch leider nur auf Windows, aber du kannst damit sehr einfach eine Anwendung mit GUI entwickeln und erhältst damit vielleicht schneller ein Erfolgserlebnis.
Viele Wege führen nach Rom. Abhängig davon, was du erreichen willst, solltest du dich für einen entscheiden. Wobei du natürlich auch C# und C++ parallel angucken kannst. Die Sprachen sind ja ähnlich (aber nicht gleich!).
Viel Erfolg und nicht aufgeben (das ist wirklich das wichtigste!)
-
Schreib einfach ein paar Programme. Man lernt eine Programmiersprache nur, wenn man mit ihr auch ein paar Programme geschrieben hat. Nach den ersten Schritten mit C++ sollte man sich unbedingt Effektiv C++ durchlesen.
Effective C++ | ISBN: 9780321334879
Exceptional C++ bzw. GotW sollte man sich danach auch anschauen. So lernt man viel über die Sprache.
Wenn du unbedingt GUIs programmieren willst (ist eigentlich eine total langweilige Geschichte), dann nimm dir einfach irgend ein fertiges GUI-Framework wie Qt oder GTKmm oder wxWidgets. Man muss nur beachten, dass die meisten GUI-Frameworks kein guter Lehrmeister für C++ sind. Das Design und die Programmiertechniken sind oft ziemlich veraltet und nicht sonderlich schön. Ein guter Einstieg wäre vielleicht, wenn du einen Taschenrechner für die Konsole schreibst und dann später dafür eine GUI bastelst.
Übrigens finde ich es auch keine schlechte Idee, wenn man am Anfang versucht ein größeres Projekt zu schreiben. Das wird sehr wahrscheinlich nicht fertig. Aber das ist auch egal. Durch das größere Ziel hat man einfach eine hohe Motivation und durch die ganzen Kleinigkeiten die man für das Projekt bastelt, lernt man im Endeffekt eine ganze Menge.
Ich weiß nicht mehr genau, was mein erstes Projekt mit C++ werden sollte. Es wurde natürlich auch nicht fertig. Aber für das Projekt habe ich viel gelernt, weil ich dann so Kleinigkeiten, wie Verkettetelisten, Parser für die Konfigurationsdateien etc. geschrieben habe.
-
Vielen dank an alle, für die wertvollen inputs! Muss das jetzt alles erst einmal verdauen...
Kennt jemand die deutsche übersetzung von "Effective C++"? Taugt die was?
Hat jemand erfahrung mit dem übungsbuch zu "C++ lernen und professionell anwenden"?
-
linuxx schrieb:
Kennt jemand die deutsche übersetzung von "Effective C++"? Taugt die was?
Ja, die ist durchaus brauchbar.
linuxx schrieb:
Übrigens: Es war ein C++ kurs und kein C mit klassen kurs - obwohl das natürlich auch behandelt wurde, um den einstieg in objektorientierte programmierung zu erleichtern.
Genau diese Aussage "Um den Einstieg in die Objektorientierte Programmierung zu erleichtern." halte ich etwas für gewagt. Falls wirklich C spezifische Bestandteile, von den es C++ Entsprechungen gibt, verwendet wurden, ist das für mich ein Klassischer "C/C++"-Kurs und kein "C++" Kurs (und in der Regel mit Abstrichen im C++ Bereich).
Versteh mich nicht falsch: Man kann C++ auch ohne "merklich sichtbare" OOP anfangen (z.B. halte ich die grundlegende Verwendung der std::string-Klasse auch ohne OOP-Kenntnisse für sinnvoll möglich...). Aber falls in euren Kurs mit Dingen wie printf und char-Arrays begonnen wurde, verdient es nicht die Bezeichnung "C++"-Kurs.
-
Ich kann dir auch nur empfehlen dich noch ne Weile mit der Konsole zu beschäftigen. Ich wollte damals auch recht schnell auf GUI umsteigen, nach ein paar Versuchen mit verschiedenen Frameworks bin ich dann zur Konsole zurück, weil einem dann viel verloren geht bzw man es gar nicht lernt. Denn man muss sich nebenbei auch auf die GUI konzentrieren die oftmals je nach Framework auch nicht so richtig modernes C++ ist.
Dann lieber mit der Konsole beschäftigen, da kann man auch viele interessante Sachen machen und man beschäftigt sich mit der eigentlichen Programmlogik.Ist meine Meinung
Lg freeG
-
@linuxx
Projekt Vorschlag 1:
Programmiere doch ein ganz einfaches Puzzle Spiel, welches ein beliebiges Bild auf ein Quadrat von 3x3 Buttons mapped und ein Button als Tauschbutton zulässt. Bei einem neuen Spiel werden dann die Buttons wild durcheinandergewürfelt und der Spieler muss das Bild wieder durch Tauschoperationen mit dem Tauschbutton zusammensetzen.Projekt Vorschlag 2:
Steige doch mal in die Fraktale Welt ein und programmiere doch die Mandelbrot Menge mit visueller Ausgabe.Vorteil: Du lernst viel über Programmierung und du hast immer etwas was du deinen Kindern (wenn du welche hast) zeigen kannst.
-
---- schrieb:
Natürlich ist es demotivierend zu hören, dass man zwar jetzt schon einige Wochen für die Programmiersprache geopfert hat und man trotzdem noch nicht viel anzufangen weiß.
Hui, mehrere Wochen... wer sich Mathematik an der Uni gibt, macht das einige Jahre, bis er für sein Fach angemessene Probleme ganzheitlich lösen kann. Wenn man was wirklich will, sollte man schon ein wenig Durchhaltevermögen mitbringen.