Rezension zu O'Reillys »C++ kurz & gut«
Das Buch kommt im handlichen Taschenformat daher und informiert im kurzen und prägnanten Stil über die Spracheigenschaften von C++. Dies sind Themen wie »die prinzipielle Struktur eines C++-Programms«, »Datentypen, Anweisung und Operatoren« und »Klassen, Vererbung und Überladen«. Auf die Standard Template Library und andere Bibliotheken des C++-Umfeldes wird dabei nicht eingegangen.
Von der Verwendung fällt es meiner Meinung nach in eine eingeschränkte
Sparte. Für einen Profi, dessen tägliches Handwerk C++ ist und der nur
noch die Parameter von std::foo.bar() nachschlagen muss, bietet das Buch
nicht genügend Informationen und für einen Anfänger ist das Buch zu knapp
und bietet schon aufgrund des eingeschränkten Umfangs nicht genügend
Informationen.
Jedoch sehe ich es als eine gute Informationsquelle für Leute, die vielleicht zu C++ wechseln und bereits andere objektorientierte Sprachen kennen, die sich also nur über die Gepflogenheiten von C++ informieren wollen, und ich sehe es auch als eine Gedächtnisstütze für Leute, die nicht regelmäßig mit C++ arbeiten. Für sie kann es ganz hilfreich sein einfach nochmal nachschlagen zu können wie eine bestimmte Anweisung formuliert wird oder welche Qualifizierer eine Variable haben kann.
In diesem Umfeld kommt auch der Charakter als Referenz sehr gut zum Tragen. Das Buch behandelt trotz der Kürze alle Eigenschaften der Sprache. Mir ist nichts aufgefallen, das ich beim Lesen vermisst habe.
Der Text ist gut lesbar und verständlich. Mit kleinen Code-Beispielen in vielen Abschnitten wird die Verwendung der Anweisungen noch einmal verdeutlicht und an einigen Gefahrenquellen gibt der Autor Hinweise auf die drohende Gefahr.
Zum Schluss noch einige Fehler und Verbesserungsvorschläge:
- Seite 34, oberer Absatz: »... des gleichen Typs initialisieren.Im Fall von ...« Nach dem Punkt und vor dem »Im« fehlt ein Leerzeichen.
- Seite 50, Überschrift »Relationale Operatoren«: Es gibt keinen
Operator »
<=>« - Seite 53, letzter Absatz von »Folge«: »In diesem Beispiel
...
i=0, j=1010.« Die letzte 10 sollte meiner Meinung nach da nicht sein. - Seite 59, Abschnitt »Zeigervariablen«: Im Verweis auf den Abschnitt »Qualifier« hat sich ein falsches Anführungszeichen eingeschlichen.
- Seite 62, im Hinweis: Das Schlüsselwort
inlineist keine »Anforderung an den Compiler«, sondern eine »Empfehlung für«. Eine Anforderung ist für mich eine Eigenschaft, die der Compiler selbst erfüllen muss. - Seite 74, oberer Absatz: »
return-Anweisungen [...] können [...] dazu verwendet,...« Vor dem Komma fehlt noch ein »werden«. - Seite 81, oberer Absatz: Hier hat sich ein falsches Anführungszeichen im Verweis auf »Initialisierer für Instanzvariablen« eingeschlichen.
- Seite 101, Abschnitt »Virtuelle Methoden«: Der C++-Standard selbst spricht von »override«, was soviel wie »dominieren«/»außer Kraft setzen« bedeutet. Auch ist es aus Sicht es Compilerbaus so, dass diese Methode nicht »überschrieben« (ausgelöscht) wird, sondern außer Kraft gesetzt wird. Ich würde an den zwei Stellen »überdecken« oder »neu implementieren« verwenden. Override mit überschreiben zu übersetzen ist ein beliebter Fehler, der vermutlich aus dem ähnlichen Klang der Worte override und overwrite herrührt und aus Sicht des Programmierers scheinbar ein Überschreiben stattfindet. Jedoch kann dies zu falschen Vorstellungen führen, da der Code weiterhin existiert und auch weiterhin aufgerufen werden kann.
- Seite 104, Absatz »public«: einmal hat sich hier wieder ein falsches Anführungszeichen bei »ist-ein« eingeschlichen und die »is-a-Beziehung« würde ich nicht übersetzen. Ich musste sehr überlegen, was eine »ist-ein-Beziehung« ist, bis ich es mal ins Englische übersetzt habe.
- Seite 109, Abschnitt »Explizite Spezialisierung ...«: »eines Templates zu Verwendung«, am »zu« fehlt ein »r«.
- Seite 112, Abschnitt »Argumente in Template-Funktionen«: Ich würde »ebenso« anstelle von »desgleichen« verwenden.
- Seite 132--134, immer der erste Satz in den Abschnitten »cin«, »cout«, »cerr« und »clog«: »Das Objekt ... kontrolliert die Eingabe/Ausgabe«. Ich würde stattdessen liest und schreibt verwenden.
(Jörg Sommer)