C++ Primer v.s. C++ von A bis Z



  • Ich habe beide Bücher und bin selber ein Anfänger, immer noch. Daher das folgende:

    C++ von A bis Z ist einfach geschrieben, die Erklärungen gehen an vielen Stellen nicht allzu tief, was Vor- und Nachteil sein kann. Anfänger mit einer Flut von Informationen zu überhäufen halte ich für den falschen Weg eine Programmiersprache zu erlernen. Ich kann nur schwer beurteilen ob das Buch inhaltlich an allen Stellen korrekt ist, habe aber von vielen gehört, dass grobe Fehler enthalten sein sollen.

    Der C++ Primer steigt relativ schnell in Klassen ein, was wohl heute ein Vorteil sein soll, ich finde es aber ein bischen arg schnell. Eindeutig geht der Primer tiefer auf die Merkmale von C++ ein, als C++ von A bis Z. Die enthaltenen Übungen sind zu bewältigen, leider sind aber keine Lösungen enthalten, oder ich bin nicht in der Lage sie zu finden.

    Was würde ich mir heute kaufen, wenn ich nur ein Buch kaufen wollte? Den C++ Primer, ganz klar. Ich vertraue den Leuten die sagen, das Buch von J. Wolf würde Fehler enthalten. Daher kann ich für C++ von A bis Z keine Empfehlung aussprechen.

    Ob allerdings auf Dauer ein Buch reichen wird, wage ich zu bezweifeln. Der C++ Primer ist zwar umfassend, aber in anderen Büchern findet man immer auch neue Ideen und Lösungsansätze für das eine oder andere Problem. Das Standard-Werk von Stroustrup im Regal stehen zu haben ist sicher nicht verkehrt.
    Im übrigen empfiehlt es sich, den Primer in englischer Sprache zu kaufen. Die deutsche Übersetung scheint nicht so sauber zu sein wie man es von Addison Wesley eigentlich erwarten darf.

    Ich hoffe ich konnte ein wenig helfen und wünsche viel Spaß mit C++.



  • Ein Einsteiger kann meiner Meinung nach nicht wirklich ganz bewerten, ob ein Buch ein gutes C++-Buch ist. Er kann bewerten, ob er verstanden hat, was ihm dort vermittelt wurde. Aber ob ein C++-Buch auch "richtiges C++" vermitteln kann? Das kann ein Einsteiger ebend nicht. Das kann nur jemand, der Ahnung von C++ hat.

    Und wie SeppJ schon schrieb, ist C++ von A bis Z eher ein "C-Buch das versucht C++".

    Und Wolfsherz kritisiert genau die saubere C++-Linie in C++-Primer. Klassen und dessen Objekte kommen dabei schon in einem C++-HelloWorld!-Programm vor, siehe std::cout . Somit können Klassen nicht froh genug kommen. Normalerweise müsste gleich wegen einem HelloWorld! sogar schon zu Anfang Operator-Overloading vorkommen, damit man überhaupt die Hintergründe versteht.



  • Wolfsherz schrieb:

    Die enthaltenen Übungen sind zu bewältigen, leider sind aber keine Lösungen enthalten, oder ich bin nicht in der Lage sie zu finden.

    Für die 3. Auflage gab es noch ein Lösungsbuch, allerdings nicht von den Autoren selbst.

    Hier ein Seite, die dir nützlich sein könnte: http://cppprimer.jesseolmer.com



  • OSKiel schrieb:

    okee...íst C++ Primer den auch gut als reines nachschlagewerk und nicht um es von anfang bis ende durchzuarbeiten...???

    Das verstehe ich jetzt nicht so ganz. Weil als Anfänger wirst du nicht komplett hin und her springen können. Es gibt Bücher, wie "Der C++ Programmierer" von Ulrich Breymann, welch aus zwei Teile bestehen: 1. Teil arbeitet man von Anfang zum Ende durch. 2. Teil ist ein Nachschlagewerk. Das Buch ist übrigens auch sehr zu empfehlen!

    Der C++ Primer ist ähnlich aufgebaut.

    Die Frage ist: was willst du denn nachschlagen? Meistens muß man ja nur die C++-Bibliothek nachschlagen, das macht man wohl immer und immer wieder. Die Sprache selbst hat man aber irgendwann intus. Da kann man auch in einem "Nichtnachschlagewerk" nachschlagen.

    Ich selber habe sogar mehrere Nachschlagewerke: 1. "Die C++ Standardbibliothek" vom Springer Verlag. 2. "Die C++ Programmiersprache" von Bjarne Stroustrup. Und das sind nicht meine einzigen C++-Bücher! 😃 Du wirst also nicht darum herum kommen, im Laufe der Zeit immer wieder Bücher zu kaufen.



  • Ich habe die 4. Auflage des C++-Primers selbst gelesen. Was ich dir sagen kann, ist folgendes: Lass dich bloß nicht vom 1. Kapitel abschrecken. Klar, dort kommen schon Klassen drin vor, aber das 1. Kapitel ist mehr als ein Ausblick auf die Dinge die da kommen mögen zu verstehen. Das 1. Kapitel ist auch nur ca. 30 Seiten lang und wenn du da noch nicht all zu viel verstehst, ist das auch nicht schlimm. Denn danach geht es mit ganz elementaren Dingen los. Elementare Typen, Variablen, Deklaration und Definition, etc. Im Anschluss daran machst du schon Bekanntschaft mit std::string und std::vector und erhälst einen kurzen Überblick über Iteratoren. Dabei lernst du erstmal nur mit std::string, std::vector und Iteratoren umzugehen. Das ganze wird dann in späteren Kapiteln immer weiter vertieft. Erst im Kapitel 4 kommen dann die Zeiger und Arrays. Es folgen Kapitel über Anweisungen, Ausdrücke und Funktionen und du wirst immer weiter mit der C++-Standardbibliothek vertraut gemacht. Erst ab dem 12. Kapitel wirst du lernen eigene Klassen zu schreiben und Operatoren zu überladen. Dabei geht man auch intensivst auf die Fallstricke ein, über die man stolpern kann wenn man Zeiger in Klassen verwendet. Es folgt ein umfangreiches Kapitel über Vererbung und die Templates kommen natürlich auch nicht zu kurz. Zum Schluss gibt es dann noch 2 Kapitel über fortgeschrittenere Themen wie z. B. virtuelle Vererbung.

    Ich fand das Buch rundum gelungen und die deutsche Übersetzung hat sicherlich den einen oder anderen kleinen Fehler drin, aber ist dennoch ganz lesenswert. Also eine klare Empfehlung meinerseits. 🙂



  • @all: danke für die infos

    Artchi schrieb:

    Die Frage ist: was willst du denn nachschlagen?

    Also ich brauche ein Buch wo ich nachschlagen kann wenn ich z.B. nicht weiß wie man z.B. eine if-schleife aufbaut...weil bei mir läuft es so mein meister sagt schreibe nen programm für ein Fahrstuhl und dann muss ich dasmachen ohne weiter hilfe...



  • Ich habe (u.a.) C++ von A bis Z gelesen und kann sagen: für einen Anfänger ist es durchaus geeignet. Es geht umfangreich auf alle Teilgebiete ein und erklärt jedes Thema in einer angemessenen Sprache. Dieses Buch bildete bei vielen das "Tor zu C++", nach diesem Buch hat man keine Probleme mehr, durch speziellere Bücher durch zu kommen, der Autor erwähnt dort z.B. Stroustrup's "Die C++ Programmiersprache" für den guten alten "Feinschliff", ich würde auch noch "Effektiv C++ programmieren" dazunehmen. Der Autor hat immer einen gewissen C-Stil inne, aber ich finde das nicht schlimm. Es hilft oft dem besseren Verständnis des internen Aufbaus der Standardbibliothek. Wer von Anfang std::string nimmt und nie mal richtig Fehler mit C-Strings gemacht hat bzw. wer immer nur std::list benutzt, ohne auch mal selber eine Template-basierte Verkettete Liste gebaut zu haben, der hat wirklich was verpasst und kann nicht behaupten, C++ in all seinen Facetten kennengelernt zu haben, denn C gehört immernoch zu C++. 😉
    Ich warne als etwas erfahrenerer Programmierer vor 2 Dingen in dem Buch:

    1.) Die Kapitel der STL sind mit der Weile mehr als langweilig. Sie sind im Zyklus immer Tabelle - Erklärung - Code - Tabelle ... Es dient als gute Referenz, wenn man mit Google gerade das nicht findet, was man doch mal dunkel in Erinnerung hatte, der ausführliche Register hat es dann hinten drin, aber an sich ist es manchmal einfach langweilig.

    2.) Es kann schon mal ein inhaltlicher Fehler oder Kuriositäten vorkommen. Ich staunte nicht schlecht, als er z.B. einen selber programmierten STL-Vector-Container privat von seinem eigenen Allokator erben lässt, obwohl Komposition eigentlich der bevorzugte Weg und auch oft so in den Standardbibliotheken umgesetzt ist.



  • Ad aCTa schrieb:

    Wer von Anfang std::string nimmt und nie mal richtig Fehler mit C-Strings gemacht hat bzw. wer immer nur std::list benutzt, ohne auch mal selber eine Template-basierte Verkettete Liste gebaut zu haben, der hat wirklich was verpasst und kann nicht behaupten, C++ in all seinen Facetten kennengelernt zu haben, denn C gehört immernoch zu C++. 😉

    Dem widerspreche ich wieder einmal in einen wesentlichen Punkt: Es ist kein Fehler auch mal einen C-Ausflug zu machen, die Reihenfolge zweifel ich aber an. Ich habe die Erfahrung gemacht das jemand der erst den C-Weg geht, sich diesen auch angewöhnt. Warum nicht erst einmal C++ lernen, und dann und wann ein paar Blicke hinter die Kulissen werfen lassen (Sprich mit std::string und Co beginnen, aber von Zeit zu Zeit auch - aber halt danach - den C-Weg zeigen).



  • asc schrieb:

    Ad aCTa schrieb:

    Wer von Anfang std::string nimmt und nie mal richtig Fehler mit C-Strings gemacht hat bzw. wer immer nur std::list benutzt, ohne auch mal selber eine Template-basierte Verkettete Liste gebaut zu haben, der hat wirklich was verpasst und kann nicht behaupten, C++ in all seinen Facetten kennengelernt zu haben, denn C gehört immernoch zu C++. 😉

    Dem widerspreche ich wieder einmal in einen wesentlichen Punkt: Es ist kein Fehler auch mal einen C-Ausflug zu machen, die Reihenfolge zweifel ich aber an. Ich habe die Erfahrung gemacht das jemand der erst den C-Weg geht, sich diesen auch angewöhnt. Warum nicht erst einmal C++ lernen, und dann und wann ein paar Blicke hinter die Kulissen werfen lassen (Sprich mit std::string und Co beginnen, aber von Zeit zu Zeit auch - aber halt danach - den C-Weg zeigen).

    Dem widerspreche ich wieder einmal in einen wesentlichen Punkt: Es wird viel zu viel "reines C++" gebaut, wo es mit alten Methoden viel einfacher und schneller ginge.



  • Ich finde, wenn man mit std::string beginnt, macht man sich gar nicht erst noch die Mühe, sich mit char-Arrays und deren Besonderheiten auseinander zu setzen und das richtig zu verstehen (was ich aber für sehr sehr wichtig halte, diese C-String-Geschichte). Umgekehrt hingegen, wenn man sich oft mit C-Strings verfrickelt, kann einem dann der C++-String wie ein Segen vorkommen und wird dankend angenommen. - war jedenfalls bei mir so -



  • Man kann auch nachträglich lernen, wie intern z.B. die String-Klasse arbeitet. Wer sich z.B. das Buch "Die C++ Standardbibliothek" aus dem Springer Verlag kauft, wird z.B. im ersten Kapitel lernen, wie man einen eigenen Container und Algorithmus mittels Templates implementiert. Die Std-Algos werden auch erklärt, wie man sie implementieren kann. Aber natürlich muß man C++ als Sprache können, weil das Buch kein C++-Einsteigerbuch ist.

    Was ist denn heute das Problem am Image von C++? Nämlich das angebllich immer "der komplizierte Weg" gegangen wird. Es gibt da einen User hier im Forum, der das immer wieder sagt... und das kommt meistens daher, das die C++-Programmierer nicht die Standard-Lib kennen und nicht benutzen. nein, ich muß ja dynamische Arrays mittels "new" benutzen. Weil vector habe ich nur nebenbei mal kennen gelernt.

    Als ich damals Vector im "Die C++ Standardbibliothek" kennen gelernt habe, habe ich Luftsprünge gemacht und erstmal meinen Kumpel angerufen und ihm begeistert über meine neue Entdeckung erzählt. Seit dem habe ich nie wieder ein dynamisches Array mittels new angelegt!!! Aber ich bin wohl eher die Ausnahme, die so reagiert. Es ist "cooler" Lowlevel und fehlerträchtig zu programmieren, obwohl man es nicht muß.



  • Artchi schrieb:

    Was ist denn heute das Problem am Image von C++? Nämlich das angebllich immer "der komplizierte Weg" gegangen wird. Es gibt da einen User hier im Forum, der das immer wieder sagt... und das kommt meistens daher, das die C++-Programmierer nicht die Standard-Lib kennen und nicht benutzen.

    Sehe ich ebenso. Wenn dann Probleme geschildert werden und man std::vector oder std::string vorschlägt, kommt dann immer: Soweit bin ich noch nicht im Buch (oder ähnliches).

    Wer hier vorwirft das man heute viel zu viel C++ lernt, soll mir erstmal Zeigen wo das bitte schön so ist. Eher hat man diverse C-Kompatibilitäts-Probleme bei Anfängern. Und C++ mag zwar weitgehend C-Kompatibel sein, C++ ist dennoch nicht C! Wer das Wissen braucht, oder sich für die Details interessiert kann sich jederzeit noch nachträglich damit vertraut machen. Ich halte ein gewisses Grundwissen auch für sinnvoll, aber sehe es für wichtiger an, wenn jemand erstmal auf sicheren Boden beginnt (Beispiel std::string) und schnell ein erstes Erfolgserlebnis bekommt, als sich von Anfang an mit der Pointerproblematik beschäftigen zu müssen, bevor er auch nur den ersten Text zusammensetzen und ausgeben kann.

    Das ist etwa so als würde man jemanden daran hindern mit Kreide an einer Tafel zu schreiben, wenn er nicht vorher die chemische Zusammensetzung der Kreide kennt.

    Man kann auch ohne C-spezifische Kenntnisse ein C++ Programm schreiben, und sich das Wissen, wenn es nötig oder sinnvoll ist, bei Bedarf aneignen.



  • asc schrieb:

    Man kann auch ohne C-spezifische Kenntnisse ein C++ Programm schreiben, und sich das Wissen, wenn es nötig oder sinnvoll ist, bei Bedarf aneignen.

    Ist es wieder Zeit für diese Diskussion? Na dann ...

    Also, ich widerspreche hier. Weil es meiner Erfahrung nach eigentlich selten bis nie darum geht C++ an sich zu lernen.

    An den Hochschulen wird in den Informatik-Grundkursen eigentlich immer mit der Implementierung von dynamischen Datenstrukturen (Listen, Bäumen, Mengen ...) sowie Suchalgorithmen, Sortieralgorithmen usw. begonnen - also praktisch pure Zeigermanipulation.

    Ob Pascal, Java, C, C++, ode was auch immer, es läuft immer darauf hinaus obige Konzepte zu verstehen. Gleichzeitig habe ich es noch nie erlebt, dass z.B. C-lastiger Programmierstil irgendwie als problematisch angesehen wurde bzw. überhaupt thematisiert wurde.



  • Mitleid schrieb:

    Also, ich widerspreche hier. Weil es meiner Erfahrung nach eigentlich selten bis nie darum geht C++ an sich zu lernen.

    Selbst im Studium hatte ich erst Klassen der (damals noch nicht ganz standardisierten) C++ Bibliothek, bevor wir wild mit Zeigern jonglierten. Den es geht um mehrere Bereiche, und der erste ist auch, Ergebnisse in irgendeiner Form auszugeben (und da ist std::string und std::cout nicht verkehrt) und dann wie man bestimmte Mechanismen einsetzt.

    Mitleid schrieb:

    An den Hochschulen wird in den Informatik-Grundkursen eigentlich immer mit der Implementierung von dynamischen Datenstrukturen (Listen, Bäumen, Mengen ...) sowie Suchalgorithmen, Sortieralgorithmen usw. begonnen - also praktisch pure Zeigermanipulation.

    Und auch dafür muss man nicht erst C-Spezifische Dinge lernen, sondern auch da reicht es die Bereiche zu erklären die man benötigt, und die C++ Standardbibliothek kann dennoch für Ausgaben etc. sinnvoll sein.

    Mitleid schrieb:

    Gleichzeitig habe ich es noch nie erlebt, dass z.B. C-lastiger Programmierstil irgendwie als problematisch angesehen wurde bzw. überhaupt thematisiert wurde.

    Ich schon, im Berufsleben, und teilweise sogar im Studium.



  • OSKiel schrieb:

    Also ich brauche ein Buch wo ich nachschlagen kann wenn ich z.B. nicht weiß wie man z.B. eine if-schleife aufbaut...

    FAILED...



  • asc schrieb:

    Ich halte ein gewisses Grundwissen auch für sinnvoll, aber sehe es für wichtiger an, wenn jemand erstmal auf sicheren Boden beginnt (Beispiel std::string) und schnell ein erstes Erfolgserlebnis bekommt, als sich von Anfang an mit der Pointerproblematik beschäftigen zu müssen, bevor er auch nur den ersten Text zusammensetzen und ausgeben kann.

    Sehe ich ganz genauso. Das ist einer der Gründe warum ich auch den C++-Primer jedem Anfänger sofort empfehlen würde, denn da kommt z. B. (wie schon erwähnt) der std::string vor dem C-String.

    Ad aCTa schrieb:

    [...]bzw. wer immer nur std::list benutzt, ohne auch mal selber eine Template-basierte Verkettete Liste gebaut zu haben, der hat wirklich was verpasst und kann nicht behaupten, C++ in all seinen Facetten kennengelernt zu haben, denn C gehört immernoch zu C++. 😉

    Wo ich deinen Beitrag gelesen habe fiel mir noch ein kleiner Nachtrag ein, und zwar das man auch im C++-Primer eine Template-basierte Verkette Liste zusammenbaut. Es werden dabei 2 - 3 Elementfunktionen ausgelassen die man dann selbständig als Übung implementieren darf. So gesehen verpasst man mit dem Buch nichts. 😉



  • sunny31 schrieb:

    OSKiel schrieb:

    Also ich brauche ein Buch wo ich nachschlagen kann wenn ich z.B. nicht weiß wie man z.B. eine if-schleife aufbaut...

    FAILED...

    Lol hast du deswegen extra eine Domain gekauft oder gabs das schon 😃 😃



  • [MOP] schrieb:

    sunny31 schrieb:

    OSKiel schrieb:

    Also ich brauche ein Buch wo ich nachschlagen kann wenn ich z.B. nicht weiß wie man z.B. eine if-schleife aufbaut...

    FAILED...

    Lol hast du deswegen extra eine Domain gekauft oder gabs das schon 😃 😃

    Hehehe 😃

    Nein, die gehört nicht mir. Find die Seite einfach nur krass.



  • Ich überlege neben C++ von a bis z ein weiteres Buch zu kaufen vielleicht C++ Primer oder das bekannte C++ Buch von Bjarne Stroustrup. Ich weiß nicht, ob es sich lohnt C++ Primer zu kaufen, wenn man schon C++ von A bis Z hat, deswegen das Buch von Stroustrup. Allerdings weiß ich nicht, ob ich da überhaupt was verstehe mit meinem Englisch (9.Klasse Gymnasium) 🙄
    Was würdet ihr mir empfehlen? Kennt ihr noch andere Bücher?

    PS: Ich würde sagen ich bin ein C++ Anfänger bis Fortgeschrittener, also die Grundlagen kann ich, oder ist das zu wenig um Stroustrups Buch überhaupt zu verstehen 😉



  • Stroustrup's Buch "The C++ Programming Language" gibt es auch auf Deutsch, logischerweise mit deutschem Titel.
    Wolf schreibt in seinem Buch ja selber, dass er mit diesem Buch die Grundsteine für dieses Buch legt. Ich habe es jedenfalls so gemacht. Okay, vor diesem Schritt griff ich zu "Effektiv C++ Programmieren". Anschließend habe ich es noch mal probiert, das Buch zu lesen, und nach einer Eingewöhnungszeit geht es. Es ist auf jeden Fall kein Fehler, dieses Buch zu kaufen, aber man genießt es eher in kleinen Häppchen.


Anmelden zum Antworten