Divers
11 livres et 12 critiques, dernière mise à jour le 14 octobre 2022 , note moyenne : 4.5
- Beautiful C++ - 30 Core Guidelines for Writing Clean, Safe, and Fast Code
- Programmer efficacement en C++ - 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14
- Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)
- Exceptional C++ - 47 Engineering Puzzles, Programming Problems, and Solutions
- More Exceptional C++ - 40 New Engineering Puzzles, Programming Problems, and Solutions
- Exceptional C++ Style - 40 New Engineering Puzzles, Programming Problems, and Solutions
- Métier développeur : kit de survie
- C++ développement multiplate-forme
- C++ Coding Standards - 101 Rules, Guidelines, and Best Practices
- C++ par la pratique - Recueil d'exercices corrigés et aide-mémoire
- Programmer en langage C++ - Avec une intro aux design patterns et une annexe sur la norme C++11
Beautiful C++
30 Core Guidelines for Writing Clean, Safe, and Fast Code
Résumé de l'éditeur
"Beautiful C++ presents the C++ Core Guidelines from a developer's point of view with an emphasis on what benefits can be obtained from following the rules and what nightmares can result from ignoring them. For true geeks, it is an easy and entertaining read. For most software developers, it offers something new and useful."
--Bjarne Stroustrup, inventor of C++ and co-editor of the C++ Core Guidelines
Writing great C++ code needn't be difficult. The C++ Core Guidelines can help every C++ developer design and write C++ programs that are exceptionally reliable, efficient, and well-performing. But the Guidelines are so jam-packed with excellent advice that it's hard to know where to start. Start here, with Beautiful C++.
Expert C++ programmers Guy Davidson and Kate Gregory identify 30 Core Guidelines you'll find especially valuable and offer detailed practical knowledge for improving your C++ style. For easy reference, this book is structured to align closely with the official C++ Core Guidelines website.
Throughout, Davidson and Gregory offer useful conceptual insights and expert sample code, illuminate proven ways to use both new and longstanding language features more successfully, and show how to write programs that are more robust and performant by default.
- Avoid "bikeshedding": stop wasting valuable time on trivia
- Don't hurt yourself by writing code that will cause problems later
- Know which legacy features to avoid and the modern features to use instead
- Use newer features properly, to get their benefits without creating new problems
- Default to higher-quality code that's statically type-safe, leak resistant, and easier to evolve
- Use the Core Guidelines with any modern C++ version: C++20, C++17, C++14, or C++11
There's something here to improve virtually every program you write, design, or maintain. For ease of experimentation, all sample code is available on Compiler Explorer at https://godbolt.org/z/cg30-ch0.0.
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Édition : Addison-Wesley Professional - 352 pages, 1re édition, 23 décembre 2021
ISBN10 : 0137647840 - ISBN13 : 9780137647842
- Chapter 1.1: P.2: Write in ISO Standard C++
- Chapter 1.2: F.51: Where there is a choice, prefer default arguments over overloading
- Chapter 1.3: C.45: Don't define a default constructor that only initializes data members; use in-class member initializers instead
- Chapter 1.4: C.131: Avoid trivial getters and setters
- Chapter 1.5: ES.10: Declare one name (only) per declaration
- Chapter 1.6: NR.2: Don't insist to have only a single return-statement in a function
Section 2: Don't hurt yourself
- Chapter 2.1: P.11: Encapsulate messy constructs, rather than spreading through the code
- Chapter 2.2: I.23: Keep the number of function arguments low
- Chapter 2.3: I.26: If you want a cross-compiler ABI, use a C-style subset
- Chapter 2.4: C.47: Define and initialize member variables in the order of member declaration
- Chapter 2.5: CP.3: Minimize explicit sharing of writable data
- Chapter 2.6: T.120: Use template metaprogramming only when you really need to
Section 3: Stop using that
- Chapter 3.1: I.11: Never transfer ownership by a raw pointer (T*) or reference (T&
- Chapter 3.2: I.3: Avoid singletons
- Chapter 3.3: C.90: Rely on constructors and assignment operators, not memset and memcpy
- Chapter 3.4: ES.50: Don't cast away const
- Chapter 3.5: E.28: Avoid error handling based on global state (e.g. errno)
- Chapter 3.6: SF.7: Don't write using namespace at global scope in a header file
Section 4: Use this new thing properly
- Chapter 4.1: F.21: To return multiple "out" values, prefer returning a struct or tuple
- Chapter 4.2: Enum.3: Prefer class enums over "plain" enums
- Chapter 4.3: ES.5: Keep scopes small
- Chapter 4.4: Con.5: Use constexpr for values that can be computed at compile time
- Chapter 4.5: T.1: Use templates to raise the level of abstraction of code
- Chapter 4.6: T.10: Specify concepts for all template arguments
Section 5: Write code well by default
- Chapter 5.1: P.4: Ideally, a program should be statically type safe
- Chapter 5.2: P.10: Prefer immutable data to mutable data
- Chapter 5.3: I.30: Encapsulate rule violations
- Chapter 5.4: ES.22: Don't declare a variable until you have a value to initialize it with
- Chapter 5.5: Per.7: Design to enable optimization
- Chapter 5.6: E.6: Use RAII to prevent leaks
Commenter Signaler un problème
"Beautiful C++ presents the C++ Core Guidelines from a developer's point of view with an emphasis on what benefits can be obtained from following the rules and what nightmares can result from ignoring them. For true geeks, it is an easy and entertaining read. For most software developers, it offers something new and useful."
--Bjarne Stroustrup, inventor of C++ and co-editor of the C++ Core Guidelines
Writing great C++ code needn't be difficult. The C++ Core Guidelines can help every C++ developer design and write C++ programs that are exceptionally reliable, efficient, and well-performing. But the Guidelines are so jam-packed with excellent advice that it's hard to know where to start. Start here, with Beautiful C++.
Expert C++ programmers Guy Davidson and Kate Gregory identify 30 Core Guidelines you'll find especially valuable and offer detailed practical knowledge for improving your C++ style. For easy reference, this book is structured to align closely with the official C++ Core Guidelines website.
Throughout, Davidson and Gregory offer useful conceptual insights and expert sample code, illuminate proven ways to use both new and longstanding language features more successfully, and show how to write programs that are more robust and performant by default.
- Avoid "bikeshedding": stop wasting valuable time on trivia
- Don't hurt yourself by writing code that will cause problems later
- Know which legacy features to avoid and the modern features to use instead
- Use newer features properly, to get their benefits without creating new problems
- Default to higher-quality code that's statically type-safe, leak resistant, and easier to evolve
- Use the Core Guidelines with any modern C++ version: C++20, C++17, C++14, or C++11
There's something here to improve virtually every program you write, design, or maintain. For ease of experimentation, all sample code is available on Compiler Explorer at https://godbolt.org/z/cg30-ch0.0.
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
Programmer efficacement en C++
42 conseils pour mieux maîtriser le C++ 11 et le C++ 14
Résumé de l'éditeur
Il est structuré en 42 conseils qui vous enseigneront à la fois les bonnes pratiques et les pièges à éviter.
Vous voulez :
- comprendre les différentes formes de déduction de type,
- savoir quand (ne pas) utiliser les déclarations
- découvrir pourquoi les fonctions membres const doivent être sûres vis-à-vis des threads,
- apprendre à implémenter l'idiome Pimpl avec std::unique_ptr,
- comprendre pourquoi éviter le mode de capture par défaut dans les expressions lambda,
- assimiler les différences entre std::atomic et volatile.
Toutes les réponses se trouvent ici. Elles sont indépendantes de la plate-forme et conformes à la norme. Cet ouvrage présente un C++ portable.
Édition : Campus Press - 320 pages, 1re édition, 16 mars 2016
ISBN10 : 2100743910 - ISBN13 : 9782100743919
- Comprendre les types
- Les fonctions auto
- Migrer vers les versions modernes du C++
- Les pointeurs intelligents
- Les références Rvalue, les Move semantics et le Perfect forwarding
- Les Lamdba expressions
- Le runtime d'accès concurrentiel pour C++
Clairement, le livre ne s'adresse pas aux débutants : pour en profiter, il est nécessaire d'avoir déjà une certaine exposition aux nouveautés de C++11 et de C++14, avec une bonne expérience de C++ ; ce texte n'est pas un guide complet sur le C++ moderne et les derniers ajouts au langage. Sans ces connaissances préalables, l'ouvrage se montrera très ardu à aborder : l'auteur descend dans les détails les plus sombres de la norme, expose au grand jour toute une série de cas limites, le tout dans un style assez dense (à peine plus de trois cents pages pour autant de contenu, c'est un exploit, surtout que l'écriture reste lisible).
De par cette conception, le livre ravira cependant un public très large. Ceux qui n'ont pas encore une grande compréhension des avancées du C++ moderne auront une explication rationnelle des nouveaux concepts, les plus avancés se réjouiront du style d'écriture orienté vers un usage à long terme : il ne contient pas vraiment de solution directe à des problèmes rencontrés, mais entretient une culture C++ moderne. La performance du code généré est un point sur lequel l'auteur insiste, parfois lourdement.
Chaque « conseil » s'achève toujours sur un bref résumé des points essentiels à retenir. Cependant, la terminologie de « conseil » est très mal adaptée : il s'agit plutôt de séquences sur un sujet donné, préférant l'explorer à fond, en présentant les diverses alternatives et les avantages et défauts des unes et des autres. D'ailleurs, les points spécifiques à C++11 ou C++14 sont indiqués, en précisant ce qui est valable dans une version et pas l'autre, mais aussi tout ce qui s'applique depuis C++98.
Programmer efficacement en C++ apporte des clarifications sur le C++ moderne (C++11 et C++14). Ainsi, vous recevrez des explications sur la déduction de type, le nouveau mot clé auto, les différences entre le C++98 et le C++11, les pointeurs intelligents, les références rvalue, les expressions lambda et la bibliothèque pour la programmation concurrente.
J’estime que ce livre est un passage obligatoire pour tout développeur connaissant le C++ et souhaitant s’investir dans le langage. Une première lecture permettra de se mettre en tête l’interprétation faite par les compilateurs, ensuite, le livre restera non loin de vous, vous permettant de retourner rapidement sur les points intéressants au moment de l’écriture du code.
La renommée des livres de Scott Meyers (et du personnage en lui-même) n’est plus à faire. Ce livre apporte 42 nouveaux conseils pour mieux appréhender le C++ moderne. Comme pour tout livre portant sur la programmation, il est important de mettre en pratique l’enseignement offert à travers ces pages.
On regrettera toutefois que la version française perde la coloration du code en rouge lorsque celui-ci doit être mis en avant pour une simple police en gras.
J’ai pu trouver tout cela dans ce livre mais aussi découvrir d’autre nouveauté comme l’api concurrente et mieux appréhender ce que représente le « C++ moderne ».
Si vous appréciez d’exploiter au mieux un langage et que vous commencez à accumuler quelques lacunes, ce livre est fait pour vous. Cela vous permettra aussi de repartir sur de bonne base pour les évolutions futures.
Commenter Signaler un problème
Il est structuré en 42 conseils qui vous enseigneront à la fois les bonnes pratiques et les pièges à éviter. Vous voulez :
- comprendre les différentes formes de déduction de type,
- savoir quand (ne pas) utiliser les déclarations auto,
- découvrir pourquoi les fonctions membres const doivent être sûres vis-à-vis des threads,
- apprendre à implémenter l'idiome Pimpl avec std::unique_ptr,
- comprendre pourquoi éviter le mode de capture par défaut dans les expressions lambda,
- assimiler les différences entre std::atomic et volatile.
Toutes les réponses se trouvent ici. Elles sont indépendantes de la plate-forme et conformes à la norme. Cet ouvrage présente un C++ portable.
Tous les meilleurs livres pour apprendre la programmation C++
Coder efficacement
Bonnes pratiques et erreurs à éviter (en C++)
Résumé de l'éditeur
Organisé en quatre parties, il traite successivement :
- des principes de base qui devraient être respectés quel que soit le langage de programmation ou le paradigme utilisé ;
- des fondements de la programmation orientée objet et des principes qui sont applicables en toutes circonstances dès lors qu'on utilise ce paradigme ;
- des principes spécifiques au C++ ;
Sa présentation sous forme de fiches thématiques permet aussi bien une lecture continue qu'un accès direct aux points qui vous intéressent.
Écrit sur un ton vivant et personnel, ce livre vous présente un point de vue résolument engagé en faveur d'une approche moderne de la programmation.
Édition : D-BookeR - 416 pages, 1re édition, 17 février 2014
ISBN10 : 2822701660 - ISBN13 : 9782822701662
L'un de ses points forts est que l'auteur fait preuve de pragmatisme : ces préceptes sont prévus pour faciliter la maintenance du code lors de son évolution, mais leur respect peut mener à un code plus compliqué à écrire, à plus de réflexion avant de se lancer au clavier. Si ces évolutions sont très peu probables, inutile d'ajouter une couche de complexité au projet pour en faciliter l'ajout ultérieur (« la solution la plus simple est toujours la meilleure »).
Les premières parties du livre sont alors mises en application dans un jeu d'échecs en console. Bien que l'exemple soit relativement simple, bien coder l'application (pour en faciliter les évolutions, tant dans la jouabilité que dans l'interface) requiert de se poser, de réfléchir avant d'agir. Il s'agit d'ailleurs d'un des points sur lesquels l'auteur insiste : pour produire du code, une application de qualité, il n'est pas suffisant de s'installer derrière un clavier et de taper à un rythme effréné.
L'application des principes se fait exclusivement en C++, avec une certaine utilisation de C++11 là où le standard apporte au code une lisibilité supplémentaire ou de meilleurs messages d'erreur. L'ouvrage suppose cependant une connaissance de C++03, le standard précédent du langage : les nouveautés sont expliquées afin que le lecteur comprenne l'avantage d'utiliser les nouvelles constructions. Par contre, il ne s'agit pas d'un ouvrage traitant en long et en large du nouveau standard.
Certains patrons de conception sont aussi présentés, au niveau de l'étude de cas, afin de résoudre des problématiques propres au développement logiciel. Bien que le paradigme orienté objet soit omniprésent, l'œuvre n'est pas intégriste : d'autres paradigmes implémentés par C++, notamment la programmation générique, sont employés afin de limiter la quantité de code à écrire.
L'organisation est plus proche d'une série de fiches thématiques que d'une narration continue : la partie plus « théorique » de l'ouvrage n'est pas tant prévue pour une lecture linéaire qu'un piochage des éléments intéressants à un instant donné.
Ce livre vivant peut donc être recommandé chaudement à tous les développeurs. Les débutants y trouveront diverses manières d'améliorer leur code, mais ils n'en bénéficieront vraiment qu'avec de l'expérience de la programmation, notamment en C++ (l'annexe présente d'ailleurs un aperçu général de la chaîne de compilation en C++, souvent mystifiante pour ce public cible). Les plus chevronnés pourront découvrir de nouvelles pratiques pour améliorer leur manière de développer.
L'un de ses points forts est que l'auteur fait preuve de pragmatisme : ces préceptes sont prévus pour faciliter la maintenance du code lors de son évolution, mais leur respect peut mener à un code plus compliqué à écrire, à plus de réflexion avant de se lancer au clavier. Si ces évolutions sont très peu probables, inutile d'ajouter une couche de complexité au projet pour en faciliter l'ajout ultérieur (« la solution la plus simple est toujours la meilleure »).
Les premières parties du livre sont alors mises en application dans un jeu d'échecs en console. Bien que l'exemple soit relativement simple, bien coder l'application (pour en faciliter les évolutions, tant dans la jouabilité que dans l'interface) requiert de se poser, de réfléchir avant d'agir. Il s'agit d'ailleurs d'un des points sur lesquels l'auteur insiste : pour produire du code, une application de qualité, il n'est pas suffisant de s'installer derrière un clavier et de taper à un rythme effréné.
L'application des principes se fait exclusivement en C++, avec une certaine utilisation de C++11 là où le standard apporte au code une lisibilité supplémentaire ou de meilleurs messages d'erreur. L'ouvrage suppose cependant une connaissance de C++03, le standard précédent du langage : les nouveautés sont expliquées afin que le lecteur comprenne l'avantage d'utiliser les nouvelles constructions. Par contre, il ne s'agit pas d'un ouvrage traitant en long et en large du nouveau standard.
Certains patrons de conception sont aussi présentés, au niveau de l'étude de cas, afin de résoudre des problématiques propres au développement logiciel. Bien que le paradigme orienté objet soit omniprésent, l'œuvre n'est pas intégriste : d'autres paradigmes implémentés par C++, notamment la programmation générique, sont employés afin de limiter la quantité de code à écrire.
L'organisation est plus proche d'une série de fiches thématiques que d'une narration continue : la partie plus « théorique » de l'ouvrage n'est pas tant prévue pour une lecture linéaire qu'un piochage des éléments intéressants à un instant donné.
Ce livre vivant peut donc être recommandé chaudement à tous les développeurs. Les débutants y trouveront diverses manières d'améliorer leur code, mais ils n'en bénéficieront vraiment qu'avec de l'expérience de la programmation, notamment en C++ (l'annexe présente d'ailleurs un aperçu général de la chaîne de compilation en C++, souvent mystifiante pour ce public cible). Les plus chevronnés pourront découvrir de nouvelles pratiques pour améliorer leur manière de développer.
Commenter Signaler un problème
Plus qu'une petite semaine, et ils sera dans les librairies
Salut,Je confirme qu'il sortira bien le 17
Et je confirme qu'il contient bien un peu de C++11, mais que ce n'est pas vraiment le sujet principal
Pour cela, l'expérience m'a incité à ressortir un autre projet de mes cartons, mais il faudra attendre un peu, parce que je m'attaque à un "gros morceau"
Exceptional C++
47 Engineering Puzzles, Programming Problems, and Solutions
Résumé de l'éditeur
Le contenu du livre aborde tout d'abord les templates et la STL. Quels sont les risques à créer une classe de chaînes de caractères non sensibles à la casse ? Comment profiter au maximum de la STL ?
Le deuxième bloc de questions concerne les exceptions. Quand peut-on lancer une exception, quelles sont les exceptions que l'on peut lancer à quel moment, utiliser du code qui ne lancera jamais d'exception, ... Sans doute la partie du C++ la moins mise en valeur et la moins travaillée par chacun, les exceptions ne fonctionnent pas toujours comme on l'espère, et ces différences sont exposées dans ce livre.
La troisième partie concerne l'héritage et l'écriture élégante d'un design. Comment doit-on hériter et dans quelles proportions ? Devrait-on hériter plus souvent on peut-on s'en passer plus souvent qu'on ne le pense ?
Avec l'avènement de la STL, les temps de compilation ont augmenté. Est-il possible de les diminuer ? Comment peut-on le faire avec des idiomes nouveaux ?
Une partie est consacrée au principe de Koenig, le Koening lookup , qui permet de résoudre des recherches de fonctions, mais ce principe n'est pas très connu, il mérite à le devenir plus.
Les trois dernières parties sont consacrées à la vie des variables et donc aussi à la gestion de la mémoire. Petit accent sur les nouvelles possibilités du C++, les std::auto_ptr, les initialisations de variables locales aux classes, les durées de vie, les conversions, ... Est aussi abordé le mot-clé const et son utilité, les casts, le type bool, sa vie, son œuvre, ...
Édition : Addison-Wesley Professional - 240 pages, 1re édition, 1er novembre 2008
ISBN10 : 0201615622 - ISBN13 : 9780201615623
Le livre a été modifié par rapport aux questions/réponses sur le net afin d'être conforme au standard C++. 2 suites sont aussi sorties. Sans doute LE livre pour arrêter de programmer en C avec du C++.
Commenter Signaler un problème
Le contenu du livre aborde tout d'abord les templates et la STL. Quels sont les risques à créer une classe de chaînes de caractères non sensibles à la casse ? Comment profiter au maximum de la STL ?
Le deuxième bloc de questions concerne les exceptions. Quand peut-on lancer une exception, quelles sont les exceptions que l'on peut lancer à quel moment, utiliser du code qui ne lancera jamais d'exception, ... Sans doute la partie du C++ la moins mise en valeur et la moins travaillée par chacun, les exceptions ne fonctionnent pas toujours comme on l'espère, et ces différences sont exposées dans ce livre.
La troisième partie concerne l'héritage et l'écriture élégante d'un design. Comment doit-on hériter et dans quelles proportions ? Devrait-on hériter plus souvent on peut-on s'en passer plus souvent qu'on ne le pense ?
Avec l'avènement de la STL, les temps de compilation ont augmenté. Est-il possible de les diminuer ? Comment peut-on le faire avec des idiomes nouveaux ?
Une partie est consacrée au principe de Koenig, le Koening lookup , qui permet de résoudre des recherches de fonctions, mais ce principe n'est pas très connu, il mérite à le devenir plus.
Les trois dernières parties sont consacrées à la vie des variables et donc aussi à la gestion de la mémoire. Petit accent sur les nouvelles possibilités du C++, les std::auto_ptr, les initialisations de variables locales aux classes, les durées de vie, les conversions, ... Est aussi abordé le mot-clé const et son utilité, les casts, le type bool, sa vie, son œuvre, ...
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
More Exceptional C++
40 New Engineering Puzzles, Programming Problems, and Solutions
Résumé de l'éditeur
- Quels sont les dangers de l'utilisation des std::set ou stp::map et comment les éviter ?
- Quelles sont les fonctions dépréciées utilisables avec la STL et celles non utilisables ?
- Quelles sont les techniques disponibles pour générer du code templatisé puissant dont le comportement peut être modifié par le type de données utilisé ?
- Quand et comment optimiser son code ? Quels sont les optimisations pouvant causer des problèmes, surtout en environnement multi-threadé ?
- Comment la gestion des exceptions affecte-elle le design des classes ?
- Comment gérer les problèmes d'héritage avec des bibliothèques de concepteurs différents - problème des soeurs siamoises - ?
- Comment utiliser les std::auto_ptr de manière sûre et comment l'adapter avec des patterns simples pour éviter les écueils courants ? Est-il utilisable en tant que membre de classe ? A quel prix ?
- Quelques questions courantes en C++ comme l'utilisation des namespaces : comment et pourquoi ?
Édition : Addison-Wesley Professional - 304 pages, 1re édition, 1er décembre 2001
ISBN10 : 020170434X - ISBN13 : 9780201704341
Les réponses n'en sont pas moins pertinentes. La gestion de la mémoire dans les conteneurs peut être surprenante et les exceptions sont de retour. Le fait qu'il y ait moins de suite dans les questions les rend plus applicatives et moins génériques. Enfin, chaque question peut être utilisée telle quelle quand les questions en bloc nous entraînent dans la réflexion de plus en plus loin. C'est donc plus théorique que pratique ; ce n'est pas moins intéressant, c'est différent. Un très bon livre tout de même.
Commenter Signaler un problème
- Quels sont les dangers de l'utilisation des std::set ou stp::map et comment les éviter ?
- Quelles sont les fonctions dépréciées utilisables avec la STL et celles non utilisables ?
- Quelles sont les techniques disponibles pour générer du code templatisé puissant dont le comportement peut être modifié par le type de données utilisé ?
- Quand et comment optimiser son code ? Quels sont les optimisations pouvant causer des problèmes, surtout en environnement multi-threadé ?
- Comment la gestion des exceptions affecte-elle le design des classes ?
- Comment gérer les problèmes d'héritage avec des bibliothèques de concepteurs différents - problème des soeurs siamoises - ?
- Comment utiliser les std::auto_ptr de manière sûre et comment l'adapter avec des patterns simples pour éviter les écueils courants ? Est-il utilisable en tant que membre de classe ? A quel prix ?
- Quelques questions courantes en C++ comme l'utilisation des namespaces : comment et pourquoi ?
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
Exceptional C++ Style
40 New Engineering Puzzles, Programming Problems, and Solutions
Résumé de l'éditeur
Organisé autour de problèmes et solutions pratiques, ce livre offre une nouvelle vision de détails cruciaux du C++ et de leur relations et de nouvelles stratégies pour les techniques de programmation clé du C++ actuel - y compris la programmation générique, la STL, les exceptions. Vous trouverez des réponses à des questions telles que :
Que peut-on apprendre à propos du design de bibliothèques à partir de la STL ?
Comment éviter de créer du code templaté non générique ?
Pourquoi ne pas spécialiser des fonctions tempaltées ? Que faire à la place ?
Comment la gestion des exceptions peut-elle aller au-delà des instructions try et catch ?
Quand et comment exposer les parties privées d'une classe ?
Comment créer des classes plus sûres pour le contrôle des versions ?
Quel est le coût réel de l'utilisation des conteneurs standards ?
Comment l'utilisation de const optimise réellement votre programme ?
Comment le mot-clé inline affecte-t-il réellement la performance ?
Quand le code qui semble faux compile et s'exécute parfaitement et pourquoi s'en soucier ?
Qu'est qui est mauvais dans le design des std::string ?
Exceptional C++ Style vous aidera à créer, mettre en place l'architecture et coder avec style tout en permettant plus de robustesse et de performance dans tous vos logiciels C++.
(Traduction du dessous de couverture)
Édition : Addison-Wesley Professional - 325 pages, 1re édition, 1er août 2004
ISBN10 : 0201760428 - ISBN13 : 978201760422
Par exemple, l'histoire des const dans ce livre souligne principalement qu'il ne sert pas au compilateur pour optimiser le code, mais plutôt au programmeur à faire des optimisations lui-même lorsqu'il sait que le code le permet, même s'il indique que les futurs compilateurs pourraient le permettre. D'ailleurs, il parle pas mal du futur, édition des liens globale, compilation à la volée, ... même de tentative infructueuses de recréer des unions dans le C++ mais que la tentative a échouée de peu car les compilateurs ne sont pas assez puissants. On sent peut-être une certaine justification ou correction par rapport aux livres précédents où les gens ont mal compris certaines solutions, ont conclu trop vite par rapport à des avantages, atouts des solutions données, alors qu'il ne voulait clairement pas aller au-delà de ce qu'il disait, les gens ont tenté de lire entre les lignes quelque chose qui n'existait pas. Ce livre permet de recadrer, à mon avis, l'excitation qui a pu surgir des 2 premiers livres.
Métier développeur : kit de survie
Résumé de l'éditeur
Édition : Dunod - 271 pages, 2e édition, 1er mai 2006
ISBN10 : 2100485202 - ISBN13 : 9782100485208
- Good-enough software
- Le cycle de vie d'un projet logiciel
- Les outils du développeur
- Normes de programmation
- Méthodes de programmation
- L'essentiel du système
- Cartographie d'une équipe de développement
- Un peu de psychologie
- Un peu d'organisation
Ce livre est une véritable transmission d'expérience de la part de l'auteur. Des conseils judicieux sur l'optimisation du code, la gestion des priorités, des outils utiles sont prodigués tout au long de ce livre.
Je trouve un peu dommage que ce livre soit fortement orienté C\C++. Certains chapitres ne vous serviront à rien si vous n'utilisez pas ces langages. Cette information n'est pas clairement précisez sur la couverture (uniquement sur l'illustration).
Cela dit, rien ne vous empêche d'adapter certain conseils à votre langage de favoris. C'est le cas par exemple des normes d'écriture.
Plus que des conseils, ce livre dresse un état des lieux du métier de développeur. C'est un constat des réalités du métier, aussi bien sur le plan organisationnel, fonctionnel que relationnel.
Je me suis particulièrement amusé avec le chapitre portant sur la psychologie. Serez-vous reconnaître dans votre équipe de développement, le développeur doué mais fumiste, le perfectionniste, le gentil incompétent, ou l'imposteur ?
Commenter Signaler un problème
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
C++ développement multiplate-forme
Résumé de l'éditeur
Divers sujets comme l'emploi d'API natives ou les dernières stratégies en matière de développement d'interfaces graphiques portables y sont détaillés ainsi que la façon d'obtenir des fonctions équivalentes tout en évitant les problèmes inhérents aux techniques de développement multiplates-formes traditionnelles.
Ce livre sera une référence essentielle pour tout développeur professionnel et responsable technique chargé de créer un nouveau logiciel multiplate-forme de porter un logiciel C/C++ existant ou de concevoir un logiciel pour lequel un support multiplate-forme risque d'être exigé.
Il aura notamment la possibilité de télécharger modifier et d'étudier un jeu d'outils à interface graphique multiplate-forme complet basé sur le langage XUL de Mozilla.
Édition : Pearson Education - 513 pages, 23 mai 2008
ISBN10 : 2744022624 - ISBN13 : 9782744022623
- Stratégie et gestion
- Système de génération/environnement de développement
- Gestionnaire de configuration logicielle
- Installation et déploiement
- Portabilité
- Interfaces utilisateur
- Widgets
- Développer une boîte à outils GUI multiplate-forme en C++
Le livre est découpé en plusieurs chapitres organisés autour d'un thème.
- Le premier chapitre parle de stratégie et gestion,L'auteur aborde la problématique du développement multiplate-forme avec la notion de fabrique de plateforme ainsi que les règles de base pour ce type de développement.
- Le deuxième chapitre est consacré au système de génération et à l'environnement de développement.
C'est-à-dire au choix du compilateur sur les plateforme cibles étudiées à savoir : Windows, Mac OS X, Linux, et à la génération du programme en utilisant les outils CygWin, Make, AutoConf/Automake. - Le troisième chapitre étudie les solutions de gestion de configuration logicielle.
Au programme le système de suivi et de signalement des erreurs avec Tinderbox et Bugzilla, le suivi de code sources avec CVS ou subvertion. - Le quatrième chapitre est consacré à l'installation et au déploiement du programme cible avec XPInstall.
- Le cinquième chapitre expose la problématique des interfaces et des bibliothèques des systèmes d'exploitation.
L'auteur parle des api basées sur Posix ou encore de la bibliothèque d'abstraction NSPR (Netscape Portable Runtime). - Le sixième chapitre traite de la portabilité, l'auteur analyse les pièges du langage C ou C++, il aborde le problème des valeurs à virgule flottante, la taille des types d'entier, les pièges liés à la sérialisation des données, l'alignement des structures, les conversions d'entiers.
- Le septième chapitre traite de l'interface utilisateur avec le modèle de développement modèle/vue ainsi que la méthode de communication par publication/abonnement.
- Le huitième chapitre est une initiation au système de développement wxWidgets.
- Enfin le dernier chapitre expose une boîte à outil GUI multiplate-forme en c++ utilisant le XML pour décrire l'interface utilisateur.il est décomposé en trois parties :
- Un bref rappel sur DHTML, JavaScript, DOM et les feuilles de styles.
- Une brève description de XUL qui permet de décrire une interface graphique basée sur le langage XML, un passage sur les interactions avec l'interface par du code JavaScript, un autre pour établir une liaison entre du code JavaScript et le code C/C++ avec XPCOM et XPConnect.
- L'étude de Trixul la boîte à outils développée pour les besoins du livre, celle-ci utilise les Forms .Net sous Windows, Gtk+ sous Linux et Cocoa sur Mac OS X.
Conclusion :
Au delà du développement multiplate-forme, ce livre fournit une somme d'informations intéressantes dans toutes les phases du développement d'un programme sur les trois OS majeurs du moment.
La présentation du principe de fonctionnement de Trixul avec la séparation de l'interface en XML, l'intégration d'un moteur javascript (spiderMonkey), la prise en charge et l'interaction de classes C++ instanciées à partir du code javascript, sont autant de sujets intéressants pour un développeur C++ à découvrir avec cette boîte à outils simplifiée.
Commenter Signaler un problème
Divers sujets comme l'emploi d'API natives ou les dernières stratégies en matière de développement d'interfaces graphiques portables y sont détaillés ainsi que la façon d'obtenir des fonctions équivalentes tout en évitant les problèmes inhérents aux techniques de développement multiplates-formes traditionnelles.
Ce livre sera une référence essentielle pour tout développeur professionnel et responsable technique chargé de créer un nouveau logiciel multiplate-forme de porter un logiciel C/C++ existant ou de concevoir un logiciel pour lequel un support multiplate-forme risque d'être exigé.
Il aura notamment la possibilité de télécharger modifier et d'étudier un jeu d'outils à interface graphique multiplate-forme complet basé sur le langage XUL de Mozilla.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
C++ Coding Standards
101 Rules, Guidelines, and Best Practices
Résumé de l'éditeur
Les auteurs couvrent pratiquement chaque facette de la programmation C++ : le design et style de codage, les fonctions, les opérateurs, le design de classe, l'héritage, la construction/destruction, la copie, l'affectation, les namespaces, les modules, les templates, les générics, les exceptions, les conteneurs et les algorithmes STL et plus encore. Chaque norme est décrite de manière concise, avec des exemples pratiques. De la définition de type au traitement d'erreurs, ce livre présente les meilleurs pratiques du C++, y compris certaines qui ont été seulement récemment identifiées et standardisées - des techniques que vous pouvez ne pas connaître même si vous avez utilisé C++ pendant des années. En chemin, vous trouverez des réponses aux questions comme
- Ce qui vaut la peine d'être normalisé - et qu'est-ce qui ne le vaut pas ?
- Quelles sont les meilleures pratiques de code pour l'adaptabilité ?
- Quels sont les éléments d'un traitement d'erreurs raisonnable ?
- Comment (et pourquoi) éviter l'initialisation inutile, les dépendances cycliques et définitionnelles ?
- Comment (et pourquoi) utiliser le polymorphisme statique et dynamique ensemble ?
- Comment pratiquer une surcharge "safe" ?
- Quand fournir un swap sans faille ?
- Pourquoi et comment éviter que les exceptions se propagent à travers les frontières d'un module ?
- Pourquoi ne pas écrire des déclarations d'espace de noms ou des directives dans un fichier d'entête ?
- Pourquoi utiliser les vecteurs de la STL et les chaînes de caractères plutôt que les tableaux ?
- Comment choisir le bon algorithme de recherche ou tri dans la STL ?
- Quelles sont les règles qu'il faut suivre pour assurer un code type-safe ?
- Que vous travailliez seul ou avec d'autres, C++ Coding Standards vous aidera à rédiger un code plus propre et à l'écrire plus vite, avec moins de soucis et moins de frustration.
Édition : Addison-Wesley Professional - 240 pages, 1re édition, 1er novembre 2004
ISBN10 : 0321113586 - ISBN13 : 9780321113580
- Table of Contents
- Preface
- Organizational and Policy Issues
- Design Style
- Coding Style
- Functions and Operators
- Class Design and Inheritance
- Construction, Destruction, and Copying
- Namespaces and Modules
- Templates and Genericity
- Error Handling and Exceptions
- STL: Containers
- STL: Algorithms
- Type Safety
- Bibliography
- Summary of Summaries
- Index
Ce livre n'est pas strict en soi dès l'item 0 (petite référence geek au tableau commençant à l'indice 0 et non 1) en précisant que peu importe le formatage de code que vous utilisez, le tout est de rester consistant à travers vos fichiers et même à travers vos projets entiers. La présence d'une rubrique exception dans de nombreux items est également fortement appréciée pour contrebalancer les extrêmes.
Il est le livre parfait pour mettre en place de bonnes pratiques au sein d'une nouvelle équipe et sera très apprécié par les chefs de projets pour éviter tout conflit entre programmeur venant d'horizons différents avec des pratiques opposées. Il est selon moi d'un niveau débutant/avancé.
Débutant : un livre permettant de partir directement sur de bonnes bases en matière de code et expliquant clairement l'avantage et l'inconvénient de chaque méthode.
Intermédiaire : les programmeurs ayant une première expérience apprendront des choses en profondeur concernant les bonnes pratiques même si certains items leur sembleront évidents.
Expert : un expert en C++ s'ennuiera très certainement à la lecture de ce livre rappelant des règles qu'il aura (je l'éspere) l'habitude d'utiliser naturellement.
On peut reprocher à ce livre le manque d'exemples complets, seules des parties de code sont présentes.
Commenter Signaler un problème
Les auteurs couvrent pratiquement chaque facette de la programmation C++ : le design et style de codage, les fonctions, les opérateurs, le design de classe, l'héritage, la construction/destruction, la copie, l'affectation, les namespaces, les modules, les templates, les générics, les exceptions, les conteneurs et les algorithmes STL et plus encore. Chaque norme est décrite de manière concise, avec des exemples pratiques. De la définition de type au traitement d'erreurs, ce livre présente les meilleurs pratiques du C++, y compris certaines qui ont été seulement récemment identifiées et standardisées - des techniques que vous pouvez ne pas connaître même si vous avez utilisé C++ pendant des années. En chemin, vous trouverez des réponses aux questions comme
- Ce qui vaut la peine d'être normalisé - et qu'est-ce qui ne le vaut pas ?
- Quelles sont les meilleures pratiques de code pour l'adaptabilité ?
- Quels sont les éléments d'un traitement d'erreurs raisonnable ?
- Comment (et pourquoi) éviter l'initialisation inutile, les dépendances cycliques et définitionnelles ?
- Comment (et pourquoi) utiliser le polymorphisme statique et dynamique ensemble ?
- Comment pratiquer une surcharge "safe" ?
- Quand fournir un swap sans faille ?
- Pourquoi et comment éviter que les exceptions se propagent à travers les frontières d'un module ?
- Pourquoi ne pas écrire des déclarations d'espace de noms ou des directives dans un fichier d'entête ?
- Pourquoi utiliser les vecteurs de la STL et les chaînes de caractères plutôt que les tableaux ?
- Comment choisir le bon algorithme de recherche ou tri dans la STL ?
- Quelles sont les règles qu'il faut suivre pour assurer un code type-safe ?
- Que vous travailliez seul ou avec d'autres, C++ Coding Standards vous aidera à rédiger un code plus propre et à l'écrire plus vite, avec moins de soucis et moins de frustration.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
C++ par la pratique
Recueil d'exercices corrigés et aide-mémoire
Résumé de l'éditeur
Après près d'une centaine d'exercices gradués de programmation en C++11, accompagnés d'une solution complète et souvent détaillée, l'ouvrage est structuré en deux parties : la première présente la programmation procédurale, tandis que la seconde aborde le paradime de la programmation orientée objet. Chacune de ces parties se termine par un chapitre regroupant des exercices généraux. Chaque chapitre contient un exercice « pas à pas » et une série d'exercices classés par niveaux de difficulté. L'esemble des codes sources des corrigés est disponible sur le site www.ppur.org.
Cet ouvrage est principalement destiné aux étudiants du premier cycle universitaire ainsi qu'à tous ceux souhaitant parfaire leurs connaissances en C++.
Édition : Presses polytechniques et universitaires romande - 400 pages, 3e édition, 1er septembre 2012
ISBN10 : 2880749786 - ISBN13 : 9782880749781
Malgré que cette édition soit estampillée 3e édition, mise à jour et adaptée pour le C++11, l'utilisation de ce dernier n'en est que très pauvre et est négligeable. Bref, c'est un livre pour un étudiant en informatique qui voudrait avoir des exercices intéressants et variés afin de s'entraîner à programmer en C++.
Commenter Signaler un problème
Après près d'une centaine d'exercices gradués de programmation en C++11, accompagnés d'une solution complète et souvent détaillée, l'ouvrage est structuré en deux parties : la première présente la programmation procédurale, tandis que la seconde aborde le paradime de la programmation orientée objet. Chacune de ces parties se termine par un chapitre regroupant des exercices généraux. Chaque chapitre contient un exercice « pas à pas » et une série d'exercices classés par niveaux de difficulté. L'esemble des codes sources des corrigés est disponible sur le site www.ppur.org.
Cet ouvrage est principalement destiné aux étudiants du premier cycle universitaire ainsi qu'à tous ceux souhaitant parfaire leurs connaissances en C++.
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
Programmer en langage C++
Avec une intro aux design patterns et une annexe sur la norme C++11
Résumé de l'éditeur
Édition : Eyrolles - 822 pages, 5 mai 2014
ISBN10 : 2212140088 - ISBN13 : 9782212140088
- Présentation du langage C ++
- Généralités sur le langage C++
- Les types de base du C++
- Opérateurs et expressions
- Les entrées-sorties conversationnelles du C++
- Les instructions de contrôle
- Les fonctions
- Les tableaux et les pointeurs
- Les chaînes de style C
- Les types structure, union et énumération
- Classes et objets
- Les propriétés des fonctions membres
- Construction, destruction et initialisation des objets
- Les fonctions amies
- La surdéfinition d'opérateurs
- Les conversions de type définies par l'utilisateur
- Les patrons de fonctions
- Les patrons de classes
- L'héritage simple
- L'héritage multiple
- Les fonctions virtuelles et le polymorphisme
- Les flots
- La gestion des exceptions
- Généralités sur la bibliothèque standard (STL)
- Les conteneurs séquentiels
- Les conteneurs associatifs
- Les algorithmes standards
- La classe string
- Les outils numériques
- Les espaces de noms
- Le préprocesseur et l'instruction typedef
- Introduction au Design Patterns
Annexes
- Règles de recherche d'une fonction surdéfinie
- Compléments sur les exceptions
- Les différents types de fonctions en C++
- Comptage de références
- Les pointeurs sur des membres
- Les algorithmes standard
- Les principales fonctions de la bibliothèque C standard
- Les incompatibilités entre C et C++
- C++Ox
Commenter Signaler un problème
[Lire la suite]
- Avez-vous lu ce livre ou pensez-vous le lire ?
- Souhaitez-vous ajouter une critique de ce livre sur la page de la rubrique ?
- Avez-vous un commentaire à faire ?
La première chose à regarder dans ce livre : l'auteur est-il enfin passé au C++ moderne, ou est-il resté dans un enseignement historique du C++ ?