4230 Stimmen

Der definitive C++-Buchführer und die Liste

In dieser Frage wird 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 mit Hilfe von Tutorien aus dem Internet erlernt werden, sind nur wenige in der Lage, C++ schnell zu erlernen, ohne ein gut geschriebenes C++-Buch zu studieren. Dafür ist die Sprache viel zu umfangreich und komplex. Sie ist sogar so umfangreich und komplex, dass es gibt sehr viele sehr schlechte C++-Bücher da draußen. Und wir reden hier nicht von schlechtem Stil, sondern von Dingen wie sportlichen eklatante sachliche Fehler y Förderung abgrundtief schlechter Programmierstile .

Bitte bearbeiten Sie die akzeptierte Antwort, um Folgendes anzugeben Qualitätsbücher und ein ungefähres Qualifikationsniveau - vorzugsweise nach Diskussion über Ihren Zusatz in der C++-Chatraum . (Die Stammgäste könnten Ihre Arbeit gnadenlos zunichte machen, wenn sie mit einer Empfehlung nicht einverstanden sind). Fügen Sie eine kurze Beschreibung zu jedem Buch hinzu, das Sie persönlich gelesen haben und von dem Sie profitiert haben. Es steht Ihnen frei, über Qualität, Überschriften usw. zu diskutieren. Bücher, die die Kriterien erfüllen, werden in die Liste aufgenommen. Bücher, die von der Association of C and C++ Users (ACCU) rezensiert wurden, haben Links zu den Rezensionen.

*Hinweis: Häufig gestellte Fragen und andere Ressourcen finden Sie in der <a href="https://stackoverflow.com/tags/c%2b%2b/info">C++ Tag-Informationen </a>und unter <a href="https://stackoverflow.comstackoverflow.com/questions/tagged/c%2b%2b-faq" class="post-tag" title="show questions tagged 'c++-faq'" rel="tag">c++-faq </a>.

5885voto

Anfänger

Einführungskurs, keine vorherige Programmiererfahrung

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

C++ Fibel *

* Nicht zu verwechseln mit C++ Fibel Plus (Stephen Prata), mit einer deutlich ungünstigeren Überprüfung .

Stanley Lippman, Josée Lajoie, und Barbara E. Moo ( aktualisiert für C++11 )

Mit 1.000 Seiten ist dies eine sehr gründliche Einführung in C++, die so ziemlich alles in der Sprache in einem sehr zugänglichen Format und sehr detailliert behandelt. Die fünfte Auflage (erschienen am 16. August 2012) deckt C++11 ab.

[Rückblick]

Programmieren: 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 Schöpfer dieser Sprache. Eine gute Lektüre, die keine vorherige Programmiererfahrung voraussetzt, aber nicht nur für Anfänger geeignet ist.

Einsteiger, mit vorheriger Programmiererfahrung

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

Eine Tour durch C++

Bjarne Stroustrup ( 2. Auflage für C++17 )

Die "Tour" ist ein schneller (ca. 180 Seiten und 14 Kapitel) tutorieller Überblick über den gesamten Standard C++ (Sprache und Standardbibliothek), und die Verwendung von C++11 ) auf mäßig hohem Niveau für Leute, die bereits C++ kennen oder zumindest erfahrene Programmierer sind. Dieses Buch ist eine erweiterte Version des Materials, das die Kapitel 2-5 von The C++ Programming Language, 4th edition, darstellt.

Beschleunigtes C++

Andrew Koenig und Barbara Moo, 1. Auflage - 24. August 2000

Dies deckt im Wesentlichen den gleichen Bereich ab wie die C++ Fibel , aber auf einem Viertel des Platzes. Dies liegt vor allem daran, dass es nicht versucht, eine Einführung in Programmierung sondern eine Einführung in C++ für Personen, die zuvor 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 Neuland betreten, da es das erste Einsteigerbuch war, das einen modernen Ansatz für die Vermittlung der Sprache verwendete). Trotzdem ist das C++, das es lehrt, rein C++98.

[Rückblick]

Bewährte Praktiken

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

Wirksames C++

Scott Meyers, 3. Auflage - 22. Mai 2005

Dieses Buch wurde mit dem Ziel geschrieben, das beste zweite Buch zu sein, das C++-Programmierer lesen sollten, und das ist gelungen. Frühere Ausgaben richteten sich an Programmierer, die von C kamen, die dritte Ausgabe ändert dies und zielt auf Programmierer, die von Sprachen wie Java kommen. Es präsentiert ~50 leicht zu merkende Faustregeln zusammen mit ihrer Begründung in einem sehr zugänglichen (und angenehmen) Stil. Für C++11 und C++14 sind die Beispiele und einige Themen veraltet und Effective Modern C++ sollte vorgezogen werden.

[Rückblick]

Effektives modernes C++

Scott Meyers

Dieses Buch richtet sich an C++-Programmierer, die den Übergang von C++03 zu C++11 und C++14 vollziehen. Dieses Buch kann als Fortsetzung und "Korrektur" einiger Teile des vorherigen Buches - "Effective C++" - betrachtet werden. Sie decken nicht die gleichen Dinge ab, haben aber ein ähnliches, auf Punkten basierendes Thema.

Wirksame STL

Scott Meyers

Dies zielt darauf ab, das Gleiche mit dem Teil der Standardbibliothek zu tun, der aus der STL kommt, was Wirksames C++ auf die Sprache als Ganzes auswirkt: Es werden Faustregeln und deren Begründung vorgestellt.

[Rückblick]


Zwischenbericht

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

Wirksameres C++

Scott Meyers

Noch mehr Faustregeln als Wirksames C++ . Nicht so wichtig wie die im ersten Buch, aber trotzdem gut zu wissen.

Außergewöhnliches C++

Herb Sutter

Präsentiert als eine Reihe von Rätseln, hat dies eine der besten und gründlichen Diskussionen über die richtige Ressourcenverwaltung und Ausnahmesicherheit in C++ durch Resource Acquisition is Initialization (RAII) zusätzlich zu einer eingehenden Behandlung einer Vielzahl von anderen Themen, einschließlich der pimpl Idiom, Name Lookup, gute Klasse Design, und die C++-Speicher-Modell.

[Rückblick]

Mehr außergewöhnliches C++

Herb Sutter

Deckt zusätzliche Themen der Ausnahmesicherheit ab, die nicht in Außergewöhnliches C++ Zusätzlich zur Diskussion über die effektive objektorientierte Programmierung in C++ und die korrekte Verwendung der STL.

[Rückblick]

Außergewöhnlicher C++-Stil

Herb Sutter

Erörtert generische Programmierung, Optimierung und Ressourcenverwaltung; dieses Buch enthält auch eine ausgezeichnete Darstellung, wie man modularen Code in C++ schreibt, indem man Nichtmitgliederfunktionen und das Prinzip der einzigen Verantwortung verwendet.

[Rückblick]

C++-Codierungsstandards

Herb Sutter und Andrei Alexandrescu

Mit "Codierungsstandards" ist hier nicht gemeint: "Wie viele Leerzeichen sollte ich meinen Code einrücken?" Dieses Buch enthält 101 bewährte Verfahren, Redewendungen und häufige Fallstricke, die Ihnen helfen können, korrekten, verständlichen und effizienten C++-Code zu schreiben.

[Rückblick]

C++-Vorlagen: Das vollständige Handbuch

David Vandevoorde und Nicolai M. Josuttis

Dies ist die Buch über Templates, wie sie vor C++11 existierten. Es deckt alles ab, von den Grundlagen bis hin zu einigen der fortgeschrittensten Template-Metaprogrammierungen, und erklärt jedes Detail, wie Templates funktionieren (sowohl konzeptionell als auch wie sie implementiert werden) und diskutiert viele häufige Fallstricke. In den Anhängen finden sich hervorragende Zusammenfassungen der One Definition Rule (ODR) und der Überlastauflösung. A zweite Auflage die C++11, C++14 und C++17 abdeckt, wurde bereits veröffentlicht.

[Rückblick]

C++ 17 - Der vollständige Leitfaden

Nicolai M. Josuttis

Dieses Buch beschreibt alle neuen Funktionen, die im C++17-Standard eingeführt wurden und deckt alles ab, von den einfachen Funktionen wie 'Inline-Variablen' und 'constexpr if' bis hin zu 'Polymorphen Speicherressourcen' und 'New and Delete with over aligned Data'.

[Rückblick]

C++ 20 - Der vollständige Leitfaden

Nicolai M. Josuttis

Dieses Buch stellt alle neuen Sprach- und Bibliotheksfunktionen von C++20 vor. Es behandelt die Motivation und den Kontext jeder neuen Funktion mit Beispielen und Hintergrundinformationen. Der Schwerpunkt liegt darauf, wie sich diese Funktionen auf die tägliche Programmierung auswirken, was es bedeutet, sie zu kombinieren, und wie man von C++20 in der Praxis profitieren kann. (Beachten Sie, dass dieses Buch Schritt für Schritt veröffentlicht .)

C++ in Aktion

Bartosz Milewski

Dieses Buch erklärt C++ und seine Funktionen, indem es eine Anwendung von Grund auf aufbaut.

[Rückblick]

Funktionale Programmierung in C++

Ivan Cukic

Dieses Buch führt funktionale Programmiertechniken in modernes C++ (C++11 und später) ein. Eine sehr schöne Lektüre für alle, die funktionale Programmierparadigmen auf C++ anwenden wollen.


Fortgeschrittene

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

Modernes C++-Design

Andrei Alexandrescu

Ein bahnbrechendes Buch über fortgeschrittene generische Programmiertechniken. Führt in richtlinienbasiertes Design, Typlisten und grundlegende generische Programmieridiome ein und erklärt dann, wie viele nützliche Entwurfsmuster (einschließlich kleiner Objektzuweiser, Funktoren, Fabriken, Besucher und Multimethoden) mit generischer Programmierung effizient, modular und sauber implementiert werden können.

[Rückblick]

C++ Schablonen-Metaprogrammierung

David Abrahams und Aleksey Gurtovoy

C++-Gleichzeitigkeit in Aktion

Anthony Williams

Ein Buch, das die Unterstützung der Parallelität in C++11 abdeckt, einschließlich der Thread-Bibliothek, der Atomics-Bibliothek, des C++-Speichermodells, der Sperren und Mutexe sowie Fragen des Entwurfs und der Fehlersuche in Multithread-Anwendungen. A zweite Auflage die C++14 und C++17 abdeckt, wurde bereits veröffentlicht.

[Rückblick]

Fortgeschrittene C++-Metaprogrammierung

Davide Di Gennaro

Ein Handbuch zu TMP-Techniken aus der Zeit vor C++11, das sich mehr auf die Praxis als auf die Theorie konzentriert. Es gibt eine Menge Schnipsel in diesem Buch, von denen einige durch Type Traits obsolet geworden sind, aber die Techniken sind trotzdem nützlich zu wissen. Wenn man sich mit der eigenwilligen Formatierung/Bearbeitung abfinden kann, ist es einfacher zu lesen als Alexandrescu und wohl auch lohnender. Für erfahrenere Entwickler besteht eine gute Chance, etwas über eine dunkle Ecke von C++ (eine Eigenart) zu erfahren, die normalerweise nur durch umfangreiche Erfahrung zustande kommt.

Large Scale C++ Band I, Prozess und Architektur (2020)

John Lakos

Teil eins einer dreiteiligen Serie zur Erweiterung des älteren Buches "Large Scale C++ Design". Lakos erklärt praxiserprobte Techniken zur Verwaltung sehr großer C++-Softwareprojekte. Wenn Sie an einem großen C++-Softwareprojekt arbeiten, ist dies eine großartige Lektüre, die die Beziehung zwischen physischer und logischer Struktur, Strategien für Komponenten und deren Wiederverwendung detailliert beschreibt.

[Rückblick]


Referenz-Stil - Alle Niveaus

Buchen Sie

Autor(en)

Beschreibung

Überprüfung

Die Programmiersprache C++

Bjarne Stroustrup ( aktualisiert für C++11 )

Die klassische Einführung in C++ von seinem Schöpfer. Sie wurde parallel zum Klassiker K&R geschrieben und liest sich in der Tat sehr ähnlich. Sie deckt so ziemlich alles ab, von der Kernsprache über die Standardbibliothek bis hin zu Programmierparadigmen und der Philosophie der Sprache.

[Rückblick]
Hinweis: Alle Versionen des C++-Standards werden in der Frage " <em><a href="https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents">Wo finde ich die aktuellen C- oder C++-Standarddokumente? </a></em>".

C++ Standardbibliothek Tutorial und Referenz

Nicolai Josuttis ( aktualisiert für C++11 )

Die Einführung und Referenz für die C++ Standardbibliothek. Die zweite Auflage (veröffentlicht am 9. April 2012) deckt C++11 ab.

[Rückblick]

Die C++ IO-Streams und Lokale

Angelika Langer und Klaus Kreft

Zu diesem Buch gibt es nicht viel zu sagen, außer, dass es die einzige Stelle ist, an der man endgültige Antworten findet, wenn man etwas über Flüsse und Orte wissen will.

[Rückblick]

C++11/14/17/ Referenzen:

  • Die C++ 11 / 14 / 17 Norm (INCITS/ISO/IEC 14882:2011/2014/2017) Dies ist natürlich die letzte Instanz, die entscheidet, was C++ ist und was nicht. Seien Sie sich jedoch bewusst, dass es lediglich als Referenz für erfahren Nutzer, die bereit sind, viel Zeit und Mühe aufzubringen, um sie zu verstehen. Der C++17-Standard ist in elektronischer Form für 198 Schweizer Franken erhältlich.

  • Der C++17-Standard ist verfügbar, aber anscheinend nicht in einer wirtschaftlichen Form - direkt von der ISO Es kostet 198 Schweizer Franken (etwa 200 US-Dollar). Für die meisten Menschen ist die endgültiger Entwurf vor der Normung ist mehr als ausreichend (und kostenlos). Viele werden eine noch neuerer Entwurf in dem neue Funktionen dokumentiert werden, die wahrscheinlich in C++20 enthalten sein werden.

  • Überblick über das neue C++ (C++11/14) (nur PDF) (Scott Meyers) ( aktualisiert für C++14 ) Es handelt sich um die Präsentationsunterlagen (Folien und einige Vorlesungsmitschriften) eines dreitägigen Schulungskurses, der von Scott Meyers, einem hoch angesehenen Autor über C++, angeboten wurde. Auch wenn die Liste der Themen kurz ist, ist die Qualität hoch.

  • El C++ Core Richtlinien (C++11/14/17/ ) (herausgegeben von Bjarne Stroustrup und Herb Sutter) ist ein sich ständig weiterentwickelndes Online-Dokument, das aus einer Reihe von Richtlinien für die gute Nutzung von modernem C++ besteht. Die Richtlinien konzentrieren sich auf relativ übergeordnete Themen wie Schnittstellen, Ressourcenverwaltung, Speicherverwaltung und Gleichzeitigkeit, die sich auf die Anwendungsarchitektur und das Bibliotheksdesign auswirken. Das Projekt wurde angekündigt auf der CppCon'15 von Bjarne Stroustrup und anderen und begrüßt Beiträge aus der Gemeinschaft. Die meisten Leitlinien werden durch eine Begründung und Beispiele sowie Diskussionen über eine mögliche Unterstützung durch Werkzeuge ergänzt. Viele Regeln sind so konzipiert, dass sie automatisch von statischen Analysewerkzeugen überprüft werden können.

  • El C++ Super-FAQ (Marshall Cline, Bjarne Stroustrup und andere) ist ein Versuch der Standard C++ Foundation, die C++-FAQs zu vereinheitlichen, die zuvor von Marshall Cline und Bjarne Stroustrup einzeln gepflegt wurden, und auch neue Beiträge aufzunehmen. Die Artikel behandeln meist Themen auf mittlerem Niveau und sind oft in einem humorvollen Ton geschrieben. Es kann sein, dass noch nicht alle Artikel mit der neuesten Ausgabe des C++-Standards übereinstimmen.

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


Klassiker / Ältere

Anmerkung: Einige der in diesen Büchern enthaltenen Informationen sind möglicherweise nicht mehr aktuell oder gelten nicht mehr als bewährte Verfahren.

  • Der Entwurf und die Entwicklung von C++ (Bjarne Stroustrup) Wenn Sie wissen wollen por qué die Sprache so ist, wie sie ist, finden Sie in diesem Buch Antworten. Dies deckt alles ab vor der Normung von C++.

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

  • Fortgeschrittene C++-Programmierstile und Idiome (James Coplien) Ein Vorläufer der Pattern-Bewegung, der viele C++-spezifische "Idiome" beschreibt. Es ist sicherlich ein sehr gutes Buch und könnte immer noch lesenswert sein, wenn Sie die Zeit erübrigen können, aber es ist ziemlich alt und nicht auf dem neuesten Stand von C++.

  • Entwurf umfangreicher C++-Software (John Lakos) Lakos erklärt Techniken zur Verwaltung sehr großer C++-Softwareprojekte. Sicherlich eine gute Lektüre, wenn sie nur auf dem neuesten Stand wäre. Es wurde lange vor C++ 98 geschrieben und lässt viele Funktionen (z.B. Namespaces) vermissen, die für große Projekte wichtig sind. Wenn Sie an einem großen C++-Softwareprojekt arbeiten müssen, sollten Sie es vielleicht lesen, auch wenn Sie es mit mehr als nur einem Körnchen Salz genießen sollten. Nicht zu verwechseln mit der erweiterten und späteren Buchreihe Large Scale C++ Band I-III.

  • Innerhalb des C++-Objektmodells (Stanley Lippman) Wenn Sie wissen möchten, wie virtuelle Mitgliedsfunktionen üblicherweise implementiert werden und wie Basisobjekte in einem Szenario mit Mehrfachvererbung üblicherweise im Speicher angeordnet werden und wie sich all dies auf die Leistung auswirkt, finden Sie hier ausführliche Diskussionen zu diesen Themen.

  • Das kommentierte C++-Referenzhandbuch (Bjarne Stroustrup, Margaret A. Ellis) Dieses Buch ist ziemlich veraltet, da es die Version C++ 2.0 von 1989 behandelt - Templates, Ausnahmen, Namespaces und neue Casts waren noch nicht eingeführt. Dennoch wird in diesem Buch der gesamte damalige C++-Standard behandelt, wobei die Gründe, die möglichen Implementierungen und die Merkmale der Sprache erklärt werden. Dies ist kein Buch zum Erlernen von Programmierprinzipien und -mustern in C++, sondern zum Verstehen aller Aspekte der Sprache C++.

  • Denken in C++ (Bruce Eckel, 2. Auflage, 2000). Zwei Bände; ist eine Anleitung im Stil eines Tutorials kostenlos eine Reihe von Büchern für die Einstiegsstufe. Downloads: Band 1 , Band 2 . Leider sind sie mit einer Reihe von trivialen Fehlern behaftet (z.B. die Behauptung, dass Provisorien automatisch sind const ), wobei es keine offizielle Errata-Liste gibt. Ein Teil 3 rd Die Errata-Liste der Partei ist verfügbar unter http://www.computersciencelab.com/Eckel.htm aber sie wird offenbar nicht gewartet.

  • Wissenschaftliches und technisches 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 Zusammenhang mit numerischen Methoden zu erklären und zu nutzen. Es führte damals mehrere neue Techniken ein, wie das Curiously Recurring Template Pattern (CRTP, auch Barton-Nackman-Trick genannt). Es leistete Pionierarbeit bei verschiedenen Techniken wie der Dimensionsanalyse und der automatischen Differenzierung. Es wurde mit einer Menge kompilierbaren und nützlichen Codes ausgeliefert, von einem Parser für Ausdrücke bis hin zu einem Lapack-Wrapper. Der Code ist noch online verfügbar . Leider sind die Bücher im Stil und in den C++-Funktionen etwas veraltet, aber zu der Zeit (1994, vor der STL) war es eine unglaubliche Meisterleistung. Die Kapitel über dynamische Vererbung sind etwas kompliziert zu verstehen und nicht sehr nützlich. Eine aktualisierte Version dieses Klassikers, die die Semantik von Verschiebungen und die Lehren aus der STL enthält, wäre sehr schön.

530 Stimmen

@G Rassovsky: Alle Bücher, die versprechen, X in Y Stunden zu lehren. Zum Beispiel C++ lernen in 24 Stunden. Ich glaube, dass man solche Bücher besser meiden sollte.

159 Stimmen

Ich möchte niemandem auf die Füße treten, aber ich empfehle Bruce Eckels "Thinking in C++" nicht, auch wenn ich den Autor dafür respektiere, dass er seine Materialien kostenlos online veröffentlicht. Die Perspektive des Buches suggeriert eine relativ schlechte oder ineffektive Nutzung von C++ und "objektorientierter" Programmierung, ähnlich wie eine schlechte Anwendung der GoF Design Patterns. Ich fand es ein interessantes Einführungsbuch in die Programmierung im Allgemeinen, aber je mehr man sich mit der Programmierung und (vor allem) der Informatik als Ganzes vertraut macht, desto schädlicher finde ich Bücher, die rein in "klassischen" OOP-Begriffen denken, für die Ausbildung.

44 Stimmen

@G.Rassovsky Auf der Website accu.org gibt es einen Abschnitt mit Buchbesprechungen und Bewertungen. Sie können nach den C++-Büchern suchen. Viele von ihnen sind mit "nicht empfohlen" bewertet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X