C++20 : Guide complet
C++20 : Guide complet
Résumé :
Introduction
Le livre « C++20 : Guide complet » (titre original — C++20: The Complete Guide) de Nicolai Josuttis n'est pas simplement une édition de plus sur le langage de programmation. C'est un ouvrage fondamental qui est à juste titre considéré comme l'une des sources les plus autorisées sur la norme C++20. Publié en 2022, ce livre de 476 pages couvre toutes les innovations clés qui ont radicalement changé le visage du langage. Pour le site éducatif PythonLib, axé sur une compréhension approfondie des technologies, ce livre constituera un pont idéal entre le C++ classique et son paradigme moderne.
De quoi parle ce livre ?
Nicolai Josuttis, connu pour ses ouvrages « C++17: The Complete Guide » et « The C++ Standard Library », démontre une fois de plus sa maîtrise dans l'explication de sujets complexes. Le livre est exclusivement consacré aux nouvelles fonctionnalités apparues dans la norme C++20. L'auteur ne réécrit pas les bases, mais se concentre sur les quatre « piliers » de la mise à jour : Concepts, Coroutines, Modules et Ranges. De plus, il détaille des améliorations moins vastes mais importantes : la comparaison à trois voies (operator <=>), les initialiseurs dans la boucle range-based for, les expressions constantes améliorées (constexpr), les nouveaux attributs et bien plus encore.
À qui s'adresse ce livre ?
Cette édition est strictement destinée aux développeurs expérimentés. Si vous commencez tout juste à apprendre le C++ ou si vous n'êtes pas familier avec C++11/14/17, le livre vous semblera difficile. Josuttis suppose que le lecteur maîtrise les templates, les expressions lambda, la sémantique de déplacement et la bibliothèque standard. Le livre conviendra parfaitement :
- Aux programmeurs passant de C++17 à C++20 ;
- Aux développeurs de bibliothèques et de frameworks ;
- Aux architectes logiciels souhaitant adopter des idiomes modernes ;
- Aux enseignants qui veulent se tenir au courant des dernières normes.
Que va apprendre le lecteur ?
Après la lecture, vous serez en mesure d'appliquer en toute confiance les fonctionnalités suivantes :
- Concepts : comment imposer des contraintes sur les paramètres de template, rendant le code auto-documenté et améliorant les messages d'erreur ;
- Coroutines : le mécanisme pour écrire du code asynchrone, des générateurs et des calculs paresseux sans bibliothèques tierces ;
- Modules : le remplacement du modèle obsolète des fichiers d'en-tête, accélération de la compilation et isolation du code ;
- Bibliothèque Ranges : composition d'algorithmes dans un style de programmation fonctionnelle, travail avec des séquences infinies ;
- Opérateur spaceship (<=>) : génération automatique des opérateurs de comparaison ;
- Extension de constexpr : exécution de calculs complexes à la compilation (y compris l'allocation dynamique de mémoire et les fonctions virtuelles) ;
- Nouveaux types et syntaxe : char8_t, initialiseurs dans for, designated initializers et autres détails simplifiant le travail quotidien.
Points forts du livre
La première chose qui frappe est la structure. Chaque chapitre est consacré à une fonctionnalité et est construit selon le principe « du simple au complexe ». Josuttis ne se contente pas d'énumérer la syntaxe, il explique la motivation : pourquoi cette fonctionnalité a été ajoutée, quels problèmes elle résout et quels pièges existent. La deuxième chose est l'orientation pratique. Le code des exemples peut être téléchargé depuis le GitHub de l'auteur, et il fonctionne réellement avec les compilateurs modernes (GCC, Clang, MSVC). La troisième est l'honnêteté. L'auteur parle ouvertement de l'immaturité de certaines fonctionnalités (par exemple, les modules ont encore une prise en charge limitée), ce qui évite les déceptions lors des tentatives de compilation.
Le chapitre sur les coroutines mérite une mention spéciale. C'est sans doute le sujet le plus complexe en C++20, et Josuttis le traite brillamment, en décomposant la structure interne du framework des coroutines (promise_type, awaitable, awaiter) à l'aide d'exemples simples.