Récemment, une vague de critiques a visé le C++, certaines entreprises, organisations et sites web le qualifiant de « langage du mal », responsable d’une part significative des vulnérabilités et des dommages logiciels. Ces critiques découlent cependant d’une incompréhension fondamentale de la nature des langages de programmation et du développement logiciel. Il est essentiel d’approfondir la question pour clarifier que les problèmes attribués au C++ ne sont pas inhérents au langage lui-même, mais plutôt la conséquence de la façon dont il est utilisé.
Aujourd’hui, banques, aéroports, chaînes de télévision, organismes de santé, hôtels et de nombreuses autres entreprises subissent des pannes informatiques massives, avec des vols cloués au sol et d’importantes perturbations, des machines Windows rencontrant des erreurs à l’échelle mondiale.
Ces pannes Windows généralisées ont été liées à une mise à jour logicielle du géant de la cybersécurité CrowdStrike. Et, bien sûr, parce que le C++ est si puissant, des applications comme CrowdStrike sont souvent développées en C++. Dans quelques jours, quelqu’un écrira peut-être un billet expliquant que c’est la faute du C++ :)
Les causes profondes des bugs logiciels
Les causes profondes des bugs logiciels sont souvent liées à des facteurs humains plutôt qu’aux langages eux-mêmes :
- Le manque d’expérience: Les développeurs inexpérimentés peuvent ne pas comprendre pleinement les subtilités d’un langage, ce qui conduit à un usage inapproprié et à des bugs. Cela vaut pour tout langage de programmation.
- La complexité des projets: Les projets vastes et complexes sont plus sujets aux bugs en raison du volume même du code et des interactions entre les différents composants. Cette complexité peut introduire des problèmes imprévus, quel que soit le langage utilisé.
- Des tests insuffisants: Des tests insuffisants contribuent largement aux bugs logiciels. Des tests complets — tests unitaires, tests d’intégration et tests système — sont cruciaux pour identifier et corriger les problèmes avant le déploiement.
- Une conception et une architecture médiocres: Les défauts de conception et d’architecture d’un logiciel peuvent engendrer vulnérabilités et bugs. De bons principes et pratiques de conception sont essentiels pour créer des logiciels robustes et maintenables.
Conclusion
Accuser le C++ de la prévalence des bugs logiciels est une vision simpliste qui ignore le contexte plus large du développement logiciel. Si le C++ offre un haut degré de contrôle et de performance, il exige un usage soigneux et compétent pour éviter les pièges. On peut en dire autant de tout langage de programmation, chacun ayant ses propres défis et problèmes potentiels.
En fin de compte, la responsabilité de la qualité logicielle incombe aux développeurs, aux testeurs et au processus de développement lui-même. Mettre l’accent sur une formation adéquate, des tests rigoureux et le respect des bonnes pratiques permet d’atténuer la plupart des risques associés à tout langage de programmation, y compris le C++. Plutôt que de diaboliser un outil, concentrons-nous sur l’amélioration de la façon dont nous l’utilisons pour créer des logiciels fiables, sûrs et efficaces.
