Was sind die schlimmsten Anfängerfehler in C++?



  • Ich möchte C++ lernen und frage mich was die schlimmsten Anfängerfehler in C++ sind? Mit was haben die Anfänger die meisten Probleme?



  • IMHO, alles auf einmal lernen zu wollen. C++ ist eine komplexe multiparadigmensprache. Es gibt nur wenig unnützes, aber es lässt sich nicht alles auf einmal lernen.

    Ich habe mich (vor langer, langer Zeit) erst mal nur um Klassen/Objekte gekümmert, da ich mit C++ auch meine ersten Schritte in OO Programmierung unternommen habe. Dann die Standardbibliothek (damals noch STL) mit dem was man dafür von Templates wissen musste.

    Mein Vorteil war: ich konnte schon sehr gut C und Modula2. Da waren Zeiger und Speicherverwaltung keine Hürde mehr.


  • Mod

    Schlechtes Murksbuch oder schlechter Lehrer. All zu oft wird C++ als "C mit Klassen" oder gar "C mit cout" gelehrt. In Extremfällen sogar als "Pascal, aber mit {}". Und manchmal hat der Lehrer/Buchautor überhaupt gar keinen Plan und will einem Autoreifenhändler als Wurstbrote vormachen, was in gar keiner Sprache richtig ist.



  • C++ als erste Sprache lernen.



  • AnfaengerAmAnfang schrieb:

    was die schlimmsten Anfängerfehler in C++ sind?

    Der Wolf.

    AnfaengerAmAnfang schrieb:

    Mit was haben die Anfänger die meisten Probleme?

    Den Wolf wegzuwerfen.



  • n99eun schrieb:

    C++ als erste Sprache lernen.

    Das sehe ich total anders.

    C++ war meine erste Sprache und es mag am Anfang schwieriger sein, aber es befreit einen auch völlig von den "Denkproblemen" bzw. annahmeproblemen die Leute von anderen Sprachen haben wie e.g. Java oder javascript .



  • Ne schrieb:

    C++ war meine erste Sprache und es mag am Anfang schwieriger sein, aber es befreit einen auch völlig von den "Denkproblemen" bzw. annahmeproblemen die Leute von anderen Sprachen haben wie e.g. Java oder javascript .

    Meine war es auch, mit Ausnahme von zwei Skriptsprachen, von denen die eine nichtmal Schleifen hatte.
    Ich wage mal zu behaupten, dass fuer Javaprogrammierer der Umstieg genauso schwer ist, weil die alten Javamethoden mit hundertfacher Vererbung, alle Objekte mit new auf dem Heap, die niedrigstmoegliche Basisklasse verwenden, in C++ funktionieren (warum also aendern), aber viel verschwendeten code, langsam und fehleranfaellig sind. Stattdessen hat man generics ueber templates (ducktyping statt Vererbung) und value types, was beides nicht bekannt ist.

    Das Problem ist haeufig, dass fuer einen Anfaenger die STL schlichtweg unverstaendlich ist, weil man bei jedem Schritt ueber iteratoren stolpert. Dann macht man sich halt alles selber mit rohen Schleifen, index-zugriffen und im schlimmsten Fall rohen Speicherbloecken und schlaegt sich dann ewig mit dangling pointers und out-of-bound-errors herum und irgendwann kollabieren die Programme unter dem komplizierten Code (nach Memory leaks hat man nichtmal gesucht, weil man bisher keine Probleme damit hatte).



  • Ich habe damals mit C++ angefangen weil ich mehr über Computer und ihre Funktionsweise herauszufinden wollte. Leider habe ich blind den guten Rezessionen auf Amazon vertraut und mir das Buch von Jürgen Wolf gekauft. Meiner ansicht nach ist der größte Anfängerfehler die Sprachen C und C++ zu verschmischen.

    Danke Jürgen, für die verschwendete Zeit.



  • Ich bin C++ Anfänger und mein größter Fehler ist, dass ich zu viel in zu kurzer Zeit lernen will.



  • Mein Fehler war es damals ohne Buch mit try & error + google + forum zu lernen.
    Dadurch bin ich denen hier ziemlich auf den Keks gegangen 😉

    EDIT: Irgendwann habe ich dann aber Effective C++ von Meyers gelesen und das hat schon was reparieren können. (Danach folgten dann mehr Bücher)

    EDIT 2: Und C++ ist auch meine erste Sprache.



  • Einfach ist der Lernen sicherlich nicht. Bei mir ist C++ nicht die erste Sprache, davor waren noch ein wenig C und Java und ganz früher Assembler und davor Basic. Am einfachsten war Assembler, da es wenig Befehle gab und man bei jedem Befehl zu 100% wusste wie lange der brauchte und was er exakt macht. Als dann Caches eingeführt wurde, war es auch mit meiner Maschinensprachenzeit vorbei. Ich habe auch mal x86 probiert aber das ist echt Mies im Vergleich zu 68000er Assembler und auch zu 6502 was ich auch zu Anfang probiert hatte. Der Grund ist aber gleich geblieben und hilft Adressen und Zeiger als was ganz normales anzusehen, denn die sind in Assembler wie auch in dem portablen Assembler C das A und O.

    Nichts desto trotz ist es schön, weiterhin nah an der Maschine dran zu sein, wenn auch nicht so nah wie früher. Die Komplexität von C++ haut mich aber auch immer wieder von den Socken und wenn ich hier dann Template- und STL-Magic sehe, dann weiß ich, dass ich noch viiiieeeeeel zu lernen habe. 😃 Ich bin auch immer wieder erstaunt, wie viel Wissen die Leute hier haben, nicht nur von C++, sondern auch von Software-Architektur, Mathematik, Informatik usw. Ich muss da noch viel ergoogeln und in Referenzen und Büchern nachschauen.



  • Übungsaufgaben im C++ Buch zu überspringen, weil man glaubt, das locker lösen zu können. Häufig verpasst man da irgendein Detail, das man für weitere Übungsaufgaben später im Buch braucht. Da hat man dann schon die ersten Risse im Fundament, und wenn man Glück hat erkennt man, dass man sie hat. Wenn man Pech hat und es nicht merkt produziert man komplizierteren Code als es notwendig wäre.



  • den quake source code anzugucken und zu hoffen dass man auch nur irgendwo irgendwas checken kann 😃

    ich und meine tapfre Motivation sind grade am Boden zerstört. 😞



  • Kassiopeia schrieb:

    den quake source code anzugucken und zu hoffen dass man auch nur irgendwo irgendwas checken kann 😃

    Das ist natuerlich boese, weil quake uralt ist und man damals ganz anders programmiert hat.


  • Mod

    @volki: Einer der größten Anfängerfehler ist es Bücher schreiben zu wollen. Den hat Wolf gemacht und bisher nicht eingesehen.



  • Nekromanten-Alarm.


Log in to reply