Le Guide et la liste des livres c++

cette question tente de recueillir les quelques perles parmi les dizaines de mauvais livres C++ qui sont publiés chaque année.

contrairement à beaucoup d'autres langages de programmation, qui sont souvent repris en cours de route à partir de tutoriels trouvés sur Internet, peu sont capables de récupérer rapidement C++ sans étudier un livre c++ bien écrit. Il est trop vaste et complexe pour cela. En fait, il est si grand et complexe ,que il y a beaucoup de très mauvais C++ livres là-bas. Et nous ne parlons pas de mauvais style, mais des choses comme erreurs factuelles flagrantes et promouvoir des styles de programmation abyssalement mauvais .

veuillez modifier la réponse acceptée pour fournir livres de qualité et un niveau de compétence approximatif - de préférence après discussion de votre ajout dans le C++ salle de chat . (Les habitués pourraient impitoyablement défaire votre travail s'ils sont en désaccord avec une recommandation.) Ajoutez une brève description de chaque livre que vous avez personnellement lu ou dont vous avez bénéficié. N'hésitez pas à débattre de la qualité, des rubriques, etc. Des livres qui répondent aux critères seront ajoutés à la liste. Les livres qui ont des critiques de L'Association des utilisateurs de C et c++ (ACCU) ont des liens vers la critique.

*Note: FAQ ET AUTRES les ressources peuvent être trouvées dans le C++ info tag et sous .

4252
demandé sur sbi 2008-12-23 08:23:56

1 réponses

débutant

d'Introduction, aucune expérience de la programmation

  • C++ Primer * (Stanley Lippman, Josée Lajoie, et Barbara E. Moo) ( mise à jour pour le C++11 ) Venant à 1k pages, c'est une parfaite introduction au C++ qui couvre à peu près tout dans la langue dans un très en format accessible et en grand détail. Cinquième edition (sorti le 16 août 2012) couvre C++11. [Review]

  • programmation: principes et pratique utilisant C++ (Bjarne Stroustrup, 2e édition - 25 mai 2014) ( mis à jour pour C++11/C++14 ) une introduction à la programmation utilisant C++ par le créateur du langage. Une bonne lecture, qui suppose aucune expérience de programmation précédente, mais n'est pas seulement pour les débutants.

* À ne pas confondre avec C++ Primer Plus (Stephen Prata), avec un review nettement moins favorable .

cours d'Introduction à la programmation précédente expérience

  • un Tour de C++ (Bjarne Stroustrup) ( 2e édition pour C++17 ) le "tour" est un tutoriel rapide (environ 180 pages et 14 chapitres) de tous les C++ standard (langage et bibliothèque standard, et en utilisant C++11 ) à un niveau modérément élevé pour les personnes qui connaissent déjà C++ ou au moins sont des programmeurs expérimentés. Ce livre est une version étendue du matériel qui constitue les chapitres 2-5 du langage de programmation C++, 4e édition.

  • Accelerated C++ (Andrew Koenig, et Barbara Moo, 1ère Édition - 24 août 2000) elle englobe essentiellement sur le même terrain que le C++ Primer , mais le fait sur un quart de son espace. C'est en grande partie parce qu'il ne tente pas d'être une introduction à programmation , mais une introduction à C++ pour les gens qui ont programmée précédemment dans une autre langue. Il a une courbe d'apprentissage plus raide, mais, pour ceux qui peuvent faire face à cela, il est une introduction très compacte à la langue. (Historiquement, il a innové en étant le premier du débutant livre d'utiliser une approche moderne de l'enseignement de la langue.) Malgré cela, le c++ il enseigne est purement C++98. [Review]

meilleures pratiques

  • Effective C++ (Scott Meyers, 3e édition - 22 mai 2005) ce livre a été écrit dans le but d'être le meilleur second livre que les programmeurs C++ devraient lire, et il a réussi. Les éditions précédentes étaient destinées aux programmeurs venant de C, la troisième édition change cela et cible les programmeurs venant de langues comme Java. Il présente ~50 règles empiriques faciles à se rappeler avec leur raison d'être dans un style très accessible (et agréable). Pour C++11 et C++14 les exemples et quelques problèmes sont dépassés et c++ moderne efficace devrait être préféré. [Review]

  • Effective Modern C++ (Scott Meyers) il s'agit essentiellement de la nouvelle version de Effective c++ , destinée aux programmeurs C++ faisant la transition de C++03 à C++11 et C++14.

  • Effective STL (Scott Meyers) ceci vise à faire la même chose à la partie de la bibliothèque standard provenant de la STL ce que Effective C++ a fait à la langue dans son ensemble: il présente des règles empiriques avec leur raison d'être. [Review]

Intermédiaire

  • plus efficace c++ (Scott Meyers) encore plus de règles du pouce que efficace c++ . Pas aussi importants que ceux du premier livre, mais bon à savoir.

  • exceptionnel c++ (Herb Sutter) présenté comme un ensemble de puzzles, cela a l'un des meilleurs et des discussions approfondies de la bonne gestion des ressources et de la sécurité de l'exception dans C++ grâce à l'Acquisition de Ressources est d'Initialisation (RAII) en plus d'une couverture en profondeur de toute une variété de sujets, y compris le pimpl idiome, recherche de nom, de la bonne conception de classe, et le C++ modèle de mémoire. [Review]

  • plus exceptionnel c++ (Herb Sutter) couvre des sujets de sécurité d'exception supplémentaires non couverts dans exceptionnel c++ , en ajout à la discussion de la programmation orientée objet efficace en C++ et de l'utilisation correcte du STL. [Review]

  • Exceptional C++ Style (Herb Sutter) examine la programmation générique, l'optimisation, et la gestion des ressources; ce livre a également une excellente exposition de la façon d'écrire du code modulaire en C++ en utilisant des fonctions non-membre et la responsabilité unique principe. [Review]

  • C++ Normes de Codage (Herb Sutter et Andrei Alexandrescu) "normes de Codage" ici ne veut pas dire "espaces combien devrais-je indenter mon code?"Ce livre contient 101 bonnes pratiques, idiomes, et pièges communs qui peuvent vous aider à écrire du code C++ correct, compréhensible et efficace. [Review]

  • les Modèles C++: Le Guide Complet (David Vandevoorde et Nicolai M. Josuttis) C'est le le livre sur les modèles tels qu'ils existaient avant C++11. Il couvre tous les aspects, de l'essentiel à certains des modèles les plus avancés de métaprogrammation et explique chaque détail de la façon dont les modèles fonctionnent (à la fois conceptuellement et à la façon dont ils sont mis en œuvre) et discute de nombreux pièges communs. Présente d'excellents résumés de la règle D'une définition (RL) et de la résolution de la surcharge dans les annexes. Une deuxième édition couvrant C++11, C++14 et C++17 a déjà été publiée . [Review]


avancé

  • Moderne C++ Design (Andrei Alexandrescu) A livre révolutionnaire sur les techniques de programmation génériques avancées. Présente une conception basée sur des politiques, des listes de types et des idiomes de programmation génériques fondamentaux, puis explique combien de modèles de conception utiles (y compris des allocateurs de petits objets, des foncteurs, des usines, des visiteurs et des méthodes multiples) peuvent être mis en œuvre efficacement, modulairement et proprement en utilisant la programmation générique. [Review]

  • Modèle C++ Metaprogramming (David Abrahams et Aleksey Gurtovoy)

  • C++ Competiency In Action (Anthony Williams) un livre couvrant le support C++11 competiency incluant la bibliothèque thread, la bibliothèque atomics, le modèle mémoire C++, Les serrures et les Mutex, ainsi que les problèmes de conception et de débogage des applications multithreaded.

  • Avancé C++ Métaprogrammation (Davide Di Gennaro) Un pré-C++11 manuel de TMP techniques, se concentre plus sur la pratique que sur la théorie. Il y a une tonne d'extraits dans ce livre, dont certains sont rendus obsolètes par des traits de type, mais les techniques, sont néanmoins utiles à savoir. Si vous pouvez supporter le formatage/édition excentrique, il est plus facile à lire Qu'Alexandrescu, et sans doute, plus gratifiant. Pour les développeurs plus expérimentés, il ya une bonne il y a une chance que vous preniez quelque chose au sujet d'un coin sombre de C++ (une bizarrerie) qui ne se produit habituellement que par une expérience étendue.


Reference Style-Tous Les Niveaux

C++11/14 Références:

  • la norme C++ (INCITS / ISO / IEC 14882-2011) C'est, bien sûr, l'arbitre final de tout ce qui est ou n'est pas C++. Soyez conscient, cependant, qu'il est destiné purement comme une référence pour expérimentés utilisateurs disposés à consacrer beaucoup de temps et d'efforts à sa compréhension. Comme d'habitude, la première version était tout à fait cher ($300+ US), mais il a maintenant été publié sous forme électronique pour $60US.

  • Le C++14 standard est disponible, mais apparemment pas dans une forme économique – directement de L'ISO il coûte 198 Francs suisses (environ 200 $US). Pour la plupart des gens, le projet final avant la normalisation est plus qu'adéquat (et gratuit). Beaucoup préféreront un encore plus récent , documentant les nouvelles fonctionnalités qui sont susceptibles d'être incluses dans C++17.

  • aperçu du nouveau C++ (C++11/14) (PDF seulement) (Scott Meyers) ( mis à jour pour C++1y/C++14 ) ce sont les documents de présentation (diapositives et quelques notes de cours) d'un cours de formation de trois jours offert par Scott Meyers, qui est un auteur très respecté sur C++. Même si la liste des éléments est court, la qualité est élevée.

  • The C++ Core Guidelines (C++11/14/17/...) (sous la direction de Bjarne Stroustrup et Herb Sutter) document en ligne composé d'un ensemble de lignes directrices pour l'utilisation de C++ moderne. Les lignes directrices sont axées sur des questions de niveau relativement plus élevé, comme les interfaces, la gestion des ressources, la gestion de la mémoire et la concurrence affectant l'architecture des applications et la conception des bibliothèques. Le projet a été annoncé à CppCon'15 par Bjarne Stroustrup et d'autres et se réjouit des contributions de la communauté. La plupart des lignes directrices sont complétées par une justification et des exemples ainsi que discussions sur un soutien possible de l'outil. De nombreuses règles sont conçues spécifiquement pour être vérifiables automatiquement par des outils d'analyse statique.

  • le C++ Super-FAQ (Marshall Cline, Bjarne Stroustrup et autres) est un effort de la Standard C++ Foundation pour unifier la FAQ C++ précédemment maintenue individuellement par Marshall Cline et Bjarne Stroustrup et incorporant également de nouvelles contributions. Article surtout aborder les problèmes à un niveau intermédiaire et sont souvent écrit avec un ton humoristique. Tous les articles ne peuvent être complètement à jour avec la dernière édition de la norme C++ encore.

  • cppreference.com (C++03/11/14/17/...) (initié par Nate Kohl) est un wiki qui résume les fonctionnalités de base du langage de base et possède une vaste documentation de la bibliothèque standard C++. La documentation est très précis mais plus facile à lire que le document officiel standard et fournit une meilleure navigation en raison de sa nature wiki. Le projet documente toutes les versions de la norme C++ et le site permet de filtrer l'affichage pour une version spécifique. Le projet était présenté par Nate Kohl à CppCon'14 .


Classiques / Vieux

Note: Some l'information contenue dans ces livres peut ne pas être à jour ou ne plus être considérée comme une pratique exemplaire.

  • la conception et L'évolution de C++ (Bjarne Stroustrup) si vous voulez savoir pourquoi le langage est comme il est, ce livre est où vous trouverez des réponses. Cela couvre tout avant la standardisation de C++.

  • Ruminations on C++ - (Andrew Koenig and Barbara Moo) [Review]

  • Advanced C++ Programming Styles and Idioms (James Coplien) un prédécesseur du mouvement pattern, il décrit de nombreuses "idiomes" spécifiques au C++. C'est certainement un très bon livre et pourrait encore être utile une lecture si vous pouvez le temps, mais assez vieux et ne sont pas à jour avec les C++.

  • à Grande Échelle en C++ de Logiciels de Conception (Jean Lakos) Lakos explique les techniques pour gérer de très gros C++ projets de logiciels. Certainement, une bonne lecture, si seulement il était à jour. Il a été écrit bien avant C++ 98 et manque sur de nombreuses fonctionnalités (par exemple namespaces) importantes pour les projets à grande échelle. Si vous avez besoin de travailler dans un grand c++ projet de logiciel, vous pouvez le lire, même si vous devez prendre plus d'un grain de sel. Le premier volume d'une nouvelle édition est prévu en 2018 .

  • à L'intérieur du modèle D'objet C++ (Stanley Lippman) si vous voulez savoir comment les fonctions de membre virtuel sont généralement mises en œuvre et comment les objets de base sont généralement disposés en mémoire dans un multi-héritage scénario, et comment tout cela affecte la performance, c'est là que vous trouverez des discussions approfondies sur ces sujets.

  • The Annotated C++ Reference Manual (Bjarne Stroustrup, Margaret A. Ellis) ce livre est tout à fait désuet dans le fait qu'il explore la version C++ 2.0 de 1989 - les gabarits, les exceptions, les noms d'espaces et les nouveaux casts n'ont pas encore été introduits. Disant que cependant, ce livre passe par l'ensemble de la norme C++ de l'époque expliquant la raison d'être, les implémentations possibles et les fonctionnalités du langage. Ce n'est pas un livre pour apprendre les principes de programmation et les modèles sur C++, mais pour comprendre tous les aspects du langage C++.

  • Thinking in C++ (Bruce Eckel, 2e édition, 2000). Deux volumes; est un style tutoriel gratuit ensemble de livres d'intro niveau. Téléchargements: vol 1 , vol 2 . Malheureusement, elles sont entachées d'un certain nombre d'erreurs insignifiantes (par exemple en affirmant que les temporairesont automatiquement const ), sans liste officielle d'erreurs. Partielle 3 rd partie liste d'errata est disponible à l' http://www.computersciencelab.com/Eckel.htm ), mais c'est apparemment pas maintenue.

  • de Scientifiques et d'ingénieurs C++: Une Introduction aux Techniques Avancées et des Exemples (John Barton et Lee Nackman) Il est complet et très détaillé livre qui a essayé d'expliquer et de faire usage de toutes les fonctionnalités disponibles en C++, dans le contexte des méthodes numériques. Il a introduit à l'époque plusieurs nouvelles techniques, telles que le modèle de gabarit curieusement récurrents (CRTP, également appelé Barton-nackman trick). Il a été le pionnier de plusieurs techniques comme l'analyse dimensionnelle et la différenciation automatique. Il est livré avec beaucoup de code compilable et utile, allant d'un analyseur d'expression à un emballage de Lapack. Le code est toujours disponible ici: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934 . Malheureusement, les livres sont devenus un peu dépassés dans le style et les caractéristiques C++, cependant, il était un tour-de-force incroyable à l'époque (1994, pré-STL). Le les chapitres sur la dynamique héréditaire sont un peu compliqués à comprendre et pas très utiles. Une version mise à jour de ce livre classique qui inclut la sémantique des mouvements et les leçons tirées de la STL serait très agréable.

4124
répondu George Stocker 2018-08-14 17:39:44