Frage Das Definitive C ++ Buch Handbuch und Liste


Diese Frage versucht, die wenigen Perlen unter den Dutzenden von schlechten C ++ - Büchern zu sammeln, die jedes Jahr veröffentlicht werden.

Im Gegensatz zu vielen anderen Programmiersprachen, die oft von Tutorials aus dem Internet übernommen werden, sind nur wenige in der Lage, C ++ schnell zu erlernen, ohne ein gut geschriebenes C ++ Buch zu studieren. Es ist viel zu groß und komplex, um das zu tun. In der Tat ist es so groß und komplex, dass Es gibt sehr viele sehr schlechte C ++ Bücher dort draußen. Und wir reden nicht über schlechten Stil, sondern über Dinge wie Sport offensichtlich offensichtliche sachliche Fehler und Förderung abgrundtief schlechter Programmierstile.

Bitte bearbeiten Sie die akzeptierte Antwort Qualitätsbücher und ein ungefähres Fähigkeitsniveau - vorzugsweise  nach  Erörterung Ihrer Ergänzung in der C ++ - Chat-Raum. (Die Stammkunden können Ihre Arbeit gnadenlos rückgängig machen, wenn sie einer Empfehlung nicht zustimmen.) Fügen Sie einen kurzen Text / eine Beschreibung zu jedem Buch hinzu, das Sie persönlich gelesen / profitiert haben. Diskutieren Sie Qualität, Überschriften usw. Bücher, die die Kriterien erfüllen, werden der Liste hinzugefügt. Bücher mit Rezensionen der Association of C and C ++ Users (ACCU) haben Links zur Rezension.

* Hinweis: FAQs und andere Ressourcen finden Sie in der C ++ - Tag-Informationen und unter .


4253


Ursprung


Antworten:


Anfänger

Einleitend, keine vorherige Programmiererfahrung

  • C ++ - Primer * (Stanley Lippman, Josée Lajoie und Barbara E. Moo) (aktualisiert für C ++ 11) Das ist eine sehr gründliche Einführung in C ++, die fast alles in der Sprache in einem sehr zugänglichen Format und sehr detailliert abdeckt. Die fünfte Ausgabe (veröffentlicht am 16. August 2012) behandelt C ++ 11. [Rezension] 

  • Programmierung: Prinzipien und Praxis mit C ++ (Bjarne Stroustrup, 2. Ausgabe - 25. Mai 2014) (aktualisiert für C ++ 11 / C ++ 14) Eine Einführung in die Programmierung mit C ++ durch den Ersteller der Sprache. Eine gute Lektüre, die keine vorherige Programmiererfahrung voraussetzt, aber nicht nur für Anfänger.

* Nicht zu verwechseln mit C ++ Primer Plus (Stephen Prata), mit einem deutlich weniger günstigen Rezension.

Einführend, mit vorheriger Programmiererfahrung

  • Eine Tour von C ++ (Bjarne Stroustrup) (2. Auflage für C ++ 17) Die "Tour" ist eine kurze (ca. 180 Seiten und 14 Kapitel) Tutorial-Übersicht über alle Standard-C ++ (Sprache und Standard-Bibliothek, und mit C ++ 11) auf einem moderat hohen Niveau für Leute, die C ++ bereits kennen oder zumindest erfahrene Programmierer sind. Dieses Buch ist eine erweiterte Version des Materials, das die Kapitel 2-5 der Programmiersprache C ++, 4. Auflage, darstellt.

  • Beschleunigtes C ++ (Andrew Koenig und Barbara Moo, 1. Ausgabe - 24. August 2000) Dies deckt im Grunde den gleichen Grund wie die C ++ - Primer, tut es aber auf einem Viertel seines Raumes. Dies ist vor allem, weil es nicht versucht, eine Einführung zu sein Programmierung, aber eine Einführung in C ++ für Leute, die vorher in einer anderen Sprache programmiert haben. Es hat eine steilere Lernkurve, aber für diejenigen, die damit umgehen können, ist es eine sehr kompakte Einführung in die Sprache. (Historisch gesehen hat es als erstes Anfängerbuch einen neuen Weg beschritten, um einen modernen Ansatz zum Unterrichten der Sprache zu verwenden.) Trotzdem ist das C ++ es lehrt rein C ++ 98. [Rezension]

Best Practices

  • Wirksames C ++ (Scott Meyers, 3. Ausgabe - 22. Mai 2005) Dies wurde mit dem Ziel geschrieben, das beste zweite Buch zu sein, das C ++ Programmierer lesen sollten, und es war erfolgreich. Frühere Ausgaben waren auf Programmierer aus C ausgerichtet, die dritte Ausgabe ändert dies und richtet sich an Programmierer aus Sprachen wie Java. Es stellt ~ 50 einfach zu merkende Faustregeln zusammen mit ihren Begründungen in einem sehr zugänglichen (und erfreulichen) Stil vor. Für C ++ 11 und C ++ 14 sind die Beispiele und einige Probleme veraltet und Effective Modern C ++ sollte bevorzugt werden. [Rezension]

  • Wirksames modernes C ++ (Scott Meyers) Dies ist im Grunde die neue Version von Wirksames C ++, ausgerichtet auf C ++ - Programmierer, die den Übergang von C ++ 03 zu C ++ 11 und C ++ 14 vornehmen.

  • Wirksame STL (Scott Meyers) Dies soll das Gleiche für den Teil der Standardbibliothek tun, der von der STL herkommt Wirksames C ++ tat der Sprache als Ganzes: Es stellt Faustregeln zusammen mit ihrer Begründung. [Rezension]

Mittlere

  • Effektiveres C ++ (Scott Meyers) Noch mehr Faustregeln als Wirksames C ++. Nicht so wichtig wie die im ersten Buch, aber immer noch gut zu wissen.

  • Außergewöhnliches C ++ (Herb Sutter) Als eine Reihe von Rätseln präsentiert, hat dies eine der besten und gründlichen Diskussionen über die ordnungsgemäße Ressourcenverwaltung und Ausnahmesicherheit in C ++ durch Ressourcenerfassung Initialization (RAII) zusätzlich zur eingehenden Berichterstattung über eine Vielzahl von anderen Themen wie das Pimpl-Idiom, Namenssuche, gutes Klassen-Design und das C ++ - Speichermodell. [Rezension]

  • Mehr Außergewöhnliches C ++ (Herb Sutter) Umfasst zusätzliche Ausnahmethemen, die nicht behandelt werden Außergewöhnliches C ++, zusätzlich zur Diskussion der effektiven objektorientierten Programmierung in C ++ und der korrekten Verwendung der STL. [Rezension]

  • Außergewöhnlicher C ++ - Stil (Herb Sutter) Erläutert generische Programmierung, Optimierung und Ressourcenverwaltung; Dieses Buch bietet auch eine ausgezeichnete Darstellung, wie man modularen Code in C ++ schreibt, indem man Nicht-Member-Funktionen und das Prinzip der einheitlichen Verantwortlichkeit verwendet. [Rezension]

  • C ++ Codierstandards (Herb Sutter und Andrei Alexandrescu) "Kodierungsstandards" bedeutet hier nicht "Wie viele Leerzeichen sollte ich meinen Code einrücken?" Dieses Buch enthält 101 Best Practices, Idiome und häufige Fallstricke, die Ihnen helfen können, korrekt, verständlich und verständlich zu schreiben effizienter C ++ Code. [Rezension]

  • C ++ - Vorlagen: Das Kompletthandbuch (David Vandevoorde und Nicolai M. Josuttis) Das ist das Buch über Vorlagen, wie sie vor C ++ 11 existierten. Es deckt alles von den Grundlagen bis zu einigen der fortgeschrittensten Template-Metaprogrammierungen ab und erklärt jedes Detail, wie Templates funktionieren (sowohl konzeptionell als auch wie sie implementiert werden) und diskutiert viele häufige Fallstricke. Hat hervorragende Zusammenfassungen der One Definition Rule (ODR) und der Überladungsauflösung in den Anhängen. EIN zweite Ausgabe C ++ 11, C ++ 14 und C ++ 17 wurden bereits veröffentlicht. [Rezension]


Fortgeschritten

  • Modernes C ++ Design (Andrei Alexandrescu) Ein bahnbrechendes Buch über fortgeschrittene generische Programmiertechniken. Führt policy-basiertes Design, Typlisten und grundlegende generische Programmier-Idiome ein und erläutert, wie viele nützliche Entwurfsmuster (einschließlich kleiner Objekt-Zuweiser, Funktoren, Fabriken, Besucher und Multi-Methoden) effizient, modular und sauber mit generischer Programmierung implementiert werden können . [Rezension]

  • C ++ Template Metaprogrammierung (David Abrahams und Aleksey Gurtovoy)

  • C ++ - Parallelität in Aktion (Anthony Williams) Ein Buch über C ++ 11-Nebenläufigkeitsunterstützung einschließlich der Thread-Bibliothek, der Atomics-Bibliothek, des C ++ - Speichermodells, Sperren und Mutexe sowie Probleme beim Entwerfen und Debuggen von Multithread-Anwendungen.

  • Fortgeschrittene C ++ Metaprogrammierung (Davide Di Gennaro) Ein Handbuch zu TMP-Techniken vor C ++ 11, das mehr auf die Praxis als auf die Theorie ausgerichtet ist. Es gibt eine Menge Schnipsel in diesem Buch, von denen einige durch Typmerkmale überholt sind, aber die Techniken, sind dennoch nützlich zu wissen. Wenn Sie die schrullige Formatierung / Bearbeitung ertragen können, ist es einfacher zu lesen als Alexandrescu und wohl lohnender. Für erfahrene Entwickler gibt es eine gute Chance, dass Sie etwas über eine dunkle Ecke von C ++ (eine Eigenart) aufgreifen, die normalerweise nur durch umfangreiche Erfahrung entsteht.


Referenzstil - Alle Ebenen

  • Die C ++ Programmiersprache (Bjarne Stroustrup) (aktualisiert für C ++ 11) Die klassische Einführung in C ++ von seinem Schöpfer. Parallel zum klassischen K & R geschrieben, liest es sich sehr ähnlich und behandelt fast alles von der Kernsprache bis zur Standardbibliothek, von Programmierparadigmen bis zur Philosophie der Sprache. [Rezension] Hinweis: Alle Releases des C ++ - Standards werden in dieser Frage verfolgt: Wo finde ich den aktuellen C ++ - Standard?.

  • C ++ Standard Library Tutorial und Referenz (Nicolai Josuttis) (aktualisiert für C ++ 11) Das Einführung und Referenz für die C ++ Standard Library. Die zweite Ausgabe (veröffentlicht am 9. April 2012) behandelt C ++ 11. [Rezension]

  • Die C ++ IO-Streams und Locales (Angelika Langer und Klaus Kreft) Es gibt sehr wenig zu diesem Buch zu sagen, außer dass, wenn du etwas über Streams und Locales wissen willst, dies der einzige Ort ist, an dem du endgültige Antworten finden kannst. [Rezension]

C ++ 11/14 Referenzen:

  • Der C ++ Standard (INCITS / ISO / IEC 14882-2011) Dies ist natürlich der letzte Schiedsrichter von allem, was C ++ ist oder nicht. Beachten Sie jedoch, dass es sich lediglich um eine Referenz für erfahren Benutzer, die bereit sind, viel Zeit und Mühe für ihr Verständnis zu verwenden. Wie immer war die erste Veröffentlichung ganz teuer ($ 300 + US), aber es ist jetzt in elektronischer Form für $ 60US freigegeben worden.

  • Der C ++ 14 Standard ist verfügbar, aber scheinbar nicht in einer wirtschaftlichen Form - direkt von der ISO es kostet 198 Schweizer Franken (etwa 200 US-Dollar). Für die meisten Menschen, die endgültiger Entwurf vor der Normung ist mehr als ausreichend (und kostenlos). Viele werden einen bevorzugen noch neuer EntwurfDokumentieren neuer Features, die wahrscheinlich in C ++ 17 enthalten sein werden.

  • Überblick über das neue C ++ (C ++ 11/14) (nur PDF) (Scott Meyers) (aktualisiert für C ++ 1y / C ++ 14) Dies sind die Präsentationsmaterialien (Folien und einige Vorlesungsunterlagen) eines dreitägigen Kurses, der von Scott Meyers angeboten wird, der ein angesehener Autor von C ++ ist. Obwohl die Liste der Artikel kurz ist, ist die Qualität hoch.

  • Das C ++ - Kernrichtlinien (C ++ 11/14/17 / ...) (herausgegeben von Bjarne Stroustrup und Herb Sutter) ist ein sich entwickelndes Online-Dokument, das aus einer Reihe von Richtlinien für die Verwendung von modernem C ++ besteht. Die Richtlinien konzentrieren sich auf Probleme auf höherer Ebene, wie Schnittstellen, Ressourcenverwaltung, Speicherverwaltung und Parallelität, die sich auf die Anwendungsarchitektur und das Bibliotheksdesign auswirken. Das Projekt war angekündigt auf der CppCon'15 von Bjarne Stroustrup und anderen und begrüßt Beiträge aus der Gemeinschaft. Die meisten Richtlinien werden mit einer Begründung und Beispielen sowie Diskussionen über mögliche Werkzeugunterstützung ergänzt. Viele Regeln sind so konzipiert, dass sie von statischen Analysetools automatisch überprüft werden können.

  • Das C ++ Super-FAQ (Marshall Cline, Bjarne Stroustrup und andere) ist eine Bemühung der Standard C ++ Foundation, die C ++ - FAQs zu vereinigen, die zuvor von Marshall Cline und Bjarne Stroustrup einzeln gepflegt wurden und auch neue Beiträge enthalten. Die Artikel behandeln meist Probleme auf einer mittleren Ebene und werden oft mit einem humorvollen Ton geschrieben. Nicht alle Artikel sind mit der neuesten Version des C ++ - Standards noch vollständig auf dem neuesten Stand.

  • cppreference.com (C ++ 03/11/14/17 / ...) (initiiert von Nate Kohl) ist ein Wiki, das die Grundfunktionen der Kernsprache zusammenfasst und eine umfangreiche Dokumentation der C ++ - Standardbibliothek enthält. Die Dokumentation ist sehr präzise, ​​aber einfacher zu lesen als das offizielle Standarddokument und bietet aufgrund ihrer Wiki-Natur eine bessere Navigation. Das Projekt dokumentiert alle Versionen des C ++ - Standards, und die Site ermöglicht das Filtern der Anzeige für eine bestimmte Version. Das Projekt war präsentiert von Nate Kohl auf der CppCon'14.


Klassiker / älter

Hinweis: Einige Informationen in diesen Büchern sind möglicherweise nicht auf dem neuesten Stand oder werden nicht mehr als Best Practice angesehen.

  • Das Design und die Entwicklung von C ++ (Bjarne Stroustrup) Wenn du es wissen willst Warum Die Sprache ist so wie sie ist, in diesem Buch findest du Antworten. Das deckt alles ab vor der Standardisierung von C ++.

  • Wiederkäuen auf C ++ - (Andrew Koenig und Barbara Moo) [Rezension]

  • Fortgeschrittene C ++ Programmierung Stile und Idiome (James Coplien) Ein Vorläufer der Musterbewegung, sie beschreibt viele C ++ - spezifische "Idiome". Es ist sicherlich ein sehr gutes Buch und könnte immer noch eine Lektüre wert sein, wenn Sie die Zeit sparen können, aber ziemlich alt und nicht mit dem aktuellen C ++ up-to-date.

  • Großes C ++ - Softwaredesign (John Lakos) Lakos erklärt Techniken, um sehr große C ++ - Softwareprojekte zu verwalten. Sicher, eine gute Lektüre, wenn es nur auf dem neuesten Stand wäre. Es wurde lange vor C ++ 98 geschrieben und vermisst viele Features (z. B. Namespaces), die für große Projekte wichtig sind. Wenn Sie in einem großen C ++ - Softwareprojekt arbeiten müssen, möchten Sie es vielleicht lesen, obwohl Sie mehr als nur ein Körnchen davon mitnehmen müssen. Der erste Band einer neuen Ausgabe ist erwartet im Jahr 2018.

  • Innerhalb des C ++ Objektmodells (Stanley Lippman) Wenn Sie wissen möchten, wie virtuelle Memberfunktionen allgemein implementiert werden und wie Stammobjekte in einem Szenario mit mehreren Vererbungen gemeinsam im Speicher abgelegt werden und wie sich dies auf die Performance auswirkt, finden Sie hier ausführliche Diskussionen Themen.

  • Das Kommentierte C ++ Referenzhandbuch (Bjarne Stroustrup, Margaret A. Ellis) Dieses Buch ist ziemlich veraltet in der Tatsache, dass es die 1989 C ++ 2.0 Version untersucht - Vorlagen, Ausnahmen, Namespaces und neue Casts wurden noch nicht eingeführt. Dieses Buch durchläuft jedoch den gesamten C ++ - Standard der Zeit und erklärt die Gründe, die möglichen Implementierungen und Merkmale der Sprache. Dies ist kein Buch, um Programmierprinzipien und -muster in C ++ zu lernen, sondern um jeden Aspekt der C ++ - Sprache zu verstehen.

  • Denken in C ++ (Bruce Eckel) Zwei Bände; ist ein Tutorialstil frei Set von Intro-Level-Büchern. Downloads: Vol 1, Band 2. Leider sind sie durch eine Reihe von trivialen Fehlern beeinträchtigt (z. B. durch das automatische Beibehalten der Provisorien) const), ohne offizielle Errata-Liste. Eine partielle 3rd Party Errata Liste ist verfügbar unter (http://www.computersciencelab.com/Eckel.htm), aber es ist anscheinend nicht gepflegt.

  • Scientific and Engineering C ++: Eine Einführung in fortgeschrittene Techniken und Beispiele (John Barton und Lee Nackman) Es ist ein umfassendes und sehr detailliertes Buch, das versucht, alle in C ++ verfügbaren Funktionen im Kontext numerischer Methoden zu erklären und zu nutzen. Es führte zu der Zeit mehrere neue Techniken ein, wie das Curiously Recurring Template Pattern (CRTP, auch Barton-Nackman-Trick genannt). Es leistete Pionierarbeit bei verschiedenen Techniken wie Dimensionsanalyse und automatische Differenzierung. Es kam mit viel kompilierbarem und nützlichem Code, der von einem Ausdrucksparser zu einem Lapack-Wrapper reichte. Der Code ist noch verfügbar hier: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Leider sind die Bücher im Stil und in den C ++ - Features etwas veraltet, allerdings war es damals eine unglaubliche Tour-de-Force (1994, vor STL). Die Kapitel über die Dynamikvererbung sind ein wenig kompliziert zu verstehen und nicht sehr nützlich. Eine aktualisierte Version dieses klassischen Buches, das die Bewegungssemantik und die aus der STL gelernten Lektionen enthält, wäre sehr nett.


4015