“Der C++ Programmierer“ schwierig?



  • @john-0 @Swordfish @LeMace das stimmt. Es liegt wirklich an meinem Verständnis. Habe vor etwas längerer Zeit mal angefangen und bin dann bis zur Seite 90 gekommen. Jetzt, Ca 4Monate später, habe ich weiter gemacht und habe die alten Seiten einfach nochmal überflogen und nun weitergemacht. Ist jetzt mein zweiter Tag an dem ich weitermache. Vielleicht sollte ich die alten Seiten mich mal durchlesen. Was meint ihr?



  • @Th69 die Übungen sind echt nicht so einfach. Habe über Discord mit Zhavok geschrieben, der das Buch auch hat und nach Seite 20 die Übungen auch weggelassen hat



  • Dann lade dir wenigstens die Lösungen zu den Übungen herunter: Der C++ Programmierer/downloads
    Und versuche die Programme dort bei dir zum Laufen zu kriegen und inhaltlich zu verstehen (Übung macht den Meister!).



  • @ENDER sagte in “Der C++ Programmierer“ schwierig?:

    Habe über Discord mit Zhavok geschrieben, der das Buch auch hat und nach Seite 20 die Übungen auch weggelassen hat

    Das habe ich niemals geschrieben. Ich habe aufgehört mit den Übungen, nachdem bei einer Lösung die String-Klasse verwendet wurde, welche aber erst später im Buch vorgestellt wird. Ich muss zugeben die Aufgaben im Buch sind schon sehr knackig. Besonders wenn man vorher nichts mit Programmierung zu tun hatte.
    Wie ich auch im Discord sagte, habe ich mir viel Zeit genommen eigene Übungen zu machen. Wenn man das Gelesene verstanden hat, kommt man selbst auf viele Ideen die man umsetzen kann um sicherzustellen, ob man es wirklich verstanden hat. Manchmal hab ich 3-4 Tage lang nur Übungen zu einem kleinen Thema gemacht. Die gesamte letzte Woche habe ich zum Beispiel nur Übungen zum Thema Multithreading gemacht und bin noch nicht damit fertig. Und das obwohl ich nur die ersten 20 Seiten von dem Thema gelesen habe.
    Ebenfalls hatte ich geschrieben, dass man dieses Buch nicht lesen sollte wie einen Krimi. 1000 Seiten in zwei Wochen lesen und fertig ist die Laube funktioniert bei C++ nicht. Davon abgesehen, dass man nach dem Buch immer noch ein Anfänger ist, würde man in dieser kurzen Zeit niemals alles verstehen.
    Überspringe keine Themen! Eins der ganz wenigen Dinge, die ich vielleicht etwas halbherzig gelesen habe ist Mehrfachvererbung, weil ich dafür momentan noch keine Anwendung habe und das wahrscheinlich schnell wieder vergesse. Und da ich eh nach dem Buch mit GUI's anfangen möchte, werde ich dort wahrscheinlich häufig auf dieses Thema stoßen und kann dann dort üben. (IMHO).
    Ansonsten solltest generell alles zu den Grundlagen sehr genau lesen und verstehen, da meistens auf dem Wissen aufgebaut wird und du sonst gar nicht mehr klar kommst. Mir hilft es auch, wenn ich mir die Dinge selbst noch einmal in meinen Worten erkläre und sie aufschreibe. Bis jetzt habe ich über 1300 Zeilen nur an Notizen. Was auch gut hilft ist, im Kopf durchzugehen, wie du jemandem ein Thema erklären würdest. Kommst du bei deiner Erklärung ins stocken, hast du Lücken und musst es dir nochmal durchlesen. Was auch wichtig ist: Schreibe nebenbei eigene Projekte die dir Spaß machen. Und wenns ein Galgenraten-Spiel ist. Das sorgt dafür, dass man nicht die Motivation verliert. Setze dich generell nicht mit dem Thema unter Stress.



  • @Zhavok sagte in “Der C++ Programmierer“ schwierig?:

    Wenn man das Gelesene verstanden hat, kommt man selbst auf viele Ideen die man umsetzen kann um sicherzustellen, ob man es wirklich verstanden hat.

    Ich bin nie mit irgendwelchen Übungen zurechtgekommen und hab noch nie welche gemacht. Ich hatte immer nur etwas verstanden, wenn ich das auch selber gebraucht hatte und dewegen "in der Stimmung war", das zu verstehen. Da hatte ich aber auch den Vorteil, dass ich als Schüler angefangen habe und nichts verstehen musste. Ich atte Projekte gemacht, die mir Spass gemacht haben und dabei nach und nach alles gelernt, was man so braucht.



  • @Zhavok Tut mir leid, dann habe ich das wohl mit deinen Übungen leider falsch verstanden. Aber danke für deine Tipps🙂👍
    Ich werde jetzt die Themen immer wieder durchgehen, wenn ich sie nicht verstehe. Habe jetzt das Buch nochmal von vorne angefangen. Ich versuche jetzt die Übungen aus dem Buch zu erledigen. Allerdings werde ich hauptsächlich irgendwelche kleinen Programme selber machen, wie du oben schon geschrieben hast. Eins wusste ich nämlich auch schon von Anfang an
    -nur Übung macht den Meister😉



  • Ja, ich denke wenn du das durchziehst bist du auf dem richtigen Weg. Und lass dir Zeit. Das dich C++ frustrieren wird und du Momente haben wirst wo du absolut keine Lust mehr drauf hast ist ganz normal 😂



  • @Zhavok das weiß ich. Ich habe auch schon mehrere Versuche hinter mir. Jetzt ziehe ich es aber durch. Ich denke mit den Buch “Der C++ Programmierer“ werde ich schon sehr weit kommen von Grundgerüst. Allerdings muss ich mir später auch noch andere Bücher kaufen, da ich mich auch sehr, wie du, für das GUI interessiere und ich auch nebenher mal abundzu eine Windows Software entwickeln möchte. Ich weiß, da gibt es besser geeignete Sprachen, aber ich möchte mich jetzt erstmal auf diese Sprache konzentrieren, da ich hauptsächlich auf Arduino Programmierung gehen möchte🙂



  • @ENDER sagte in “Der C++ Programmierer“ schwierig?:

    @john-0 @Swordfish @LeMace das stimmt. Es liegt wirklich an meinem Verständnis. Habe vor etwas längerer Zeit mal angefangen und bin dann bis zur Seite 90 gekommen. Jetzt, Ca 4Monate später, habe ich weiter gemacht und habe die alten Seiten einfach nochmal überflogen und nun weitergemacht. Ist jetzt mein zweiter Tag an dem ich weitermache. Vielleicht sollte ich die alten Seiten mich mal durchlesen. Was meint ihr?

    Wenn das nicht mehr gegenwärtig ist – eindeutig ja. Es nützt Dir ja nichts einen Text zu lesen, den Du nicht verstehst, weil Dinge nicht mehr sitzen. Dazu sind vier Monate für einen Anfänger nicht gerade eine kurze Zeit für eine Unterbrechung. Deshalb nicht darüber aufregen, sondern akzeptieren, dass das bei Dir nicht mehr alles frisch im Gedächtnis ist.



  • @john-0 richtig gefehlt hat es eigentlich nicht. Das Problem war einfach nur, dass ich einfach nichts verstanden habe. Kann vielleicht auch daran liegen, dass ich es einfach viel zu schnell gelesen habe. Werde jetzt alles genau durchgehen und viele Übungen machen. Wenn ich irgendwo Probleme habe werde ich mich vielleicht im Forum melden, wenn ich nichts im Internet finde. Und danke an alle für die Tipps und die Motivation👍🙂
    Die kann gut gebrauchen😉



  • An Aufgeben ist nicht zu denken!



  • Ich weiß der Thread ist schon ne Weile her, aber ich wollte auch mal meinen Senf dazu geben:

    Ich finde es überhaupt nicht schlimm, sogar normal, wenn man beim Durcharbeiten eines (C++) Buches Dinge nicht auf Anhieb versteht. Vor allem, wenn man allgemein mit dem Programmieren erst anfängt. Ich persönlich musste bei meinem ersten Buch einige Kapitel mehrmals durchgehen, bevor ich den Inhalt komplett verstanden hatte und anwenden konnte.

    Das Zeug lernt man nicht über Nacht. Gib Dir ein paar Jahre Zeit... Die Personen hier wo sich richtig gut auskennen beschäftigen sich bestimmt auch schon länger mit der Materie. Also mach Dir keinen Stress. Du kannst das Buch auch mal weglegen, Dich mit eigenen Projekten beschäftigen und ein paar Wochen/Monate später nochmals damit anfangen. Wichtig ist nur, dass man am Ball bleibt.



  • Ich habe auch einen Versuch C++ zu lernen vor ein paar Jahren mit "Der C++ Programmierer" angefangen. Das Buch lesen und C++ lernen funktionierte bei mir nicht. So schnell ich da was gelernt habe, so schnell war das Wissen auch wieder weg. Und bei dem meisten Zeug wusste ich nicht wozu das überhaupt jemals gut sein soll.

    Erst jetzt, wo ich ein reales GUI Projekt angefangen habe, beginne ich richtig zu lernen und zwar nicht durch lesen des Buches als erstes, sondern aus Fehlern, die ich mache, Zum Ausbügeln der Fehler recherchiere ich im Web und lese mir Hintergrundinfos im Buch an.

    Für mein Projekt reicht mir ca 2% der Sprache. Mein Ziel ist es aber auch nicht das so elegant wie möglich zu programmieren(das kann ich eh nicht), sondern das Projekt überhaupt zum funktionieren zu bringen. Wenn alles fertig ist, kann ich analysieren was ich hätte besser machen können und dann fange ich die Sache vielleicht noch mal von vorne an oder nutze das Wissen für ein anderes Projekt. Vielleicht probieren ich auch, das Projekt mal in anderen Sprache umzusetzen und zu schauen was besser, was schlechter läuft.

    tldr;
    C++ nur aus einem Buch zu lernen funktionierte bei mir nicht.



  • nur durch lesen des buches kann niemand lernen. es gehört immer dazu, a) die übungsaufgaben zu programmieren und b) zu experimentieren.



  • Jein, also allein von abstrakten Übungsaufgaben habe ich nicht viel behalten. Am besten festigt sich Wissen bei mir wenn ich konkret an einem praktischen Problem fest hänge und dann irgendwann zur Lösung komme, damit das Projekt weiter geht. Aber das mag bei jedem anders sein. C++ sollte man meiner Meinung nach immer an Projekten lernen, gleich von Anfang an.

    C++ empfinde ich schon als extreme Herausforderung und hätte ich die Wahl, würde ich was anderes nehmen. Aber so was wie Qt und dann noch extrem performant gibt es nur in Verbindung mit C++, leider leider leider also muss man da durch.



  • ja also wenn die aufgabe lautet, dass man eine zahl einlesen und dann entweder "die zahl ist gerade" oder "die zahl ist ungerade" oder "die zahl ist gar nichts" ausgeben soll, dann hat das den zweck, die verwendung von verzweigungen einzuüben. man arbeitet keine 10 kapitel am tag durch, sondern eher so ein kapitel pro woche, bis man die übungsaufgaben auswendig kann.

    @chris4cpp sagte in “Der C++ Programmierer“ schwierig?:

    Aber so was wie Qt und dann noch extrem performant gibt es nur in Verbindung mit C++, leider leider leider also muss man da durch.

    nimm doch die windows-api, wenn es performant sein soll. das geht auch mit C.



  • Ja, bei so ganz simplen Basics wie Schleifen, Verzweigungen, etc. gebe ich dir ja Recht. Das ist ganz schnell erklärt. Aber so Sachen wie OOP mit all den Möglichkeiten der Übergabe und dem Management von Objekten, das ist doch ein ganz anderer Schuh. Dann die oft kryptischen Compiler Fehlermeldungen, das ist schon hart. Erst Google spuckt dann irgendwann aus was wirklich los ist.

    WinAPI und C, funktioniert dann nur unter Windows. Ich hätte das schon gern Crossplattform.

    Rust mit Qt wäre vielleicht was schönes.



  • @chris4cpp sagte in “Der C++ Programmierer“ schwierig?:

    Ja, bei so ganz simplen Basics wie Schleifen, Verzweigungen, etc. gebe ich dir ja Recht. Das ist ganz schnell erklärt. Aber so Sachen wie OOP mit all den Möglichkeiten der Übergabe und dem Management von Objekten, das ist doch ein ganz anderer Schuh. Dann die oft kryptischen Compiler Fehlermeldungen, das ist schon hart. Erst Google spuckt dann irgendwann aus was wirklich los ist.

    stufe 1: objektorientierte modellierung lernen
    stufe 2: c++ lernen

    andersherum geht natürlich auch, aber wie willst du vernünftig vererben, wenn du eigentlich gar nicht richtig weißt, was vererbung eigentlich ist?

    WinAPI und C, funktioniert dann nur unter Windows. Ich hätte das schon gern Crossplattform.

    ich bin nicht so der linux-fan, also für unix würde ich eher ncurses benutzen. 😃



  • Hehe Ncurses, da lief damals unser Backend für die Webentwicklung mit. Heute würde man Application Layer oder so dazu sagen. Ne ich brauche leider eine richtige GUI, bei mir läuft Audio und Grafik in Echtzeit. Wenn da irgendwas zickt oder unnötig kopiert wird etc. merke ich das sofort an Aussetzern oder höhere CPU-Last.

    Ich nutze nicht sooo viel Vererbung, nur wenn es unbedingt nötig ist. Mein komplexestes ist ein Observer Pattern was ich für meine Logger Klasse nutze. Ansonsten nutze ich OOP nur als Kapselung von Daten und Methoden. Bei einer Klasse arbeite ich mit Vererbung einer abstrakten Basisklasse(also alle Methoden sind virtuell und ich spreche dann die abgeleiteten Objekte per Polymorphie an)

    Ansonstn wie gesagt so wenig OOP wie möglich. Nichts ist schlimmer als sich später durch ein Gedöns an Klassen wurschteln zu müssen um durchzublicken was passiert. Lieber auf Eleganz verzichten und dafür lesbaren Code erhalten.



  • @chris4cpp sagte in “Der C++ Programmierer“ schwierig?:

    Ne ich brauche leider eine richtige GUI, bei mir läuft Audio und Grafik in Echtzeit. Wenn da irgendwas zickt oder unnötig kopiert wird etc. merke ich das sofort an Aussetzern oder höhere CPU-Last.

    Ich bin mir nicht sicher ob ich dich richtig verstehe, aber... was hat das mit der GUI zu tun? Grundsätzlich sollte das Audio-Gedöns in einem eigenen high-priority Thread laufen. Und der sollte idealerweise nur non-blocking mit anderen Threads kommunizieren. Bzw. wenn man doch mal was locken muss dann:

    • kurz halten (in allen Threads)
    • in allen non-audio Threads die die selbe Mutex locken müssen die Prio vorher auf die des Audio-Threads anheben (und nach dem Unlock natürlich wieder rückgängig machen)

    Die GUI darf dann zicken und CPU fressen wie sie lustig ist, Aussetzer darf das keine verursachen.

    Ansonstn wie gesagt so wenig OOP wie möglich.

    Ich glaub du hast ne komische Vorstellung davon was OOP bedeutet. OOP != sinnlos rumvererben.


Log in to reply