Modulo


  • Mod

    Da drängt sich die Frage auf: Was erwartest du von einem Buch mit einem solchen Titel? Didaktisch ausgefeilte Aufarbeitung? Kompetenz in allen Bereichen der Sprache? Oder vielleicht nicht doch eher Geldmacherei, die von einer "Lernen ist doof, aber Spiele sind geil"-Mentalität profitieren möchte?

    Die Kritiken bei Amazon sind wie üblich bei Anfangerbüchern, wo der Leser nur selten die Qualität beurteilen kann:
    50 Mal 5 Sterne, weil der Autor so schön mit Umgangssprache erklärt.
    Wenige Male 1 Stern, weil der Autor keine Ahnung vom Thema hat.



  • Mir ist bewusst, wenn ich das Buch durchgearbeitet habe, noch lange keine Spiele
    programmieren kann. Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.

    Und ich habe auch schon versucht mit anderen büchern c++ zu lernen.
    Aber bisher fällt es mir mit diesen Buch am leichtesten c++ zu lernen, obwohl das buch in der tat einen sehr fragwürdigen titel hat.



  • Mihyaeru schrieb:

    Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.

    C++ für Spieleprogrammierer, 4. Auflage (2013) p. 33 schrieb:

    int main ()
    {
    	// Variablen
    	//
    	int Lebensenergie; // Variable deklarieren
    	
    	Lebensenergie = 100; // Variable definieren
    	cout << "Lebensenergie des Spielers: " << Lebensenergie << endl;
    	
    	return 0;
    }
    

    Wow, 2 Kommentare, 2 Fehler.


  • Mod

    Swordfish schrieb:

    int main ()
    {
    	// Variablen
    	//
    	int Lebensenergie; // Variable deklarieren
    	
    	Lebensenergie = 100; // Variable definieren
    	cout << "Lebensenergie des Spielers: " << Lebensenergie << endl;
    	
    	return 0;
    }
    

    Wow, 2 Kommentare, 2 Fehler.

    Hah! Jetzt weiß ich endlich, wo dieser Mythos herkommt, dass ersteres eine Deklaration und letzteres eine Definition wäre. Das habe ich hier im Forum schon ein paar Mal gesehen und mich gefragt, welche Quelle das so weit verbreitet hat.

    PS: Das letzte Mal, dass ich das gesehen habe, kam das von dir, Swordfish! Hast du auch nach diesem Buch gelernt?



  • Okay, da ich natürlich erst angefangen habe mit den lernen, kann ich natürlich nicht sagen ob irgendwo fehler drin sind oder nicht.

    In den beispiel würde es mich interessieren wo da die fehler sind. Denn beim ausführen hat das funktioniert, ohne das mir fehler oder warnungen angezeigt wurden von visual studio 2012.

    Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?



  • SeppJ schrieb:

    PS: Das letzte Mal, dass ich das gesehen habe, kam das von dir, Swordfish! Hast du auch nach diesem Buch gelernt?

    Witzkeks. Ich war müde. 🙄


  • Mod

    Mihyaeru schrieb:

    Mir ist bewusst, wenn ich das Buch durchgearbeitet habe, noch lange keine Spiele
    programmieren kann. Mir geht es tatsächlich nur um die grundlagen. Und diese sind in diesen Buch bisher ganz gut erklärt worden.

    Die Sache ist halt, dass du als Anfänger nur die Form, nicht den Inhalt beurteilen kannst. Gut geschriebener Stuss ist immer noch Stuss, den man dann besonders gut verinnerlicht hat.

    Ganze Generationen von Leuten denken, die Nudel würde beim Kochen weich wegen der Hitze, das Flugzeug würde wegen Herrn Bernoullis Prinzip fliegen oder Wasser wäre blau, weil sich der Himmel darin spiegelt* (ich habe sogar schon die umgekehrte Erklärung gehört!). Alles, weil der nette "Experte" im Fernsehen es so schön erklärt hat.

    *: Beim Wasser kommt die Allgemeinheit so langsam auf den Trichter, dass die Erklärung so nicht haltbar ist. Dank dem Internet verbreitet sich das sogar recht flott. Natürlich geht das auch umgekehrt bei so manchen falschen Erklärungen. Der Flugzeugmythos hält sich beispielsweise geradezu penetrant außerhalb von akademischen Fachkreisen.


  • Mod

    Mihyaeru schrieb:

    In den beispiel würde es mich interessieren wo da die fehler sind. Denn beim ausführen hat das funktioniert, ohne das mir fehler oder warnungen angezeigt wurden von visual studio 2012.

    Das Programm ist technisch richtig, die Erklärungen in dem Beispiel sind bloß vollkommen falsch. Zeile 5 ist eine Definition (und genau genommen auch eine Deklaration). Zeile 7 ist keines von beidem. Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde 😉 ). Das ist kein Flüchtigkeitsfehler, der Mensch hat die Bedeutung der Begriffe schlicht und einfach nicht verstanden.

    Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?

    Guck in meine Signatur oder die als wichtig markierten Threads!



  • Mihyaeru schrieb:

    Und welches buch würdet ihr denn anfängern empfehlen, die noch nicht mal die grundlagen können, um c++ zu lernen?

    Die üblichen Empfelungen sind

    C++-Primer, 5th Edition
    Die C++-Programmiersprache, 4. Auflage (gibt's ne aktuellere deutsche Übersetzung?)
    Der C++-Programmierer
    C++: Das komplette Starterkit für den einfachen Einstieg in die Programmierung (Louis hat doch auch ned viel falsch gmacht, oder?)



  • Könnt ihr mir denn ein Buch empfehlen, um c++ zu lernen?

    Weil es ist natürlich in mein eigenen interesse c++ von anfang an richtig zu lernen und nicht erst zu lernen und hinterher festzustellen, dass das buch fehler enthielt. Wie es halt jetzt passiert ist, nur das ich mit den lernen noch nicht allzu weit war.



  • Okay, da mein englisch nicht so das beste ist würde ich dann eher eins von den beiden nehmen:
    Der C++-Programmierer
    C++: Das komplette Starterkit für den einfachen Einstieg in die Programmierung

    Kennst du eins dieser beiden Bücher? Oder sind sich die beiden Bücher recht ähnlich, so das es im prinzip egal ist welches der beiden nimmt?



  • Nein, kann ich leider nicht. Ein Buch vom Breymann hab' ich mal gelesen, das war aber 200x.

    //@SeppJ: Und eins mit zwei Sprachen im Namen. Ich hab's irgendwann einem unliebsamen Menschen "nachgeworfen" 😉



  • Dann bedanke ich mich an dieser Stelle für eure Hilfe und Hinweise.

    Hat mich davor bewahrt C++ falsch zu lernen.


  • Mod

    Swordfish schrieb:

    //@SeppJ: Und eins mit zwei Sprachen im Namen. Ich hab's irgendwann einem unliebsamen Menschen "nachgeworfen" 😉

    So habe ich auch mit C/C++ angefangen 😃 . Ich weiß nicht mehr, welcher Autor oder Verlag, außer dass das Buch gelb war. Aber es war eben das Buch zum Thema im Handapparat. Und natürlich hatte jemand die STL-Referenz im letzten Kapitel heraus gerissen, so dass diese mir monatelang unbekannt war. Ich hoffe, ich hab's so langsam überwunden. Ein Glück ist es auf Grund eines Fehlers in der Forensoftware nicht so ganz einfach, meine ersten Beiträge hier aufzuspüren :p .



  • SeppJ schrieb:

    Ich weiß nicht mehr, welcher Autor oder Verlag, außer dass das Buch gelb war. Aber es war eben das Buch zum Thema im Handapparat. Und natürlich hatte jemand die STL-Referenz im letzten Kapitel heraus gerissen, so dass diese mir monatelang unbekannt war.

    Jep. Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt 😉



  • Swordfish schrieb:

    Und dann kombinierst das noch mit Borland C/C++ 3.1 for DOS und mit einem damals fehlenden Internetzugang und das Debakel ist perfekt 😉

    Als das aktuell war, war das Top. Quasi das CLang der damaligen Zeit 😃



  • SeppJ schrieb:

    Ein Autor, der bei der Erklärung dieser (grundlegenden) Begriffe solch dicke Fehler macht, ist inkompetent (oder sehr müde 😉 ).

    Nicht unbedingt.



  • Ihr habt ja gesagt das im den gezeigten Code das erste keine deklaration und das zweite keine Definition ist.

    Und da ich mir natürlich auch im internet verschiedene Tutorials angesehen habe und dort zwei verschiedene Varianten von Deklaration und definition auftauchen (einmal die Variante wie hier gezeigt und einmal umgekehrt).

    Könnt ihr mir deshalb auf einfache und verständliche art und weise erklären was der unterschied zwischen den beiden sachen ist?



  • ^Ohne Anspruch auf Tiefgang und Vollständigkeit^
    Deklaration = reine Bekanntmachung eines Bezeichners = Schau Compiler, mich gibts. Ich hab gewisse Charakteristika, aber ich bins nicht wirklich. Gehört solltest von mir aber jetzt gehabt haben.

    Jede Deklaration ist gleichzeitig eine Definition außer wenns

    • extern deklariert ist = ich bin in einer anderen Übersetzungseinheit
      - eine Funktion ohne Body ist
      - eine class - oder struct -deklaration ist.
      - ein static Member einer Klasse ist.
      - ...

    Vielleicht helfen Beispiele. Man bekommt mit der Zeit ein Gefühl dafür:

    foo.h

    #ifndef FOO_H_INCLUDED
    #define FOO_H_INCLUDED
    
    extern int i; // Deklaration -> mich gibts. wo? frag den Linker.
    
    int foo( int, int );  // Deklaration -> aufrufen ohne Definition is nicht.
    
    class bar;   // Deklaration -> Instanziieren ist nicht. Groesze unbekannt.
                 // Pointer darauf = ok weil Groesze dafuer egal.
    
    #endif /* FOO_H_INCLUDED */
    

    foo.cpp

    #include "foo.h"
    
    int i = 42; // Deklaration, Definition und Initialisierung in einem
    
    int foo( int f, int f )
    {
        return f * f;
    }
    
    class bar {
    
        friend void baz();  // deklariert eine Funktion als friend
    
        static int data;    // deklariert data als static Member;
    };
    
    int bar::data = 47;     // definiert und initialisiert
    

    main.cpp

    #include "foo.h"
    
    int main()
    {
        i = 666;  // remember? das extern Dingens das eigentlich in bar.cpp lebt?
    
        int k;    // Deklaration und Definition in einem - ja, ich leb' hier.
    }
    

  • Mod

    Swordfish schrieb:

    Jede Deklaration ist gleichzeitig eine Definition außer wenns

    • extern deklariert ist = ich bin in einer anderen Übersetzungseinheit
      - eine Funktion ohne Body ist
      - eine class - oder struct -deklaration ist.
      - ein static Member einer Klasse ist.
      - ...

    Vielleicht wär's besser, wenn du es umgekehrt beschreiben würdest. Denn jede Definition ist eine Deklaration, ohne Ausnahmen. Gerade zählst du bloß allerlei Möglichkeiten auf, Deklarationen zu machen.


Anmelden zum Antworten