IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Herb Sutter, président de l'ISO C++, quitte Microsoft après 22 années de collaboration et déclare que la prochaine version de C++ 26 est « la plus importante depuis C++11 »

Le , par Stéphane le calme

54PARTAGES

10  0 
Herb Sutter, l’un des leaders les plus influents de la communauté C++ et actuel président du comité ISO C++, quitte Microsoft après 22 années de collaboration. Au-delà de ce départ, Sutter a surpris la communauté en déclarant que C++ 26, la prochaine grande version du langage prévue pour 2026, serait la version « la plus impactante depuis C++11 ». Cette annonce a de quoi susciter l’enthousiasme et l’impatience, tant C++11 avait introduit des avancées majeures et modernisé le langage de manière significative.

Herb Sutter : une carrière dédiée à l’évolution de C++

Herb Sutter est un nom bien connu dans le monde du développement logiciel, en particulier pour sa contribution à l’évolution de C++. Ingénieur en chef chez Microsoft pendant plus de deux décennies, il a joué un rôle de premier plan dans la direction de l’implémentation et de la standardisation de C++ à l’échelle mondiale. Sutter a également influencé les grandes décisions techniques qui ont façonné C++ en tant que langage polyvalent, performant et moderne. Son influence a été déterminante dans les versions majeures, y compris C++11, C++14, C++17, C++20, et C++23.

Herb Sutter, président du comité C++ de l'ISO, a quitté Microsoft après 22 ans d'activité, pour devenir technical fellow chez Citadel Securities, où il travaillera sur la stratégie technique et la formation. Il continuera à présider le comité ISO et affirme que 2024 a été une « année charnière » pour le langage.

Sutter s'est exprimé lors de la conférence CppCon en septembre, où il a déclaré que « la norme C++ 26 ... est susceptible de changer la façon dont nous développons des logiciels » et qu'elle constitue le plus grand changement apporté au langage depuis C++ 11. La spécification de C++ 26 devrait être achevée à la mi-2026, comme son nom l'indique, bien que le déploiement des fonctionnalités mises en œuvre dans des compilateurs tels que Clang et GCC sera progressif ; certaines sont déjà présentes.

Sutter a identifié quatre caractéristiques clés de C++ 26 qui, selon lui, « semblent en bonne voie ». Il s'agit :
  • d'améliorations apportées à std:execution (une bibliothèque standard pour les opérations asynchrones) pour améliorer la concurrence et le parallélisme
  • d'améliorations de la sécurité des types et de la mémoire, dans le but d'atteindre la parité avec d'autres langages modernes et plus sûrs.
  • la réflexion et la génération de code, décrites par Sutter comme « faisant partie de notre changement radical vers la programmation à la compilation » et « sans doute [la] fonctionnalité la plus impactante jamais ajoutée ».
  • des contrats, qui spécifient les interfaces de manière à ce que leur conformité puisse être vérifiée, y compris les préconditions, les postconditions et les affirmations d'état valide.

La sécurité est un problème majeur dans la communauté C++, de nombreux experts en sécurité recommandant aux développeurs de passer à des langages tels que Rust afin d'éviter les bogues et les problèmes associés à des problèmes tels que l'utilisation hors limites de la mémoire et les comportements indéfinis. Lors de la conférence CppCon, Sutter a déclaré que la parité de sécurité ne signifiait pas la perfection, mais que les « cibles prioritaires » seraient abordées, notamment l'augmentation du nombre de bibliothèques sûres au sein de la norme, la suppression des comportements indéfinis liés à la sécurité, de nouvelles règles de sécurité statiques à la compilation et des contrôles de sécurité dynamiques.

Dans un billet de blog publié cette semaine, Sutter a déclaré que la version précédente, C++ 11, avait introduit le C++ moderne avec des fonctionnalités telles que l'auto, les lambdas et les pointeurs intelligents sûrs. C++ 26 se caractérisera par « la sécurité par défaut et une prise en charge de premier ordre des bibliothèques génératives à la compilation basées sur la réflexion ».


C++ 11 : une révolution qui a modernisé le langage

Avant d’anticiper les changements que pourrait apporter C++26, il est important de revenir sur l’impact de C++11. Sorti en 2011, C++11 est considéré comme une révolution dans le monde C++. Cette version a introduit des fonctionnalités telles que les expressions lambda, les pointeurs intelligents (smart pointers), la gestion de la concurrence (multithreading), les initialisations uniformes, ainsi que les "move semantics" (transfert de ressources). Ces évolutions ont permis de simplifier le code, d’améliorer les performances et de rendre C++ plus attractif pour une nouvelle génération de développeurs.

C++ 26 : une promesse d’impact équivalent à celui de C++11

Selon Sutter, C++ 26 pourrait représenter un tournant similaire, voire plus profond que celui apporté par C++11. Bien que les détails précis restent encore confidentiels, certaines orientations sont déjà connues. La prochaine version devrait se concentrer sur plusieurs axes :
  • Simplicité et expressivité : Face à la complexité croissante du langage, le comité de standardisation envisage de simplifier la syntaxe et les concepts, rendant le langage plus accessible aux développeurs novices tout en préservant sa puissance.
  • Performances optimisées : C++ a toujours été un langage apprécié pour son efficacité et sa capacité à produire du code performant. C++26 devrait poursuivre cette tradition en intégrant de nouvelles optimisations qui répondent aux besoins des applications modernes, notamment celles qui demandent une grande puissance de calcul.
  • Interopérabilité et portabilité : L’essor des systèmes embarqués et des plateformes hétérogènes a conduit à une demande accrue pour un langage facilement adaptable. La standardisation du langage avec des API plus portables et des extensions facilitant l'interopérabilité pourrait être l’un des objectifs majeurs de cette version.
  • Sécurité et gestion de la mémoire : La gestion de la mémoire et la sécurité des applications sont des préoccupations croissantes. C++26 pourrait introduire des fonctionnalités pour réduire les risques d’erreurs mémoire tout en assurant une meilleure sécurité des applications.


J'étais sincère lorsque j'ai dit, lors de ma présentation à la CppCon, que la prochaine décennie du C++ serait dominée par la réflexion et les améliorations de la sécurité, et que C++26 s'annonce comme la version la plus impactante depuis C++11, qui a ouvert une nouvelle ère pour le C++ ; c'est une période passionnante pour le C++ et j'ai l'intention de continuer à passer beaucoup de temps à contribuer à C++26 et au-delà.

Les réactions des développeurs

Sutter fait preuve d'un enthousiasme contagieux à l'égard du langage. « Il y a tellement de possibilités avec la réflexion/génération ! J'attends avec impatience la standardisation complète et l'implémentation du compilateur », a déclaré un développeur en commentant la conférence.

D'autres, en revanche, sont plus prudents et craignent que le langage ne devienne encore plus complexe : « Tout le langage est devenu si compliqué. Des efforts comme Cppfront aident, mais nous avons besoin d'un nouveau langage de programmation inspiré du C++ pour renaître de ses cendres », a déclaré un développeur, ajoutant : « et, non, ce n'est pas Rust”. Cppfront est un compilateur expérimental créé par Sutter pour tester de nouveaux concepts.

Il est toujours plus facile d'ajouter des fonctionnalités à un langage que de les supprimer, en raison de la nécessité d'assurer la compatibilité avec le code existant.
Sutter a travaillé sur Visual C++ chez Microsoft, un outil largement utilisé au sein de l'entreprise pour Windows et pour des applications clés telles qu'Office. Curieusement, compte tenu du rôle de Sutter au sein du comité ISO, Visual C++ a eu tendance à être lent dans la mise en œuvre de nouvelles fonctionnalités C++, par rapport à Clang et GCC.

Ces dernières années, des voix éminentes au sein de Microsoft ont plaidé en faveur du passage à Rust pour des raisons de sécurité et de fiabilité, notamment le directeur technique d'Azure, Mark Russinovich.

Le futur de C++ sans Sutter chez Microsoft

Si Sutter quitte Microsoft, il reste néanmoins impliqué dans la communauté C++. Il continuera à jouer son rôle de président du comité ISO C++ et à guider le développement du langage, même en dehors du cadre de l’entreprise. Son départ laisse toutefois un vide chez Microsoft, où il a contribué à positionner C++ comme un langage clé de l’écosystème de développement, notamment pour les applications nécessitant un haut niveau de performance.

La prochaine étape pour Sutter pourrait le voir se consacrer encore plus intensément à la standardisation et à la mise en place de directives pour l’évolution de C++. Il est également probable qu'il s’implique dans la formation et la documentation pour accompagner les développeurs vers une adoption rapide des nouvelles fonctionnalités de C++ 26.

Nouvelles fonctionnalités du C++11

Sources : vidéo dans le texte, Herb Sutter

Et vous ?

Quels changements ou améliorations espérez-vous voir dans C++ 26 ? Avez-vous des fonctionnalités spécifiques en tête qui pourraient améliorer votre expérience de développement ?

Pensez-vous que C++ reste pertinent face à d’autres langages plus récents comme Rust ou Go ? Dans quel type de projets préférez-vous utiliser C++ par rapport à ces langages ?

Le départ de Herb Sutter pourrait-il affecter la trajectoire de développement de C++ ? Croyez-vous qu’un changement dans la direction de Microsoft pourrait influencer les priorités du comité ISO C++ ?

En quoi la simplification de C++ pourrait-elle vous aider dans votre travail ? Est-ce que la complexité actuelle de C++ vous pose des défis spécifiques ?

Est-ce que vous considérez C++ comme le langage de choix pour les projets axés sur la performance ? Si oui, comment voyez-vous les nouvelles fonctionnalités de C++ 26 renforcer cette réputation ?

Quel est, selon vous, le plus grand défi auquel C++ doit faire face aujourd'hui ? S’agit-il de la complexité, de la sécurité mémoire, de la concurrence avec d’autres langages, ou d’autre chose ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de micka132
Expert confirmé https://www.developpez.com
Le 20/11/2024 à 10:29
L'Herb est sans doute plus verte ailleurs !
0  0 
Avatar de smarties
Expert confirmé https://www.developpez.com
Le 22/11/2024 à 12:17
Citation Envoyé par d_d_v Voir le message
N'importe quoi !
A part ça, je ne vois pas en quoi le c++ est complexe. Il n'y a que les débutants qui peuvent le trouver compliqué, ou au moins complexe. Mais c'est comme pour tous les langages: chaque fois, que je me remets à vouloir faire un petit script python, je trouve le langage compliqué, dès que je veut faire autre chose que du code basique, et le code devient vite illisible à cause du système d'indentation et du non-typage obligatoire.
La gestion des bibliothèques est archaïque comparé aux systèmes modernes (Go, Rust avec Cargo, Python avec pip/poetry/uv, Java avec Maven, Android, ...). Pas de gestionnaire, ni de doc centralisée non plus. Je galère à chaque fois que je dois compiler un projet récupéré pour rassembler les bibliothèques sur mon système.
Il y a très longtemps que je n'ai pas fait de C++ et je n'ai pas un bon souvenir de la partie pointeur.
Quand quelqu'un a utilisé des notions avancées du langages, ça devient difficile à lire quand on ne l'utilise pas tous les jours.
De ce que j'ai vu des sources C++, les développeurs commentent peu (mais je n'ai peut être pas eu de chance).
...
1  1 
Avatar de imperio
Membre chevronné https://www.developpez.com
Le 24/11/2024 à 12:44
Citation Envoyé par d_d_v Voir le message
N'importe quoi !
A part ça, je ne vois pas en quoi le c++ est complexe. Il n'y a que les débutants qui peuvent le trouver compliqué, ou au moins complexe. Mais c'est comme pour tous les langages: chaque fois, que je me remets à vouloir faire un petit script python, je trouve le langage compliqué, dès que je veut faire autre chose que du code basique, et le code devient vite illisible à cause du système d'indentation et du non-typage obligatoire.
Les templates c'est effectivement super intuitifs, et les erreurs du compilateur aident vraiment pour comprendre ce qu'on a mal fait.

Ou bien cas que j'aime beaucoup : c'est copy ou c'est move ?
0  0 
Avatar de d_d_v
Membre éprouvé https://www.developpez.com
Le 20/11/2024 à 9:53
Citation Envoyé par Zeeraptor Voir le message
***Il pourraient commencer par adopter le formatage par indentation et virer les points virgules
N'importe quoi !
A part ça, je ne vois pas en quoi le c++ est complexe. Il n'y a que les débutants qui peuvent le trouver compliqué, ou au moins complexe. Mais c'est comme pour tous les langages: chaque fois, que je me remets à vouloir faire un petit script python, je trouve le langage compliqué, dès que je veut faire autre chose que du code basique, et le code devient vite illisible à cause du système d'indentation et du non-typage obligatoire.
3  4 
Avatar de d_d_v
Membre éprouvé https://www.developpez.com
Le 26/11/2024 à 15:13
Citation Envoyé par imperio Voir le message
Les templates c'est effectivement super intuitifs, et les erreurs du compilateur aident vraiment pour comprendre ce qu'on a mal fait.

Ou bien cas que j'aime beaucoup : c'est copy ou c'est move ?
T'es au courant qu'on n'est pas obligé d'utiliser 100% des fonctionnalités d'un langage ?
En général, les projets contiennent un peu de template, voire pas du tout, et une fois que la partie template est faite, plus personne n'y touche (ou le moins possible).
On voit que t'y connais rien.
La plupart des développeurs c++ que j'ai croisés détestent les templates, donc en général on évite.
Tu aurais pu me sortir la fonctionnalité move, la syntaxe de parallélisation des fonctions STL, les exceptions, es expressions lambdas, mais non, tu me sors un truc que tout le monde déteste et évite.
0  1 
Avatar de d_d_v
Membre éprouvé https://www.developpez.com
Le 26/11/2024 à 15:23
Citation Envoyé par smarties Voir le message
La gestion des bibliothèques est archaïque comparé aux systèmes modernes (Go, Rust avec Cargo, Python avec pip/poetry/uv, Java avec Maven, Android, ...). Pas de gestionnaire, ni de doc centralisée non plus. Je galère à chaque fois que je dois compiler un projet récupéré pour rassembler les bibliothèques sur mon système.
Ouais, mais ça, c'est pas la partie langage, mais la partie de compilation/linkage.

Citation Envoyé par smarties Voir le message
Il y a très longtemps que je n'ai pas fait de C++ et je n'ai pas un bon souvenir de la partie pointeur.
Donc, c'est bien ce que je pensais, vous êtes des débutants, évitez de parler d'un langage que vous ne maitrisez pas. Les pointeurs, c'est la base. Et d'ailleurs, quand on maîtrise, on alloue rarement via des new, on utilise des containers STL et/ou des pointeurs intelligents.

Citation Envoyé par smarties Voir le message
Quand quelqu'un a utilisé des notions avancées du langages, ça devient difficile à lire quand on ne l'utilise pas tous les jours.
Bravo, quelle découverte :! C'est pareil quand je me remet à vouloir faire des scripts python: difficile à relire et à écrire quand on ne l'utilise pas tous les jours.
Et c'est pareil pour n'importe quel autre langage, ou bien un domaine spécifique. Par exemple, ça fait un bout de temps que je n'ai pas fait d'UI en Qt, j'ai réessayé récemment, j'ai eu du mal.
0  1 
Avatar de Zeeraptor
Membre régulier https://www.developpez.com
Le 15/11/2024 à 3:43
***Il pourraient commencer par adopter le formatage par indentation et virer les points virgules
1  10