isocpp - Das endgültige C++-Buchhandbuch und die Liste



super faq c++ (1)

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 häufig von im Internet gefundenen Tutorials abgerufen werden, können nur wenige C ++ schnell lernen, ohne ein gut geschriebenes C ++ - Buch zu lernen. Dafür ist es viel zu groß und zu komplex. Tatsächlich ist es so groß und komplex, dass es sehr viele sehr schlechte C ++ - Bücher gibt. Und wir reden hier nicht über schlechten Stil, sondern Dinge, die offensichtlich offensichtliche sachliche Fehler enthalten und schlecht schlechte Programmierstile fördern .

Bearbeiten Sie die akzeptierte Antwort, um qualitativ hochwertige Bücher und eine ungefähre Kenntnisstufe zu erhalten - am besten nach Besprechung Ihrer Ergänzung im C ++ - Chatroom . (Die Stammgäste machen Ihre Arbeit möglicherweise gnadenlos rückgängig, wenn Sie mit einer Empfehlung nicht einverstanden sind.) Fügen Sie zu jedem Buch, das Sie persönlich gelesen haben, eine kurze Beschreibung hinzu. Fühlen Sie sich frei, um Qualität, Überschriften usw. zu diskutieren. Bücher, die die Kriterien erfüllen, werden der Liste hinzugefügt. Bücher, die Rezensionen der Association of C- und C ++ - Benutzer (ACCU) enthalten, haben Links zu der Überprüfung.

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


Anfänger

Einführungskurs, keine Programmiererfahrung

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

  • Programmierung: Grundlagen und Praxis mit C ++ (Bjarne Stroustrup, 2. Auflage - 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 Programmiererfahrung voraussetzt, aber nicht nur für Anfänger geeignet ist.

* Nicht zu verwechseln mit C ++ Primer Plus (Stephen Prata), mit einer deutlich ungünstigeren review .

Einführungskurs mit vorheriger Programmiererfahrung

  • Eine Tour durch 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 ++ - Funktionen (Sprache und Standardbibliothek sowie C ++) 11 ) auf einem mäßig 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 C ++ - Programmiersprache, 4. Auflage, darstellt.

  • Accelerated C ++ (Andrew Koenig und Barbara Moo, 1. Auflage - 24. August 2000) Dies umfasst im Wesentlichen die gleichen Grundlagen wie die C ++ - Grundierung , jedoch nur ein Viertel ihres Platzes. Dies ist hauptsächlich darauf zurückzuführen, dass nicht versucht wird, eine Einführung in die Programmierung zu erhalten , sondern eine Einführung in C ++ für Personen, die zuvor in einer anderen Sprache programmiert haben. Die Lernkurve ist steiler, aber für diejenigen, die damit umgehen können, ist dies eine sehr kompakte Einführung in die Sprache. (In der Vergangenheit beschritt es Neuland, indem es das erste Anfängerbuch war, das einen modernen Ansatz zum Unterrichten der Sprache verwendete.) Trotzdem ist C ++, das es lehrt, rein C ++ 98. [Review]

Best Practices

  • Effective C ++ (Scott Meyers, 3. Auflage - 22. Mai 2005) Dies wurde mit dem Ziel verfasst, das beste zweite Buch zu sein, das C ++ - Programmierer lesen sollten, und es gelang ihm. Frühere Ausgaben waren für Programmierer gedacht, die aus C kommen, die dritte Auflage ändert dies und richtet sich an Programmierer, die aus Sprachen wie Java kommen. Es enthält ~ 50 leicht zu merkende Faustregeln und ihre Gründe in einem sehr zugänglichen (und angenehmen) Stil. Für C ++ 11 und C ++ 14 sind die Beispiele und einige Probleme veraltet, und Effective Modern C ++ sollte bevorzugt werden. [Review]

  • Effective Modern C ++ (Scott Meyers) Dies ist im Wesentlichen die neue Version von Effective C ++ , die sich an C ++ - Programmierer richtet, die den Übergang von C ++ 03 zu C ++ 11 und C ++ 14 vornehmen.

  • Effective STL (Scott Meyers) Damit soll der Teil der Standardbibliothek, der aus der STL stammt, dasselbe tun, was Effective C ++ mit der Sprache insgesamt getan hat: Es werden Faustregeln zusammen mit ihrer Begründung dargestellt. [Review]

Mittlere

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

  • Außergewöhnliches C ++ (Herb Sutter) Dieses Rätselpaket enthält eine der besten und gründlichsten Diskussionen über das ordnungsgemäße Ressourcenmanagement und die Ausnahmesicherheit in C ++ durch die Ressourcenerfassung (RAII) sowie die ausführliche Beschreibung einer Vielzahl Weitere Themen, darunter das Pimpl-Idiom, die Namenssuche, das Design guter Klassen und das C ++ - Speichermodell. [Review]

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

  • Außergewöhnlicher C ++ - Stil (Herb Sutter) Erläutert generische Programmierung, Optimierung und Ressourcenverwaltung. Dieses Buch bietet auch eine hervorragende Darstellung darüber, wie modularer Code in C ++ unter Verwendung von Nichtmitgliederfunktionen und des Prinzips der Einzelverantwortung geschrieben wird. [Review]

  • C ++ - Codierungsstandards (Herb Sutter und Andrei Alexandrescu) "Codierungsstandards" bedeutet hier nicht "wie viele Leerzeichen sollte ich meinen Code einrücken". Dieses Buch enthält 101 bewährte Vorgehensweisen, Idiome und häufige Fallstricke, die Ihnen beim Schreiben von Code helfen können. verständlicher und effizienter C ++ - Code. [Review]

  • C ++ - Vorlagen: Das vollständige Handbuch (David Vandevoorde und Nicolai M. Josuttis) Dies ist das Buch über Vorlagen, wie sie vor C ++ 11 existierten. Es deckt alles ab, von den Grundlagen bis hin zu den fortschrittlichsten Metaprogrammierungen für Schablonen, und erläutert jedes Detail (wie konzeptuell und wie sie implementiert werden) sowie viele häufige Fallstricke. Hat hervorragende Zusammenfassungen der One Definition Rule (ODR) und Überlastauflösung in den Anhängen. Eine zweite Ausgabe zu C ++ 11, C ++ 14 und C ++ 17 wurde bereits veröffentlicht. [Review]

Erweitert

  • Modernes C ++ - Design (Andrei Alexandrescu) Ein wegweisendes Buch über fortgeschrittene generische Programmiertechniken. Einführung in richtlinienbasiertes Design, Typenlisten und grundlegende generische Programmiersprachen. Anschließend wird erläutert, wie viele nützliche Entwurfsmuster (einschließlich kleiner Objektzuordnungen, Funktionen, Fabriken, Besucher und Multimethoden) effizient, modular und sauber unter Verwendung der generischen Programmierung implementiert werden können . [Review]

  • Metaprogrammierung von C ++ - Vorlagen (David Abrahams und Aleksey Gurtovoy)

  • C ++ Concurrency In Action (Anthony Williams) Ein Buch zur Unterstützung der C ++ 11-Parallelität, einschließlich der Thread-Bibliothek, der Atomics-Bibliothek, des C ++ - Speichermodells, Sperren und Mutexen sowie Fragen zum Entwerfen und Debuggen von Multithread-Anwendungen.

  • Fortgeschrittene C ++ - Metaprogrammierung (Davide Di Gennaro) Ein Handbuch zu TMP-Techniken vor C ++ 11, das sich mehr auf die Praxis als auf die Theorie konzentriert. Es gibt eine Unmenge von Ausschnitten 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 in Kauf nehmen können, ist es einfacher zu lesen als Alexandrescu und lohnenswerter. Für erfahrene Entwickler besteht eine gute Chance, dass Sie etwas aus einer dunklen Ecke von C ++ (einer Eigenart) herausgreifen, 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 ++ durch den Ersteller. Parallel zum klassischen K & R liest sich dies in der Tat sehr und umfasst alles von der Kernsprache über die Standardbibliothek, über Programmierparadigmen bis hin zur Philosophie der Sprache. [Review] Anmerkung: Alle Versionen des C ++ - Standards werden in dieser Frage nachverfolgt: Wo finde ich den aktuellen C ++ - Standard?

  • C ++ - Standardbibliothek - Tutorial und Referenz (Nicolai Josuttis) ( aktualisiert für C ++ 11 ) Die Einführung und Referenz für die C ++ - Standardbibliothek. Die zweite Ausgabe (veröffentlicht am 9. April 2012) umfasst C ++ 11. [Review]

  • Die C ++ IO-Streams und Locales (Angelika Langer und Klaus Kreft) Zu diesem Buch gibt es sehr wenig zu sagen, außer, wenn Sie etwas über Streams und Locales wissen möchten, dann ist dies der richtige Ort, um endgültige Antworten zu finden. [Review]

C ++ 11/14/17 /… Referenzen:

  • Der Standard C ++ 11/14/17 (INCITS / ISO / IEC 14882: 2011/2014/2017) Dies ist natürlich der letzte Schiedsrichter für alles, was C ++ ist oder nicht. Seien Sie sich jedoch bewusst, dass es nur als Referenz für erfahrene Benutzer gedacht ist, die viel Zeit und Mühe auf ihr Verständnis ausgeben möchten. Der C ++ 17-Standard wird in elektronischer Form für 198 Schweizer Franken veröffentlicht.

  • Der C ++ 17-Standard ist verfügbar, aber scheinbar nicht in einer kostengünstigen Form - 17 kostet er 198 Schweizer Franken (etwa 200 US-Dollar). Für die meisten Menschen ist der endgültige Entwurf vor der Standardisierung mehr als ausreichend (und kostenlos). Viele werden einen noch neueren Entwurf vorziehen und neue Funktionen dokumentieren, die wahrscheinlich in C ++ 20 enthalten sind.

  • Überblick über das neue C ++ (C ++ 11/14 ) (nur PDF) (Scott Meyers) ( aktualisiert für C ++ 1y / C ++ 14 ) Dies ist das Präsentationsmaterial (Folien und einige Vorlesungsunterlagen) eines Tagesschulungskurs angeboten von Scott Meyers, einem auf C ++ hoch angesehenen Autor. Obwohl die Liste der Artikel kurz ist, ist die Qualität hoch.

  • Die C ++ - Kernrichtlinien (C ++ 11/14/17 /…) (herausgegeben von Bjarne Stroustrup und Herb Sutter) sind ein sich entwickelndes Online-Dokument, das aus einer Reihe von Richtlinien für die Verwendung moderner C ++ - Quellen besteht. Die Richtlinien konzentrieren sich auf relativ übergeordnete Themen wie Schnittstellen, Ressourcenverwaltung, Speicherverwaltung und Parallelität, die sich auf die Anwendungsarchitektur und das Bibliotheksdesign auswirken. Das Projekt wurde auf der CppCon'15 von Bjarne Stroustrup und anderen angekündigt und begrüßt Beiträge der Community. Die meisten Richtlinien werden durch eine Begründung und Beispiele sowie Diskussionen über mögliche Werkzeugunterstützung ergänzt. Viele Regeln sind speziell dafür ausgelegt, von statischen Analysewerkzeugen automatisch überprüft zu werden.

  • Die C ++ Super-FAQ (Marshall Cline, Bjarne Stroustrup und andere) ist ein Bestreben der Standard C ++ Foundation, die zuvor von Marshall Cline und Bjarne Stroustrup individuell gepflegten C ++ - FAQs zu vereinheitlichen und neue Beiträge einzubeziehen. Die Artikel befassen sich meist mit Problemen auf mittlerer Ebene und werden oft mit einem humorvollen Ton geschrieben. Möglicherweise sind noch nicht alle Elemente mit der neuesten Ausgabe des C ++ - Standards vollständig auf dem neuesten Stand.

  • cppreference.com (C ++ 03/11/14/17 /…) (initiiert von Nate Kohl) ist ein Wiki, das die grundlegenden Kernsprachenmerkmale zusammenfasst und eine umfassende Dokumentation der C ++ - Standardbibliothek enthält. Die Dokumentation ist sehr präzise, ​​jedoch einfacher zu lesen als das offizielle Standarddokument und bietet aufgrund seines Wiki-Charakters eine bessere Navigation. Das Projekt dokumentiert alle Versionen des C ++ - Standards und die Site ermöglicht das Filtern der Anzeige nach einer bestimmten Version. Das Projekt wurde von Nate Kohl auf der CppCon'14 vorgestellt .

Klassiker / Älter

Hinweis: Einige in diesen Büchern enthaltene Informationen sind möglicherweise nicht auf dem neuesten Stand oder gelten nicht mehr als bewährte Methode.

  • Das Design und die Entwicklung von C ++ (Bjarne Stroustrup) Wenn Sie wissen wollen, warum die Sprache so ist, wie sie ist, dann finden Sie in diesem Buch Antworten. Dies umfasst alles vor der Standardisierung von C ++.

  • Überlegungen zu C ++ - (Andrew Koenig und Barbara Moo) [Review]

  • Fortgeschrittene C ++ - Programmierstile und -Idiome (James Coplien) Als Vorläufer der Musterbewegung werden viele C ++ - spezifische "Idiome" beschrieben. Es ist auf jeden Fall ein sehr gutes Buch und vielleicht noch eine Lektüre wert, wenn Sie sich die Zeit nehmen können, aber mit dem aktuellen C ++ recht alt und nicht auf dem neuesten Stand.

  • Großes C ++ - Softwaredesign (John Lakos) Lakos erläutert Techniken zur Verwaltung sehr großer C ++ - Softwareprojekte. Sicherlich eine gute Lektüre, wenn es nur aktuell wäre. Es wurde lange vor C ++ 98 geschrieben und lässt viele Features (z. B. Namensräume) vermissen, 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 ein Salz Salz mitnehmen müssen. Der erste Band einer Neuauflage wird 2018 erwartet .

  • Innerhalb des C ++ - Objektmodells (Stanley Lippman) Wenn Sie wissen möchten, wie virtuelle Elementfunktionen allgemein implementiert werden und wie Basisobjekte in einem Szenario mit mehreren Vererbungen allgemein im Speicher abgelegt werden und wie sich dies auf die Leistung auswirkt, sollten Sie dies tun gründliche Diskussionen über solche Themen finden.

  • Das kommentierte C ++ - Referenzhandbuch (Bjarne Stroustrup, Margaret A. Ellis) Dieses Buch ist ziemlich veraltet, da es die C ++ 2.0-Version von 1989 untersucht - Vorlagen, Ausnahmen, Namespaces und neue Besetzungen wurden noch nicht eingeführt. Das Buch durchläuft jedoch den gesamten C ++ - Standard der Zeit und erläutert die Gründe, die möglichen Implementierungen und Merkmale der Sprache. Dies ist kein Buch zum Erlernen von Programmierprinzipien und -mustern in C ++, sondern zum Verstehen aller Aspekte der C ++ - Sprache.

  • Denken in C ++ (Bruce Eckel, 2. Auflage, 2000). Zwei Bände; ist eine Reihe von Einführungsbüchern. Downloads: Band 1 , Band 2 . Leider sind sie durch eine Reihe trivialer Fehler beeinträchtigt (z. B. die Behauptung, dass temporäre const automatisch const ), ohne offizielle Errata-Liste. Eine teilweise Errata-Liste von Drittanbietern ist unter http://www.computersciencelab.com/Eckel.htm verfügbar, wird aber offenbar nicht gepflegt.

  • Wissenschaft und Technik C ++: Einführung in fortgeschrittene Techniken und Beispiele (John Barton und Lee Nackman) Es ist ein umfassendes und sehr detailliertes Buch, in dem versucht wurde, alle in C ++ verfügbaren Funktionen im Zusammenhang mit numerischen Methoden zu erklären und zu nutzen. Zu dieser Zeit wurden mehrere neue Techniken eingeführt, beispielsweise das Curiously Recurring Template Pattern (CRTP, auch Barton-Nackman-Trick genannt). Es war Pionier bei verschiedenen Techniken wie der Dimensionsanalyse und der automatischen Differenzierung. Das Programm enthielt viele kompilierbare und nützliche Codes, die vom Ausdrucks-Parser bis zum Lapack-Wrapper reichen. Der Code ist noch immer hier verfügbar: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934 . Leider sind die Bücher in Bezug auf Stil und C ++ - Funktionen etwas veraltet, jedoch war dies zu der Zeit (1994, vor dem STL) ein unglaublicher Kraftakt. Die Kapitel über die Vererbung von Dynamik sind etwas kompliziert zu verstehen und nicht sehr nützlich. Eine aktualisierte Version dieses klassischen Buches, die Bewegungssemantik und die aus der STL-Lektion gewonnenen Lektionen enthält, wäre sehr schön.





c++-faq