À faciliter l'interopérabilité entre composants. De ce point de vue là, les primitives de base ont tout intérêt à être standardisées. Il n'y a qu'à voir les soucis causés par les vieilles bibliothèques n'utilisant pas std::string, ou encore maintenant le bazar sans nom autour des chaines Unicode, chaque framework débarquant avec le sien. Cela alourdit inutilement les applications avec du "boilerplate code" (des idées pour la traduction?)
À ne pas avoir à redémarrer de zéro en débarquant dans un nouveau projet. Si tous les projets C++ de la planète utilisent la même bibliothèque réseau, sérialisation, accès à la BDD, GUI, l'on est plus rapidement opérationnel.
Enfin, c'est aussi un moyen de guider les développeurs vers certains paradigmes. La bibliothèque standard, de ce côté là, a montré une approche très fonctionnelle qui a eu une influence énorme sur la manière d'approcher le langage.
Mais peut-être qu'une différence fondamentale du C++ avec les monstres Java, C# et Python est que l'on a de nombreuses implémentations, et une décision par comité. Cela veut dire une longue recherche de consensus, pour au final un résultat souvent à minima (par exemple, std::thread n'a ni les verrous partagés, ni les thread groups...).
Le résultat? La communauté se prend par la main. Boost propose de nombreuses bibliothèques, certaines très matures, d'autres plus expérimentales. À un problème, de nombreux développeurs vont apporter des solutions, parfois très différentes (comparez Boost Asio et SDL_net, QT et WxWidgets...), et les meilleures survivre. Peut-on espérer la totalité des Intel Threading Blocks dans la bibliothèque standard? Ou une API d'accès aux bases de données suffisamment puissante et suffisamment générique?
Standardisons donc le bas niveau, et les problèmes pour lesquels il n'existe vraiment qu'une seule solution. Pour le reste, pas touche!
# À quoi sert la standardisation?
Posté par small_duck (site web personnel) . En réponse au journal Le futur du langage ISO C++ : les nouvelles librairies PCL. Évalué à 6.
Mais peut-être qu'une différence fondamentale du C++ avec les monstres Java, C# et Python est que l'on a de nombreuses implémentations, et une décision par comité. Cela veut dire une longue recherche de consensus, pour au final un résultat souvent à minima (par exemple, std::thread n'a ni les verrous partagés, ni les thread groups...).
Le résultat? La communauté se prend par la main. Boost propose de nombreuses bibliothèques, certaines très matures, d'autres plus expérimentales. À un problème, de nombreux développeurs vont apporter des solutions, parfois très différentes (comparez Boost Asio et SDL_net, QT et WxWidgets...), et les meilleures survivre. Peut-on espérer la totalité des Intel Threading Blocks dans la bibliothèque standard? Ou une API d'accès aux bases de données suffisamment puissante et suffisamment générique?
Standardisons donc le bas niveau, et les problèmes pour lesquels il n'existe vraiment qu'une seule solution. Pour le reste, pas touche!