8 points par xguru 2022-09-27 | 6 commentaires | Partager sur WhatsApp
  • L’équipe Chrome de Google énumère une quarantaine de problèmes rencontrés lors de l’adoption de C++20 et récapitule les solutions
  • Une nouvelle norme C++ sort tous les 3 ans, et dans Chrome, la première application n’arrive qu’environ 3 ans après la sortie
  • C++20 comporte de nombreux changements
    • abandons de support, réordonnancement des opérateurs de comparaison, modification des règles d’agrégation...
  • Problèmes
    • Le guide de style de Google est basé sur C++17
    • Le support de C++20 dans Clang est incomplet et nécessite un nouveau libc++
    • Les binaires Windows grossissent
    • std::iterator n’est plus pris en charge (depuis C++17)
    • De nouveaux mots-clés comme concept et requires ont été ajoutés, ce qui crée des conflits s’ils sont utilisés comme noms de variables
    • Et bien d’autres

6 commentaires

 
galadbran 2022-09-27

Hein… un langage comme le C++ ne devrait pas générer autant de breaking changes, non… ? Ou c’est juste mon idée préconçue…

 
qwery 2022-09-28

C’est bien pour ça que le C++ est un langage bizarre... Le langage continue d’évoluer, avec l’ajout de modules, de coroutines et de tout un tas d’autres choses, en essayant de tout faire lui-même. Et quand une fonctionnalité sort, les compilateurs ne l’ajoutent que 4 ou 5 ans plus tard. Il y a des différences entre les compilateurs quant à ce qu’ils peuvent faire, et la syntaxe varie légèrement de l’un à l’autre. À chaque montée de version, plein de petites choses qu’on utilisait très bien finissent par disparaître. La STL grossit, et avec les nouvelles versions ça ne tourne même plus sur les ordinateurs de l’ancienne génération... Si vous devez choisir, je vous dirais plutôt d’utiliser Go ou Python.

 
heal9179 2022-09-28

Les éléments pour lesquels la rétrocompatibilité n’a pas été préservée lors de la montée de version
correspondent, dans la plupart des cas, à des améliorations de comportements non définis ou de fonctionnalités défectueuses.
Des fonctionnalités comme les modules, les concepts ou les coroutines montrent aussi que le langage continue d’évoluer, comme dans d’autres langages.
Le cas des modules en particulier répond d’ailleurs à une demande ancienne.

 
functor 2022-09-29

Je ne sais pas vraiment si l’abandon de la prise en charge de std::iterator entre dans le cas que vous avez mentionné, à savoir « améliorer des fonctionnalités au comportement indéfini ou présentant des défauts ».

 
heal9179 2022-09-28

Cependant, voici globalement les points sur lesquels C++ est en retard par rapport aux autres langages.

  1. Le gestionnaire de paquets
  2. La fragmentation des compilateurs
  3. La complexité du processus de compilation (nécessité d’apprendre en plus Make et CMake)
  4. Le manque d’intérêt de la communauté

Parmi ces points, je pense que le manque d’intérêt de la communauté entraîne une très grande pénurie d’articles de qualité, et que le faible nombre d’utilisateurs empêche la résolution des trois autres problèmes.

 
deokim 2022-09-28
  • rust