Combien de fois avez-vous lu un commentaire sur le C++ comme celui-ci :
C++ est un langage difficile, même pour les développeurs C++ expérimentés. Même pour les algorithmes les plus simples, il faut expliquer de nombreuses subtilités du langage. Prenons un exemple Hello World :
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}Qu'est-ce que that #include command? Qu'est-ce que std::cout. Pourquoi le the ::? Qu'est-ce que est <<? Ohhh, c'est un opérateur surchargé ! C'est quoi un opérateur surchargé ? Donc, pour ints, il fait un décalage de bits, mais pour peu importe ce qu' std::cout est, il affiche des trucs sur la console. Ohhh, std::cout est un flux, et les flux ont leur << et >> opérateur surchargé.Voyons le même exemple en Python :
print("Hello World!")Peut-être que cette observation est vraie si l'on utilise directement les méthodes et utilitaires fournis par la norme. Mais ce n'est pas le cas dans les projets C++ du monde réel. En fait, de nombreux projets C++ contiennent du code comme celui-ci :
#include "utilities"
int main()
{
print("Hello World!");
}Le fait que nous ayons un mécanisme de bas niveau pour la sortie console via std::cout, avec toutes les possibilités qu'il offre, donne au langage une richesse que l'on ne trouve pas dans beaucoup d'autres langages. C'est à vous de tirer le meilleur parti de cette richesse pour produire du code facile à lire, à maintenir et efficace.
La même observation s'applique à tout code C++ jugé trop compliqué. En C++, nous avons tout ce qu'il faut pour simplifier son utilisation et fournir des bibliothèques qui masquent la complexité, rendant le langage plus facile à utiliser.
Prenons un autre exemple : ouvrir un fichier et lire tout son contenu. En C#, vous pouvez le faire comme ceci :
string text = System.IO.File.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
Mais y a-t-il quoi que ce soit qui nous empêche de faire la même chose en C++ ?
string text = FileHelper.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
Cependant, de nombreux développeurs pourraient demander : pourquoi ai-je besoin d'une autre bibliothèque pour faire facilement ce que je veux ? Pourquoi ne pas intégrer ces facilités dans la bibliothèque standard ?
Peut-être que la meilleure réponse est une autre question : pourquoi existe-t-il tant de bibliothèques pour chaque langage ? Tôt ou tard, nous devons utiliser des bibliothèques externes, même avec les langages les plus faciles. Et dans les projets du monde réel, même avec Python, on utilise souvent des bibliothèques internes — ainsi que de nombreuses bibliothèques externes, bien sûr.
N'oubliez pas qu'un langage de programmation est destiné à des ingénieurs qui possèdent les compétences de base requises pour utiliser les capacités qu'il offre. Dans n'importe quel domaine, le travail d'un ingénieur n'est-il pas d'analyser un problème, de s'adapter et de fournir une solution efficace ? Le C++ est peut-être bas niveau, mais il nous donne plus de possibilités, et sa richesse peut nous aider à résoudre les problèmes efficacement.
Personnellement, dans de nombreux projets C++ sur lesquels j'ai travaillé, nous avions une bibliothèque interne qui simplifiait les tâches récurrentes. Tout développeur confronté à un besoin récurrent pouvait proposer d'ajouter un utilitaire à la bibliothèque, et toute l'équipe bénéficiait de ces ajouts. Cette approche n'exige pas de gourous ou d'experts C++ dans l'équipe — c'est simplement du bon sens..
