Les évolutions récentes du C++ : vers un langage plus moderne et performant
Programmation 2024 : bilan des améliorations de performance en C++
Le langage C++ reste à ce jour l’un des outils de développement informatique les plus populaires. Adaptée à de nombreux contextes techniques dès l’origine, la programmation en C++ a considérablement évolué au fil des 45 dernières années par l'ajout régulier de nouvelles fonctionnalités. C++ s’est bonifié et il est aujourd’hui en pleine forme. Ses dernières versions en font un langage toujours plus compétitif. Cet article vous propose un point de situation sur les évolutions récentes du C++, un langage moderne et performant à travers le temps.
Les origines du C++ moderne
Le C++ a été imaginé en 1979 par Bjarne Stroustrup, étudiant d’origine danoise à Cambridge. C’est aux États-Unis, précisément dans les laboratoires Bell que la première version du langage est publiée, en 1983. Le C++ s’inspire du C, inventé dix ans plus tôt au même endroit, en lui ajoutant des fonctionnalités orientées vers la programmation-objet. Le scientifique crée ainsi le concept de « moyen niveau » qui reste un grand attrait de la programmation en C++ : concilier la puissance et la lisibilité des langages évolués tout en autorisant un accès rapide aux ressources matérielles.
Le langage C++ : éviter les rapprochements rapides
Selon l’index TIOBE, le langage C++ se trouve parmi les plus utilisés au monde, aux côtés de C et C#. Mais bien que les 3 langages partagent en partie leur nom, ils sont très différents. Le vénérable C reste un langage procédural, sans aptitude pour la programmation-objet. Il dispose d’un jeu d’instructions limité, concentré sur les échanges de bas niveau. Il permet l’écriture d’applications embarquées ou même de systèmes d’exploitation complets. Le jeune C# est un produit Microsoft, intégré à la plateforme .NET depuis 2002. C’est un langage-objet, riche de multiples fonctionnalités empruntées à Java. Bénéficiant d’un environnement confortable, son apprentissage est rapide, mais ses performances le cantonnent aux applications web et mobiles.
Les évolutions du C++ : performances et modernité au fil des versions
C++ 11
La première version standardisée ISO arrive en 1998 avec assez peu de nouveautés. Ce n’est qu’en août 2011 que de nouvelles fonctionnalités C++ significatives apparaissent :
- lessmart pointers pour une gestion automatique de la mémoire, prévenant ainsi des problèmes d’allocations manuelles,
- les mécanismes de thread safety pour faciliter la programmation parallèle en évitant les accès concurrents,
- le range-based for loops avec unesyntaxe simplifiée et plus lisible pour itérer sur des collections,
- Les expressions lambda pour un code plus concis sur les fonctions anonymes,
- Les move semantics pour une gestion optimisée des ressources, réduisant les duplications inutiles et améliorant la performance globale.
C++ 14
Sortie en 2014, C++14 est une évolution mineure du langage, apportant des améliorations principalement destinées à optimiser et simplifier C++11. Parmi les rares nouveautés, on note les variable templates, permettant de définir des variables génériques pour augmenter la réutilisabilité du code. Quelques améliorations de performance sont introduites, rendant le langage plus efficace.
C++ 17
En décembre 2017, C++17 amène plusieurs améliorations majeures au langage afin de renforcer sa compétitivité :
- les structured bindings qui décomposent des objets et des tuples pour clarifier le code,
- l’instruction If constexpr pour optimiser la compilation modulaire des programmes,
- les parallel algorithms qui introduisent les algorithmes parallèles pour une utilisation plus performante des ressources multicœurs,
- les expressions de repli apportant une syntaxe compacte des suites conditionnelles complexes,
- les littéraux hexadécimaux à virgule flottante pour une meilleure précision des calculs numériques,
- le support d’UTF-8 afin de faciliter la gestion des chaînes de caractères multilingues,
- les variables en ligne qui autorisent des déclarations plus claires.
C++ 20
La comparaison C++17 et C++20 laisse apparaître plusieurs améliorations :
- les concepts pour la vérification des types de variables à la compilation,
- les coroutines qui simplifient la programmation asynchrone,
- les modules qui compactent le code et accélèrent les traitements.
Les capacités de la commande constexprsont étendues pour évaluer plus de fonctions et apporter plus de flexibilité au processus de compilation. Des attributs comme [[no_unique_address]], [[likely]] et [[unlikely]] sont introduits pour optimiser l'allocation de mémoire en priorisant les chemins d'exécution les plus fréquents.
Focus sur la version 23 : les toutes dernières évolutions du C++
En cours d’adoption par les développeurs, C++ 23 comporte un lot d’avancées majeures :
- les paramètres d’objets explicites pour une meilleure lisibilité du code,
- les fonctions if consteval et if not consteval pour introduire les évaluations conditionnelles lors des compilations,
- des opérateurs d’indice multidimensionnel pour gérer intuitivement les structures de données complexes,
- les attributs sur les expressions Lambda qui spécifient de nouvelles contraintes,
- des types à virgule flottante étendue pour plus de précision dans les calculs numériques,
- les modules et en-têtes qui améliorent la modularité et la gestion des erreurs,
- des modifications de la bibliothèque standard orientées vers l’écoconception..
C’est parce qu’il a su évoluer avec son temps que C++ reste un langage moderne et performant. Ses richesses fonctionnelles, accumulées au fil des versions, demandent une formation solide et un investissement certain. Des efforts rentables, car le C++ est bien loin de céder son titre de champion de puissance et de polyvalence : le cru 2026 est déjà en préparation. L’histoire du C++ n’est pas prête de se terminer.