Literatur zu C++

Dies hier soll ein paar m.E. wichtige Bücher zum Thema C++ auflisten. Es erhebt natürlich keinerlei Anspruch auf Vollständigkeit. Im Allgemeinen gilt, daß Sie sich vor dem Kauf eines Fachbuches eine objektive Einschätzung über seine Qualität holen sollten. Für alle C++-Bücher kann man das z.B. mit Hilfe der Buchbesprechungen der ACCU (www.accu.org).
Einige der hier aufgelisteten Bücher sind auch in einer deutschen Übersetzung erhältlich. Wer eine deutsche Übersetzung kaufen will, sollte darauf achten, daß diese auf der jeweils letzten Ausgabe des englischen Originals basiert. (Die Erstausgaben einiger der hier aufgelisteten Bücher erschienen vor weit über zehn Jahren. Auch spätere Ausgaben, wenn sie älter als 1998 – dem Jahr der Standardisierung von C++ – sind, sind oft unbrauchbar veraltet, aber durch sehr gute aktualisierte Versionen ersetzt.)

Lehrbücher

[ACC] Andrew Koenig, Barbara E. Moo, Accelerated C++, Addison Wesley, 2000, ISBN 0 201 70353 X
Koenig und Moo, als Kollegen und Freunde von Stroustrup Nutzer und Mitentwickler der Sprache seit ihren ersten Tagen, führen in diesem recht kompaktem (ca. 250 Seiten) Buch in die Sprache ein. Der dabei verwendete Ansatz, von Anfang an die „richtigen“ Sprachfeature zu benutzen, auch wenn den Lesern deren innere Mechanik im Augenblick noch gar nicht verständlich gemacht werden kann, war bei Erscheinen des Buches revolutionär (und ist eine wichtige Grundlage für mein Vorgehen). Da die Autoren auf relativ wenig Seiten einen Großteil der Sprache behandeln, ergibt sich ein hohes „Lehrtempo“, das nicht jedem liegt. Wer es gern ausführlicher hätte, für den ist [CP] besser geeignet.
[CP] Stan Lippman, Josée Lajoie, Barbara Moo, C++ Primer, Fourth Edition, Addison Wesley, 1998, ISBN 0 201 72148 1
Das sicherlich umfangreichste Lehrbuch zum Thema C++. Auf inzwischen über 1200 Seiten erklärt es wirklich alle Feature der Sprache sehr ausführlich. Barbara Moo wurde für die letzte Ausgabe hinzugezogen, um das Buch in Richtung [ACC] zu überarbeiten. Es gibt auch ein Buch mit den Lösungen zu den Aufgaben, das aber meines Wissens noch auf dem Stand der 3. Ausgabe ist. Ebenfalls auf der 3. Ausgabe basiert Lippmans „Essential C++“, das alles Wesentliche aus [CP] „eingedampft“ auf 250 Seiten enthält.

Sprachführer

[ISO] Bjarne Stroustrup (Foreword), The C++ Standard: Incorporating Technical Corrigendum No. 1, John Wiley & Sons, 1997, ISBN 0 470 84674 7
Der (in Buchform vom British Standards Institute herausgegebene) C++-Standard. Umfangreich, detailliert, bei allen ungeklärten Fragen letztendlich entscheidend und in recht unverständlichem juristischen Englisch geschrieben. Zum Erlernen der Sprache ist nichts ungeeigneter, aber wer es genau wissen will, für den ist es Der Standard. (Der Standard kann sehr preiswert auch in elektronischer Form bezogen werden – z.B. über www.ansi.org.)
[CPL] Bjarne Stroustrup, The C++ Programming Language, Third Edition, Addison Wesley, 1997, ISBN 0 201 88954 4
Dieses Buch des „Erfinders“ der Sprache – inzwischen auch in einer Spezialausgabe (in der deutschen Übersetzung als die 4. Ausgabe verkauft) mit 2 zusätzlichen Kapiteln erhältlich – ist seit der 1. Auflage das Standardwerk zu C++. Mit der dritten Auflage ist das Buch – wohl v.a. wegen der umfangreichen Standardbibliothek – auf über 1000 Seiten gewachsen – etwas, das Stroustrup selbst noch vor wenigen Jahren nicht für möglich gehalten hatte. Doch es lohnt sich, diese Seiten zu lesen.
Auch für die Aufgaben dieses Buches gibt es ein Lösungsbuch: „C++ Solutions: Companion to the C++ Programming Language (3rd Edition)“ von Stroustrup und Vandervoorde.
[EC] Scott Meyers, Effective C++, Third Edition, Addison Wesley, 2005, ISBN 0 321 33487 6
[MEC] Scott Meyers, More Effective C++, Addison Wesley, 1996, ISBN 0 201 63371 X
Diese beiden Bücher sind zu Recht berühmt. Sie behandeln anhand von Daumenregeln die wichtigsten Probleme der typischen Umsteiger auf C++. Während sich dabei die ersten beiden Ausgaben von [EC] auf von C kommende Umsteiger konzentrierten, gibt die (völlig überarbeitete) 3. Ausgabe sehr viele Hinweise für Umsteiger von Java und ähnlichen Sprachen. Die von Meyers präsentierten Beispiele, die Eindeutigkeit seiner Erklärungen und sein humorvoller Plauderton machen das Lesen seiner Bücher zugleich lehrreich und unterhaltsam (s. auch [ESTL]).
[CT] Nicolai M. Josuttis, David Vandevoorde, C++ Templates The Complete Guide, Addison-Wesley, 2003, ISBN 0 201 73484 2
Wer mehr über Templates erfahren will, findet es in diesem Buch. Josuttis und Vandevoorde besprechen praktisch alles – von der grundlegenden Syntax bis hin zu fortgeschrittener Template-Meta-Programmierung.

Standardbibliothek

[CSL] Nicolai M. Josuttis, The C++ Standard Library - A Tutorial and Reference, Addison-Wesley, 1999, ISBN 0 201 37926 0
Josuttis, der als (deutsches) Mitglied des Standardisierungskomitees und insbesondere in der Library Working Group aktiv, veröffentlichte 1999 dieses Buch, das noch heute das Standardwerk für die Standardbibliothek ist. (Grundlage ist ein deutsches Buch gleichen Titels, daß aber deutlich dünner, älter, und damit auch nicht mehr ganz aktuell ist.)
[IOS] Angelika Langer, Klaus Kreft, Standard C++ IOStreams and Locales, Addison-Wesley, 2000, ISBN 0 201 18395 1
Wer vor Erscheinen dieses Buches etwas Definitives über Streams wissen wollte, mußte entweder ein zwar gutes, aber durch den Standard völlig überholtes Buch von Steve Teale zurate ziehen, oder versuchen, in comp.lang.c++.moderated die Aufmerksamkeit einer der wenigen Gurus zu erhalten. Langer und Kreft füllen mit diesem Buch aber nicht nur die vorhandene Lücke, sondern machen das auch noch sehr gut. Das Buch enthält wirklich alles, was man über Streams (und Locales) wissen kann.
[STL] Matthew H. Austern, Generic Programming and the STL, Addison-Wesley, 1998, ISBN 0 201 30956 4
Das Standardwerk zur STL ist eine sehr gut geschriebene Einführung in deren Philosophie. Leider beschreibt es die STL vor der endgültigen Standardisierung und hat damit einige Abweichungen vom aktuellen Stand. (Der ist gut beschrieben in [CSL] und [CPL].) Trotzdem sehr empfehlenswert.
[ESTL] Scott Meyers, Effective STL, Addison Wesley, 2001, ISBN 0 201 74962 9
In seinem unnachahmlichen Schreibstil listet Meyers 50 Regeln zum Umgang mit der STL auf, denen wenig hinzuzufügen ist, von denen aber nicht eine weggelassen werden kann.

Fortgeschrittene

[XC] Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, Addison-Wesley, 2000, ISBN 0 201 61562 2
[MXC] Herb Sutter, More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions, Addison-Wesley, 2001, ISBN 0 201 70434 X
[XCS] Herb Sutter, Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions, Addison-Wesley, 2001, ISBN 0 201 70434 X
Aus seinen Beiträgen „Guru of the Week“ in der Newsgroup comp.lang.c++.moderated, in denen Probleme dargelegt und Lösungen erarbeitet wurden, hat Sutter, Secretary of the ISO/ANSI C++ Standards Committee, ein Buch zusammengestellt, das für Leute geschrieben ist, die C++ schon gut beherrschen. In 47 Tests stellt er Fragen, die korrekt zu beantworten auch sehr erfahrenen C++-Nutzern schwerfällt, beantwortet diese und analysiert die Antworten sehr umfangreich. Der große Erfolg dieses ersten Buches läßt sich an der Existenz der beiden Nachfolger ablesen.
[GP] Krzysztof Czarnecki, Ulrich Eisenecker, Programming: Methods, Tools and Applications, Addison Wesley, 2000, ISBN 0 201 30977 7
Neben einigen anderen Methoden der generativen Programmierung behandelt dieses Buch Template-Metaprogrammierung in C++. Die von Erwin Unruh, Todd Veldhuizen und einigen anderen entdeckte Tatsache, daß die Template-Syntax eine eigene Sprache bildet, die „Turing complete“ ist und vom Compiler während der Compilierung ausgeführt wird, ist in diesem Buch zum ersten Mal umfangreich umgesetzt und gleichzeitig theoretisch untermauert worden. Dieses Buch zeigt ein Universum auf, das die Programmiersprache C++ um ungeahnte Möglichkeiten erweitert.
[MCD] Andrei Alexandrescu, Modern C++ Design, Addison Wesley, 2001, ISBN 0 201 70431 5
Die Möglichkeiten der Template-Metaprogrammierung geschickt ausnutzend, verbindet Alexandrescu Traits, Typlisten und Smartpointer zu einem mächtigen Programmierstil, der ein sehr hohes Abstraktionsniveau erreicht, ohne irgendwelche Zugeständnisse an die Performance zu machen. Und das alles in einem Schreibstil, die oft genug zum schmunzeln anregt, auch wenn man wegen des hohen Niveaus permanent gegen das Gefühl kämpft, gerade den Faden verloren zu haben.

Software allgemein

[ADV] James O. Coplien, Advanced C++ Programming Styles and Idioms, Addison-Wesley, 1994
Statt die Syntax der Sprache zu erklären (was ja in unzähligen anderen Büchern schon geschehen ist), zeigt Coplien anhand von üblichen und beispielhaften Aufgabenstellungen gängige und allgemeingültige Standardlösungen zu täglichen und nicht alltäglichen Problemen. Das Buch ist zwar, was den Sprachstandard betrifft, völlig überholt, aber es ist eines jener Bücher, die auch nach 10 oder 20 Jahren noch gut sind.
[GoF] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison Wesley, 1994, ISBN 0 201 63361 2
Christopher Alexanders Model der Patterns (Entwurfsmuster) wurde von Gamma, Helm, Johnson und Vlissides – auch bekannt als die „Gang of Four“ (GoF) – zum ersten Mal auf die Entwicklung von Software angewendet. Die vier stellen nicht nur knapp zwei Dutzend Pattern vor, sondern liefern auch gleich das notwendige Instrumentarium mit, weitere Pattern zu erkennen und zu klassifizieren. Das Buch ist ein Klassiker, der auch in 10 Jahren noch relevant sein wird.