« Je me demandais ce dont j’allais parler durant cette conférence en tant qu’orateur. Puis j’ai regardé le programme et j’ai réalisé qu’il y avait une grosse liste de choses bien détaillées, que ce soit sur le langage, les bibliothèques, etc. Aussi, je me suis dit que je n’allais pas me lancer dans cette voie. J’essaie au contraire de parler de quelque chose de plus général. J’essaie de parler d’évolution. J’essaie de retourner en arrière pour comprendre la raison pour laquelle C++ a connu du succès », a-t-il déclaré en guise d’introduction devant l’auditoire.
Les points sur lesquels Bjarne Stroustrup s'est appesanti sont notamment :
- le passé : pourquoi est-ce que C++ a connu le succès ?
- en répondant aux questions avant que les gens ne les posent,
- en ne suivant pas la masse ;
- le présent : comment la standardisation façonne-t-elle le C++ ?
Elle aspire à la stabilité via la compatibilité ; - le futur : que devons-nous faire ?
- concentrer nos efforts à servir la communauté C++ actuelle et à venir,
- ne pas se dissiper en essayant de plaire à tous ;
- le futur proche : comment s'y préparer ?
- trouver des moyens pour utiliser des fonctionnalités des spécifications techniques ISO,
- développer des lignes directrices.
Durant son intervention, il a donné son avis, par exemple, sur les fonctionnalités d’un bon langage de programmation. Selon lui, bien que tout langage ait besoin de bonnes fonctionnalités fondamentales (par exemple, des mécanismes pour aider à concevoir son code, mais également une bibliothèque standard), un (bon) langage ne saurait se limiter à être un ensemble de bonnes fonctionnalités.
Il s’est également attardé sur les décisions majeures qui ont été prises dans la conception du langage et a indiqué sur une ligne du temps leur impact sur la façon de programmer des développeurs.
Il a expliqué que, pour sa part, les fonctionnalités majeures sont celles qui changent la façon dont les gens pensent le code, tout comme les concepts, qui devraient arriver dans la prochaine version de C++. Il a néanmoins indiqué qu’une combinaison de fonctionnalités mineures peut avoir un impact majeur.
À la question de savoir ce qui fait une bonne extension, il explique que les réponses sont très variées. Du point de vue des développeurs, une bonne extension « aide les gens comme moi et mon projet » :
- elle résout des problèmes spécifiques ;
- elle ne nécessite pas de lecture fastidieuses de mode d’emploi ;
- elle isole le changement ;
- elle n’entraîne pas de plantage.
Les difficultés rencontrés par les développeurs lors de la conception d’une extension sont :
- un manque d’expérience dans la planification à long terme ;
- des objectifs très souvent définis par d’autres personnes ;
- une évaluation des conséquences sur le court terme.
Du point de vue des concepteurs, une bonne extension « va aider de façon significative la communauté des utilisateurs pendant la prochaine décennie » :
- elle répond à un problème général / fondamental ;
- elle fait que le langage est utilisé de façon plus régulière et facilement ;
- elle améliore la réputation de C++.
Malgré tout, il a reconnu que toutes les extensions font plus ou moins de mal :
- elles rendent obsolètes certains supports d’apprentissages ;
- elles peuvent avoir un faible ratio bénéfice / coût ;
- elles pourraient ne venir en aide qu’à une portion de la communauté ;
- elles pourraient induire des coûts à des personnes qui ne les utilisent pas ;
- elles pourraient être une entrave pour les efforts de pratique de programmation.
Tous ces critères ont aidé à façonner C++17. Ainsi, des modifications dont les effets sont relativement isolés ont été acceptées sans problème, comme de simples variables globales, c'est-à-dire la syntaxe inline int x = f();. Au contraire, la convention d'appel unifiée a été rejetée : elle proposait que l'écriture f(x) soit équivalente à x.f() dans tous les cas.
Dans son intervention, il évoque de nombreux points intéressants relatifs à l'évolution de C++.
Source : YouTube
Voir aussi :
CppCon : Bjarne Stroustrup annonce le projet C++ Core Guidelines, pour aider les développeurs à utiliser le C++ moderne de façon plus efficace