Découvrir le C++ moderne
Découvrir le C++ moderne
Résumé :
Introduction
Le livre « Découvrir le C++ moderne » (titre original Discovering Modern C++) de Peter Gottschling n'est pas une énième introduction au langage, mais un manuel complet pour ceux qui connaissent déjà les bases du C++ et souhaitent maîtriser ses fonctionnalités modernes. L'édition 2021 couvre les normes C++11, C++14, C++17 et C++20, ce qui en fait l'un des guides les plus actuels à ce jour. Le livre compte 608 pages d'un contenu dense mais bien structuré.
De quoi parle ce livre ?
Le livre est construit comme une immersion progressive dans les mécanismes clés du C++ moderne. L'auteur ne perd pas de temps à expliquer la syntaxe de base (variables, boucles, fonctions), mais aborde directement les sujets qui distinguent le C++ professionnel du C++ d'apprentissage :
- Pointeurs intelligents (unique_ptr, shared_ptr, weak_ptr) et gestion de la mémoire sans fuites.
- Sémantique de déplacement (move semantics) et transmission parfaite (perfect forwarding).
- Expressions lambda et fermetures — des plus simples aux plus complexes avec capture d'état.
- Templates — des templates de base aux variadic templates et SFINAE.
- Bibliothèque standard de templates (STL) — conteneurs, algorithmes, itérateurs, objets fonctionnels.
- Parallélisme et multithreading — std::thread, mutex, opérations atomiques, futures.
- Nouvelles fonctionnalités C++17/20 — std::optional, std::variant, std::any, concepts, coroutines et ranges.
- Performance — comment écrire du code rapide et comment profiler.
À qui s'adresse ce livre ?
Le livre est destiné aux programmeurs qui écrivent déjà en C++ (ou dans un autre langage compilé) et qui souhaitent passer aux normes modernes. Il sera utile :
- Aux développeurs travaillant sur du code hérité en C++98/03 et souhaitant le moderniser.
- Aux étudiants en dernière année de filières techniques étudiant la programmation système.
- Aux ingénieurs passant du C ou de Java au C++ et ayant besoin d'une compréhension approfondie des idiomes du langage.
- À tous ceux qui préparent des entretiens C++ dans les grandes entreprises IT (Google, Microsoft, JetBrains, etc.).
Que va apprendre le lecteur ?
Après avoir lu ce livre, vous serez capable de :
- Écrire du code sûr et efficace en utilisant les pointeurs intelligents et le RAII.
- Comprendre et appliquer la sémantique de déplacement pour optimiser les performances.
- Créer des algorithmes génériques avec des templates et des concepts.
- Utiliser les lambdas pour un traitement de données concis.
- Travailler avec le multithreading et la synchronisation sans courses aux données.
- Appliquer les nouveaux types de C++17/20 (optional, variant, any) pour un code plus expressif.
- Concevoir des bibliothèques et des API conviviales pour l'utilisateur.
Points forts du livre
1. Actualité. Le livre couvre les normes jusqu'à C++20, y compris les nouveautés comme les coroutines et les ranges. C'est rare même parmi les publications anglophones de 2021-2023.
2. Profondeur sans complexité excessive. L'auteur explique des sujets complexes (par exemple, SFINAE ou la sémantique de déplacement) avec des exemples que l'on peut immédiatement exécuter et expérimenter. Il ne s'enfonce pas dans des considérations académiques, mais se concentre sur l'application pratique.
3. Structure. Chaque chapitre commence par une brève introduction et se termine par un résumé et des exercices. Les exercices ne sont pas des « écrivez une calculatrice », mais des tâches qui testent la compréhension des mécanismes modernes (par exemple, implémenter son propre unique_ptr ou écrire une fonction template fonctionnant avec n'importe quel conteneur).
4. Code. Tous les exemples sont compilés et testés sur plusieurs compilateurs (GCC, Clang, MSVC). L'auteur donne des conseils sur le choix de la version du compilateur et des flags.
5. Performance. Le livre contient de nombreux conseils sur la façon d'écrire du code performant et d'utiliser des outils de profilage.