a- Ensuite, il faut savoir qu'un certain nombre de personnes sont également revenues du C++. Non pas parce que le C++ est un mauvais langage, au contraire, mais parce que la complexité induite sur des grands projets devenait telle qu'elles préféraient gérer de façon théorique la relation objet entre les différentes instances de ce qu'elles déclaraient en C. Et cette approche est beaucoup plus fréquente qu'on le croit. Par exemple, ce célèbre
troll débat concernant l'usage éventuel du C++ au sein du noyau Linux. Linus a vertement rembarré le primo-postant (qui l'avait bien cherché) avec sa verve habituelle. Pas besoin d'être aussi extrémiste, bien sûr, mais exclure l'examen du C est généralement révélateur d'une méconnaissance du sujet.
b- La chose qui m'ennuie fondamentalement avec les approches type
Think in C++ qui sont largement reprises par les gens qui ont choisi de s'adonner à 100 % au C++ est qu'elle implique souvent d'étudier ses composants de façon totalement théorique en faisant une abstraction totale des coûts qu'ils impliquent.
L'exemple le plus criant à mon goût est celui qui recommande de ne jamais utiliser les tableaux « [ ] » trop « à la C », mais de toujours recourir à
std::vector<> à la place. Moi, ça me fait bondir. Ça peut avoir de l'intérêt si on espère que cette classe va gérer intelligemment un tas pour faire ses allocations, mais on ne peut pas comparer un tableau, qui est simplement une manière élégante de déclarer plusieurs instances d'un même type de façon consécutive pour pouvoir les indexer, à une classe comme
std::vector qui est un objet managé, qui s'appuie sur beaucoup de code sous-jacent, entièrement
stateful, dépendant du contexte à l'exécution et qui consomme des ressources.
Partager