• [^] # Re: Value Semantics Rocks

    Posté par . En réponse à la dépêche C++17 garantit le court-circuit de copie (suite de la précédente dépêche). Évalué à 10.

    Le premier argument pour supprimer ce genre de signature, c'est que ce n'est pas une fonction pure. Quelque soit le langage si tu as le moyen de rendre une fonction pure fais-le ou donne d'excellent arguments vérifiés pour ne pas le faire (les « on dit » ça ne suffit pas). J'avais fais un journal là dessus il y a... 4 ans !? (putain que le temps passe !) https://linuxfr.org/users/barmic/journaux/adopter-un-style-de-programmation-fonctionnel L'article de John Carmack et les commentaires du journal sont très intéressants.

    Globalement ça t'apporte pleins de choses d'un point de vu qualitatif du code et c'est ce qui fait que les compilateurs ou les interpréteurs ont de meilleures optimisations dessus. Mais c'est pas l'avantage le plus important AMHA.

    Je trouve d'ailleurs dommage que lorsque l'on parle du C++, on parle toujours de performance extrême. Expliquer qu'un retour de fonction peut être 3 fois plus rapide c'est cool, mais c'est de la micro-optimisation. Surtout que le C++ a d'autres corde à son arc. Le premier qui me vient en tête c'est le typage qui peut être assez expressif, mais qui est original (via la programmation template).


    J'en profite pour faire une demande aux gens qui écrivent la série de dépêche sur le C++ : est-ce qu'il y aurait moyen d'avoir quelque chose sur le typage/la création d'API ? Une bonne pratique de développement est de penser tout son code comme une API notamment parce que ça améliore la testabilité. Je suis sûr qu'il y a des choses à dire là dessus pour manipuler le typage et faire des API qui réduisent les erreurs de manipulation.

    Je serais aussi intéressé par des informations sur l'écosystème. Les bibliothèques phares (boost est connu, mais une partie doit être dépréciée maintenant, non ? j'ai vu des gens parler de eggs, il y a eigen,...), les frameworks, comment on test, comment on build (make ? cmake ? autre ?), comment avoir de l'autocomplétion intélligente,...

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)