"C++11 programmieren" ist eines von derzeit noch wenigen Büchern auf dem deutschsprachigen Markt, die sich mit den Neuerungen im frisch überarbeiteten C++-Standard beschäftigen. Das Buch richtet sich an C++-Programmierer, die mit der Sprache vertraut sind, schon einmal grob von den Neuerungen von C++11 gehört haben, die Neuerungen aber gerne noch einmal im Detail aufgeführt und eine Erläuterung der Hintergründe zu den neuen Funktionen wünschen. Darüber soll es auch als schnelles Nachschlagewerk dienen können. Das Buch setzt voraus, dass man mit C++(03) bereits vertraut ist und vorzugsweise auch schon ein bisschen selbstständig in C++11 reingeschnuppert hat. Am Anfang des Buches werden zwar noch einmal die wichtigsten Grundlagen von effektivem C++ (RAII, Typsicherheit, Exceptionhandling, Nutzen der Standardbibliothek) kurz angesprochen, aber dies dient nur zum Auffrischen der Kenntnisse. Wer bisher noch nicht damit vertraut ist, dem wird diese Einführung nicht genügen.
Der Hauptteil des Buches befasst sich dann mit den zahlreichen Neuerungen von C++11, grob getrennt nach syntaktischen Neuerungen und Ergänzungen der Standardbibliothek. Mit stolzen 400 Seiten führt das Buch dabei nicht nur fast jede kleine Neuerung auf, sondern geht bei den meisten auch tief ins Detail. Dabei wird in der Regel zuerst die neue Funktion kurz vorgestellt, dann folgt eine Motivation der Neuerung, zusammen mit einem Beispiel. Danach werden technische Details erläutert. Jedes Kapitel endet auf einem kurzen Merksatz und einer Angabe von Verweisen und Referenzen, meistens auf den Standard und die anderen üblichen Anlaufstellen, wenn es um fortgeschrittene Informationen zu C++ geht. Die Idee hinter dieser Aufteilung ist, dass man das Buch querlesen kann, indem man sich nur die Kurzbeschreibung eines Features ansieht und erst bei Interesse tiefer einsteigt. Diese Idee erscheint nicht immer gut gelungen, die Kurzeinführungen geben nicht genug Information, um ein Feature zu beurteilen und der Leser muß dann doch das ganze Kapitel lesen.
Dahingegen sind jedoch die Kapitel untereinander vollkommen unabhängig und können in beliebiger Reihenfolge gelesen werden. Einzig bei sehr wichtigen und umfangreichen Neuerungen wie der Verschiebesematik und den Multithreadingfunktionen wurden mehrere zusammenhängende Kapitel einem einzigen Themenbereich gewidmet.
Die Ausführlichkeit der Diskussionen orientiert sich stark an der Praxisrelevanz einer neuen Funktion. Wie schon erwähnt wird zum Beispiel die Verschiebesemantik sehr ausführlich diskutiert. Exotischere Features kommen dabei teilweise etwas kurz weg. Wer zuvor nicht wusste, was "carries_dependency" für eine Bedeutung hat, der wird aus dem Kapitel darüber auch bloß mitnehmen, dass es existiert. Dies ist vermutlich darauf zurückzuführen, dass es ziemlich schwierig ist, Informationen über dieses Feature bekommen.
Wer selbstständig bereits in C++11 eingestiegen ist und die einschlägigen Informationsseiten kennt, dem dürfte auch vieles, das der Autor über dieses und jenes Feature zu sagen hat, sehr bekannt vorkommen. In der Tat offenbart ein Blick in die Referenzen, dass große Teile des Buches eine deutschsprachige Zusammenfassung von bekannten Beiträgen auf den englischen Fachseiten sind.
Das Buch enthält leider viele kleine Fehler und Ungenauigkeiten. Zwar sollten Leser aus der Zielgruppe in der Lage sein, diese Fehler selber zu erkennen und zu überlesen, aber es deutet darauf hin, dass das Buch nicht ausreichend auf technische Korrektheit geprüft wurde. Das Buch wird daher besser nicht als letzte Instanz zur Klärung technischer Fragen herangezogen, sondern als Einstiegspunkt, um anhand der Referenzen schnell die entscheidenden Stellen im Standard finden zu können.
Zu dem Buch gehört ein Zugangscode zu einem Onlinedienst, der ergänzendes Material zum Buch bietet. Derzeit finden sich dort ein paar Errata und ein leider stark zeitbegrenzter Zugang zu einer elektronischen Ausgabe des Buches. Auf einer weiteren angegebenen Webseite findet man sämtliche Quellcodes, so dass man diese nicht abtippen braucht. Falls im Buch nur Teile des Codes angegeben waren, so sind diese Teile online zu compilierbaren Beispielen ergänzt.
Alles in allem glänzt das Buch vor allem als tiefergehende Referenz. Insbesondere im deutschsprachigen Raum wird man (zumindest derzeit) nur schwerlich die C++11-Neuerungen so detailliert in so einem einzigen zusammenhängenden Werk finden. Die kleinen Fehler sind zwar ärgerlich, wenn sie einem auffallen, sind aber nicht von kritischer Natur und sollten von der angesprochenen Lesergruppe als Flüchtigkeitsfehler erkannt und übergangen werden. Gefallen haben auch die Verweise am Ende der Kapitel, mit denen man selber weiter recherchieren kann, wenn noch etwas unklar ist.
|