Depuis maintenant plusieurs années, le langage C++ a été en constante évolution afin de répondre aux multiples besoins des utilisateurs et pour leur faciliter la vie. Même si ce langage est vieux, il n’a pas pour autant arrêté d’être mis à jour et avec chaque nouvelle version, des fonctionnalités se sont introduites et avec elles plusieurs opportunités d’amélioration afin de créer des projets toujours plus ambitieux et professionnels. Aujourd’hui dans mon dernier article Syslog nous allons nous attaquer à certaines des dernières fonctionnalités introduites dans les versions les plus récentes de ce puissant langage. Cet article parlera des différentes améliorations qu’a vu ce langage au cours de ces dernières versions.
Le template argument deduction pour les classes avec C++17
La mise-à-jour de ce langage en 2017 a grandement facilité la vie des développeurs en améliorant la visibilité du code à l’aide de plusieurs petits changements tels que la nouvelle syntaxe des namespaces imbriqués, les expressions Fold et même en supprimant la fonctionnalité désuète qu’était les trigraphs. Toutefois, un des changements qui piqué la curiosité de plusieurs est l’ajout de déduction de type dans les template de classes. Les templates de fonctions étaient avant utilisés pour créer des fonctions génériques sans avoir à spécifier les types des arguments lors de l’appel de la fonction. En d’autres termes, les développeurs étaient limités sur la réutilisation de code pour les classes, mais pas pour les fonctions. Par exemple, si un développeur souhaitait créer une fonction pour trier un tableau et le réutiliser ailleurs, il avait la possibilité de créer une fonction qui permettait le tri d’un tableau de différents types, mais il n’avait pas la possibilité de créer un « template » générique pour une classe et ainsi sauver du temps. Avec l’arrivée de C++17, il est maintenant possible de créer des templates de classes génériques fonctionnant avec n’importe quel type de données. Ce changement signifie que le code peut maintenant être plus facilement réutilisé et donc il a fait gagner énormément de temps aux utilisateurs depuis son arrivé. Depuis, les templates de classes sont devenue encore plus utilisé et ont facilité la création de bibliothèques pour ce langage.
Les modules de C++20
En 2020, la version C++20 a fait son apparition, et avec elle de gros changements ont eu lieu. Premièrement, les différents développeurs utilisant ce langage ont fait la rencontre des modules. Les modules sont introduits comme une nouvelle manière modulaire d’organiser leur code. Ces derniers permettent aux développeurs de réduire le temps de compilation et ainsi avoir un projet plus rapide et puissant. Les modules sont des fichiers de code source, ils compiler une seule fois et sont ensuite entreposés dans des fichiers binaires, réduisant drastiquement le temps de compilation du code en plus d’être une manière sécuritaire d’appeler certains fichiers dans le code. Bien évidemment, en plus de sauver du temps au développeurs, cette alternative au « include » évite plusieurs erreurs communes que les développeurs ont pu faire face lors de la gestion de dépendances. Cette approche favorisant une meilleure encapsulation et facilitant la réutilisation du code a su plaire et grandement aider les développeur C++.
Conclusion
En conclusion, les différentes versions de C++ ont su au fil du temps améliorer et ajouter de nouvelles fonctionnalités à ce fabuleux et puissant langage. Que ce soit par les différents changement de syntaxe, de simplification de code ou plus précisement le template argument deduction et les modules, ces changements ont su plaire aux développeurs et continuer de faire accroitre ce langage. En vous remerciant de m’avoir suivi dans la découverte du C++ à travers mes différents articles et en vous souhaitant une bonne fin de session avant les stages, je vous invite à vous aussi vous lancer dans le C++ et commencer à faire des petits projets pour apprendre ce langage qui sera sans doute d’utilité dans votre carrière.
Références
Microsoft, Vue d'ensemble des modules dans C++,
https://learn.microsoft.com/fr-ca/cpp/cpp/modules-cpp?view=msvc-170
geeksforgeeks, Modules in C++20,
CONAN, C++ Modules: The Packaging Story,
https://blog.conan.io/2023/10/17/modules-the-packaging-story.html
geeksforgeeks, Features of C++ 17,
https://www.geeksforgeeks.org/features-of-c17-with-examples/
Codingame, 7 Features of C++17 that will simplify your code,
cppreference.com, Template argument deduction,
https://en.cppreference.com/w/cpp/language/template_argument_deduction
cppreference.com, Class template argument deduction (CTAD),
https://en.cppreference.com/w/cpp/language/class_template_argument_deduction
Commentaires3
Question sur les trigraphs
Bonjour,
Dans ton article, tu mentionnes que les développeurs du langage C++ ont supprimer la fonctionalité trigraphs. Je me demandais qu'est-ce qu'étaient les trigraphs et pourquoi ceux-ci étaient-ils rendus désuets.
Merci.
Aussi, bonne fin de session à toi aussi et bonne continuité dans tes projets futurs!
Merci pour ton commentaire
Les trigraphs étaient une suite de 3 caractères représentant un seul caractère. Ils étaient utilisés pour représenter des caractères ASCII que C++ ne pouvait pas comprendre, et donc la raison pour la quelle ils ont été supprimés est car avec l'arrivé de C++17, les compileurs C++ pouvaient désormais lire les caractères spéciaux. Voici un lien vers un site qui te permettra de savoir comment ils fonctionnaient.
Il est toujours intéressant…
Il est toujours intéressant de voir les nouveautés des langages de programmation et il est passionnant de voir comment ce vieu langage continue à s'améliorer et se moderniser.
Je vais peut-être vérifier les modules dans mon temps libre. Ils semblent intéressant.