Fragen eines Programmieranfängers



  • Guten Tag,
    ich würde mich selbst als Programmieranfänger beschreiben und hoffe, ihr könnt mir bei einigen Fragen & Problemen helfen.
    Ich lerne seit ca. 2 Jahre das Programmieren. Bisher war es aber so, dass ich mir immer verschiedene Sprachen angeschaut habe und eben die Grundlagen gelernt habe. Nun habe ich mich vor ca. 6 Monaten entschieden, bei C++ zu bleiben. Ziel ist es, GUI-Anwendungen und Spiele zu programmieren. Zu Zweiteres zähle ich keine unrealistischen 3D-Ultraspiele, die ich am besten sogar noch alleine programmiere, sondern kleinere Spiele, die sich zumindest vorerst im 2D-Bereich beschränken sollten.

    Nun kommen wir auch schon zum Hauptproblem. Ich habe mir bisher mehrere Bücher durchgelesen und kenne viele Funktionalitäten der allgemeinen Programmierung und C++. Damit will ich sagen, dass ich vom Allgemeinwissen her eigentlich up to date bin. Ich kenne die Grundlagen, von Schleifen bis hin zur STL und habe mich auch mit der Objektorientierung befasst. Trotzdem weiß ich nie, wie ich beim Programmieren vorgehen soll.

    Sei es, dass ich eine "Übungsaufgabe" von Freunden gestellt bekomme. Ich versuche sie zu lösen und komme an manchen Punkten nicht weiter. Ich weiß einfach nicht, wie man das "gelernte" auch sinnvoll anwendet. Gucke ich mir nun aber den Quellcode des Anderen an, scheint mir alles logisch und ich kann es sowohl nachvollziehen als auch verstehen. Dann stellt sich mir immer die Frage, wieso ich bloß selbst nicht darauf gekommen bin.

    Und genau dies ist auch das, dass mich desöfteren demotiviert. Einerseits reicht es mir langsam mit der Konsole. Denn die Funktionalität anhand des Codes habe ich mittlerweile gelernt. Wenn ich mir dann aber nun diverse "Next-Way-Things" wie QT für die GUI-Programmierung anschaue, merke ich wieder, dass ich nicht weiß, wie ich vorgehen soll.
    Gucke ich mir aber fertige QT-Konstrukte an, kann ich diese verstehen.

    Ist dies normal? War dies bei euch genauso? Oder bin ich einfach nur zu "dumm" dafür?
    Ich hoffe, dass ihr mir vielleicht einige Tipps geben könntet, wie ich mein Problem lösen könnte. Denn dieses "für das Eine zu gut, für das Andere zu schlecht" lässt mir keinen Mittelpunkt, mit dem ich mich befassen könnte. Dies hat die Folge, dass ich nach einiger Zeit des Lernens wieder eine "Lernpause" einrichte, da die Motivation wieder flöten ging.
    Ich möchte noch anmerken, dass ich ein Autodidakt bin. Ich bringe mir alles selbstständig anhand eines Buches bei.

    Liebe Grüße,



  • machs doch einfach schritt für schritt. erst mal ein fenster dann nen button rein, usw... das von dir beschriebene kenne ich auch, aber eher in bezug auf komische bit verrenkungen wo man als ottonormalo eher nicht drauf kommt (paar davon check ich auch nicht wenn ich sie sehe 😉 ).

    und wie bei allem im leben macht natürlich übung den meister 🙂



  • Dass mir zu einer Problemstellung wirklich gar nichts eingefallen ist, habe ich bisher eigentlich nicht erlebt. Viel häufiger kam es vor, dass ich zwar irgendeine Idee hatte, die ich jedoch mangels Sprachkenntnissen und Programmiererfahrung sehr mühsam umzusetzen versuchte. Im Nachhinein würde man natürlich vieles anders lösen.

    Grundsätzlich ist es sehr gut, wenn man sich ausführlich mit den Grundlagen und der Theorie von C++ befasst, aber dadurch kann man noch nicht programmieren. Erfahrung sammelt man durch Projekte. Vielleicht nicht zu grosse, aber auch keine Miniaturanwendungen, die sich nur auf ein isoliertes Problem fokussieren. Entscheidend für guten Code ist es meiner Meinung nach, vorhandene Möglichkeiten (seien das Sprachfeatures oder Bibliotheken) effizient zu kombinieren, sodass einem mächtige Werkzeuge für verschiedenste Anwendungsgebiete zur Verfügung stehen.

    Wenn du dich mit C++ auskennst, schadet ein Blick über die Konsole hinaus sicher nicht. Bibliotheken wie Qt benötigen aber auch ihre Einarbeitungszeit, das solltest du nicht unterschätzen. Aber wenn du regelmässig damit programmierst und vielleicht auch ab und zu fremden Code anschaust, bist du sicher auf dem richtigen Weg. Wie mein Vorposter schon sagte, solltest du dir nicht zu viel aufs Mal vornehmen. Setze dir Ziele, die dich auch motivieren, und überlege dir, auf welchem Weg du diese am besten erreichen kannst. Anschliessend wirst du vielleicht merken, dass du vieles falsch eingeschätzt hast und eine Alternative sich eher bewährt hätte. Schon besitzt du wieder mehr Wissen, welches dir für das nächste Projekt zur Verfügung steht.

    Falls dir immer noch Ideen zur konkreten Realisierung fehlen, kennst du vielleicht wirklich noch zu wenig Techniken. Dann könntest du ein detaillierteres Buch (z.B. Modern C++ Design, wenn du Templates magst) lesen oder einen Blick auf C++-Bibliotheken werfen, die ihren Fokus auf die Sprache selbst legen (z.B. Boost).



  • Sebastian_T schrieb:

    Ist dies normal?

    Zu einem gewissen Grad: ja.

    War dies bei euch genauso?

    s.o. 🙂

    Oder bin ich einfach nur zu "dumm" dafür?

    Das ist natürlich eine Möglichkeit, aber das können wir denke ich nach dem was du geschrieben hast unmöglich beurteilen 🙂

    Ich hoffe, dass ihr mir vielleicht einige Tipps geben könntet, wie ich mein Problem lösen könnte. Denn dieses "für das Eine zu gut, für das Andere zu schlecht" lässt mir keinen Mittelpunkt, mit dem ich mich befassen könnte. Dies hat die Folge, dass ich nach einiger Zeit des Lernens wieder eine "Lernpause" einrichte, da die Motivation wieder flöten ging.
    Ich möchte noch anmerken, dass ich ein Autodidakt bin. Ich bringe mir alles selbstständig anhand eines Buches bei.

    Ich kann dir ein paar Bücher empfehlen wenn es allgemein um C++ geht, wie man sich damit nicht in den Fuss schiesst, und einige "Grundlagen". Wobei ich mit "Grundlagen" hier Dinge meine die du als Anfänger vermutlich noch nicht weisst, zumindest bei weitem nicht alle. Da wären:

    * "Effective C++" von Scott Meyers
    * "More Effective C++" von Scott Meyers
    * "Exceptional C++" von Herb Sutter

    Was gängige Entwurfsmuster angeht:

    * "Design Patterns. Elements of Reusable Object-Oriented Software." von der "Gang Of Four" (Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides)
    (aka. "Das GOF Buch")

    Wozu ich dir leider keinen guten Tip geben kann, ist, wie man lernt "Probleme zu lösen". Also sie in kleinere Probleme aufzubrechen, bis man auf einem Level ist wo man eine Lösung kennt bzw. suchen/nachschlagen kann, und diese Teil-Lösungen dann zu einem Ganzen zusammenzusetzen. Wie man das lernen kann, wenn man die Fähigkeit nicht bereits hat, kann ich dir leider nicht sagen. Ist aber mMn. das Um und Auf beim Programmieren.

    Natürlich ist Erfahrung ein riesen riesen Bonus, und die fehlt dir einfach. Lass dich also nicht entmutigen, nur weil einer deiner Freunde ein Problem an dem du ein paar Tage gesessen bist innerhalb von Stunden oder Minuten gelöst hat. Frag ihn lieber wie er zu der Lösung gekommen ist 🙂



  • Ich bin mal so frei und verlink die Diskussion von hier:
    http://www.spieleprogrammierer.de/index.php?page=Thread&threadID=14598

    btw:
    Soll kein Vorwurf, sondern Anregung sein.



  • hallo,
    ich kenne dein Problem allzu gut. Man könnte sagen du hast da oben haargenau mein
    exProblem beschrieben.
    Ich sage exProblem weil ich inzwischen da einigermaßen weiter gekommen bin.
    Meine Lösung:
    Las dir Zeit. Hetzte dich nicht selber und gönn dir mal eine Lernpause. Ich habe festgestellt, dass nach 1 - 2 Monaten Pause der Horizont sich wieder etwas weiter öffnet sobald man sich wieder in den code stürzt. Ich habe schon zich mal ein AHA Elebnis gehabt nach so einer Pause.

    Was mir ausserdem sehr hilft ist ein Buch von Gerhard Willms C++ Das Grundlagenbuch. Es ist eine Art Referenz der Sprache aber für Anfänger, da es viele Hintergrund Infos hat. Man kann immer dort nachschlagen wenn man sich nicht mehr an Details erinnnert.

    Zu guter letzt habe ich mir ein Ziel gesetzt, dass ich zwar öfter nach unten oder dann wieder nach oben koregiert habe (überwiegend nach unten 🙂 ) und arbeite ständig daran weiter. Es soll eine kleine Bibliothek an funktionen werden um kleine Spielchen zu schreiben.
    Ich finde genau das richtige Projekt für Anfänger da man immer an etwas anderem arbeiten kann wenn man bei einer Sache nicht voran kommt. Und es motiviert unheimlich wenn mann wieder eine Funktion mehr in der Lib hat.

    Alles in allem kann ich dir sagen: Las den Kopf nicht hängen mit der Zeit wird es weniger deprimierend (ich bin übrigens schon seit 5 Jahren dabei - ich bin deinen Weg also schon gewissermaßen gegangen)

    Gruß.


Anmelden zum Antworten