Ok, je suis coupable d'avoir un raccourci dans mes propos, qui ne reflètent pas ce que je voulais dire : en parlant du C++11, je pensais a "C++ moderne". Et comme "moderne" est un terme vague, il faut que je precise.
Les nouvelles normes introduisent des concepts (nouveaux ou provenants d'autres langages), pour répondre à des problematiques specifiques. Beaucoup n'étudient pas (correctement) ces nouveaux concepts et continue de concevoir leur code comme il y a 20 ans. Comme si les besoins et moyens de la qualité logicielle n'avait pas évolués. Et c'est la qu'il y a de la résistance au changement.
Bien sur, cela n'inclut pas ceux qui ont appris et compris ces concepts et ont choisi, pour X raisons, de ne pas utiliser tel ou tel concept. (Mais quand on fait cela, il faut savoir se remettre en question, parce qu'on risque de le faire pour de mauvaises raisons).
Un exemple concret est que j'entends parfois des gens dire "je n'utilise pas les pointeurs intelligents, parce que j'utilise un compilateur qui ne les supportent pas". Ce qui est une erreur : un vieux compilateur ne supportera par les pointeurs intelligents de "std::". Mais cela ne veut pas dire que le concept n'est pas utilisable (boost, Qt, POCO, etc. Ou sa propre implementation).
Un autre exemple classique est la fameux argument "je n'utilise pas la STL a cause des performances", mais sans avoir fait de benchmarks pour vérifier les performances de la STL ou de son implémentation, et de l'avoir fait sur des codes simplistes non représentatifs.
Pour une partie de tes remarques, cf au dessus.
Par contre, le "TOUS les compilateurs" me semble étrange. Qui supporte "TOUS" les compilateurs ? Dans tous les projets sur lequel j'ai bossé, on avait une liste de compilateurs que l'on supportait, avec une version minimale. Tout simplement pour une raison pratique : on ne peut pas faire tourner le code et les tests sur tous les compilateurs, toutes les versions, tous les environnements.
Par contre, si tu parles de supporter une liste de compilateurs contenant des compilateurs ne supportant pas les dernières normes (ou les supportant depuis trop peu de temps pour etre sur de la qualité de leur implémentation), ok, cela est une raison d'implémenter ces fonctionnalités soi même. (Mais dans ce cas, je préfère utiliser les options de compilation pour utiliser l'implémentation standard par défaut et utiliser l'implémentation personnelle quand nécessaire uniquement).
Bref, quand je parlais de résistance au changement, je ne pensais pas à l'utilisation d'une implémentation particulière, mais à l'utilisation des nouveaux concepts.
Partager