• [^] # Re: Les avantages de C++ ne sont pas bien différentes avec Rust

    Posté par . En réponse à la dépêche Faut‐il continuer à apprendre le C++ ?. Évalué à 3. Dernière modification le 15 août 2018 à 18:05.

    Ensuite, le "C++ moderne" c'est C++11 et ça fait déjà 7 ans.

    Oui, mais un écosystème ça met potentiellement un temps encore plus important à se mettre en branle. 2011 c'est la date de sortie de la spec, il faut que les compilateurs arrivent (ça arrivent assez vite parce qu'ils font le travaille en avance de phase), que c'est compilateurs soient dispo dans les distrib' et ensuite il faut faire évoluer l'écosystème et ça n'est vraiment pas un problème trivial quand le changement demande à casser la compatibilité (l'intérêt du C++ c'est sa compatibilité à toute épreuve ?).

    Et si vraiment tu dois t'interfacer avec du vieux C++ dégueu ou même du C, bah tu fais comme tout développeur normal et tu codes une classe ou quelques fonctions qui l'encapsule proprement et limite le couplage de code.

    Dans la liste des arguments comme quoi le C++ est cool il y a :

    • depuis C++11 on a plus de problème de gestion de la mémoire
    • on peut s'interfacer avec du C++ comme du C nativement donc réutiliser un écosystème très large

    Cet interfaçage demande à faire une couche de translation C ou C++98 vers C++11. Hors ces 3 langages sont presque totalement compatibles donc il est assez subtile de s'assurer que l'on ne leak pas du C dans le reste de ton programme. Une méthode C++98 qui te retourne un objet dont les méthodes manipulent des pointeurs nus. Tu va devoir proxifier l'ensemble de l'objet en tenant potentiellement compte de l'overhead que tu introduit (c'est important pour un langage dont l'un des principaux arguments c'est la performance).

    Pour la gestion mémoire, en statique : cppcheck, en dynamique : valgrind;[...]

    cppcheck se contente de voir les bugs, non ? Tu peux lui dire d'interdire l'utilisation des pointeurs nus par exemple ? De bien déprécier tout ce qui a était rendu smell par C++11 ? Ça me paraît compliqué parce que la RAII est de l'ordre du design. Mais s'il le fait c'est génial :)


    Je sais que j'ennuie au plus haut point ceux qui aiment bien le C++ et qui disent que depuis C++11 le langage est devenu vraiment cool (on pouvait faire des smart pointer intelligents avant), mais pour moi tant qu'un projet tel que C++ Core Guideline n'aura pas véritablement diffusé au sein de la communauté ça restera en langage dangereux. La plupart des fois où on en parle j'ai comme réponse qu'il faut suivre les bonnes pratiques, mais chacun a un peu les siennes et les rendre contraignantes (que le build ne passe pas si on les viole) est nécessaire. J'ai pas de doute que vous écrivez du code de qualité, que vous connaissez les bonnes pratiques, que vous suivez l'évolution du C++, mais il y a des fois où vous êtes fatigués, des fois c'est juste un truc qui vous a échappé, une subtilité dans le code qui ne se voit pas facilement,...1


    1. soyez humble, mais les développeurs du noyau linux, qui utilisent un langage simple et qui ont un processus de revu drastique laissent des fois passer des choses.