Le C++ serait-il vraiment victime de son passé ?
Le C++ serait-il vraiment victime de son passé ?
Pour l’équipe CoderGears « le plus grand problème du C++ c’est son passé »
CoderGears Team revient avec une nouvelle analyse concernant le langage de programmation C++. Après avoir affirmé que C++ devra d’abord revoir son mécanisme d’inclusion pour devenir « vraiment un langage moderne », CoderGears Team estime aujourd’hui que « le plus grand problème du C++ c’est son passé »
Rappelons d’abord que la nouvelle norme du langage, sortie en 2011, avait reçu un accueil chaleureux de la part de la communauté C++. « Cependant, à cette année, ce langage avait un passé de plus de 30 ans. Et ce n’est pas facile de convaincre les développeurs que le nouveau C ++ simplifiera les nombreuses facettes frustrantes du langage », proclame l’équipe de CoderGears.
L’exemple donné est la gestion de la mémoire. Pendant de nombreuses années, on utilisait les deux mots clés: "new" pour allouer de l’espace mémoire et "delete" pour libérer l’espace alloué. Ce qui était contraignant surtout c’était qu’il ne fallait pas oublier de libérer la mémoire allouée manuellement. Chose dont les développeurs n’ont plus besoin d’y penser maintenant, puisque le Modern C++ encourage l’utilisation des pointeurs intelligents. Ce serait donc une bonne nouvelle, mais quel est le problème ? Selon CoderGears, le gêne est que « nous avons encore la possibilité d'utiliser new et delete, et bien sûr nous ne pouvons pas éliminer cette possibilité pour de nombreuses raisons » et ils expliquent que tous les efforts de la communauté C++ et les experts du domaine n’étaient pas suffisants pour changer les anciennes habitudes et que « si vous donnez à quelqu'un la possibilité de faire quelque chose avec un langage ou un outil, ne soyez pas surpris s'il le fait ».
Ils donnent aussi quelques exemples pour appuyer leur argument : « il suffit de chercher sur le Web "C++ object allocation" et regardez si le premier lien parle de pointeurs intelligents ». Sinon, « allez dans n'importe quelle bibliothèque universitaire, et demandez un livre C++, et vous trouverez que le chapitre sur l'allocation mémoire et la création des objets parle surtout des mots clés new et delete ».
En résumé : si un nouveau développeur veut apprendre le C++, il va trouver plus de ressources sur le "C avec des classes" que le "C ++ moderne".
Quant aux solutions, l'équipe de CoderGears est d'accord sur le fait qu'il n'y a pas de solution magique. Selon eux, nous pourrons faire en sorte que les compilateurs affichent des avertissements lors de l'utilisation de mots clés et fonctions obsolètes, « mais cette solution n'aura pas un grand impact », et elle conseille aux nouveaux développeurs qui veulent apprendre le C++ de considérer que le langage a changé son nom et s'appelle maintenant "Modern C++". En effet, cela donne un résultat nettement différent dans les recherches sur le web.
Source : CoderGears Blog
Et vous ?
:fleche: Êtes-vous d’accord avec CoderGears ? Pourquoi ?
Non, l'avantage du C++ c'est son passé, son optimisation
Pour le moi le new/delete n'est pas l'inconvénient du C++ mais l'avantage. Les smart pointer, c'est très bien mais pas optimal, or l'intérêt du C++ c'est la rapidité et l'efficacité du code produit. Certains d'ailleurs refusent d'utiliser le C++ et préfèrent le C pour le fait que le C interdit d'utiliser les facilités. C'est la seul raison pour laquelle le C/C++ n'est pas mort.
Si vous n'utilisez que des smart pointer et des options très avancé, c'est que vous n'avez rien a faire en C++, utilisez plutôt du Java, vous risquerez moins de faire planter la machine. Tout l'intérêt du C++11 c'est de permettre l'utilisation de fonctions haut niveau pour les parties les moins critique et de garder l'utilisation de fonction très efficace (ancienne) et précise pour les parties critique.
Vous avez le même principe dans tous langages. Quand vous développez les couches haute de l'application ou une version de démonstration, alors vous cherchez la productivité. Mais pour les parties critique, vous devrez optimiser votre code. C'est vrai que vous soyez en C/C++ ou en Java, PHP, Python et même bash ou en utilisation de logiciel.
Quel informaticien ne double click sur un fichier pour l'ouvrir (Avec Eclipse ou OpenOffice) dans 90% des cas mais dans certains cas (c'est un gros fichier ou jeter un coup d'oeil rapide) ouvre le fichier avec Gedit (Notepad++) ou même vi/emacs pour éviter de le copier en local?