
Envoyé par
zoonel
Moi je suis vite passé au C# Après mes études. Justement parce que je trouve que c'est un bon langage, élégant etc... Bref en fait les mêmes arguments que toi mais pour C# au lieu de C++. Et durant mes études j'ai appris à programmer avec c++ , et j'ai du faire du c, du java et accessoirement on a également vu toute une floppée de languages "exotiques" (haskell, etc...).
Alors ça fait longtemps que j'ai plus fais de c++ et je m’intéresse pas trop aux nouveautés même si je suis l'actualité, mais quand je vois les examples de code rien que la synthaxe me fait peur et je la trouve pas élégante pour un sou.
Néanmoins ça m’intéresse d'avoir un avis de quelqu'un qui aime le c++ et donc en quoi le trouve-tu élégant, bon, etc... ?
J'essaie de me tenir vaguement au courant sur ce qui peut se faire comme langage mais le nouveau c++ ne m'a jamais attiré, seul Rust récemment a attiré mon attention et j'ai commencé à lire le bouquin, du coup je pense complètement laisser tomber le c++ (ou du moins l'espoir que j'avais de m'y (re)mettre). (Ça me fait penser à une vidéo que j'ai vue récemment sur un top top10 des "jeux de société qu'on aurait voulu aimé", je pense qui si c'était une vidéo sur les langages de programmation alors c++ arriverait en tête pour moi. J'aurais vraiment voulu l'aimer mais non j'y arrive pas)
Pour être honnête, je pense que si je devais reprendre le dev de zéro en 2020, j'apprendrais probablement plus Rust que C++.
J'aime énormément la philosophie de C++ et le langage en lui même mais il y a quand même un point noir sur le tableau: il reste trop de choses de C et C++98 (parce qu'il faut garder une retro compatibilité, Rust n'a pas ce soucis, étant jeune) qui rendent C++ bien moins moderne que ce qu'il pourrait être.
Pour ce que j'aime du C++ moderne:
- le langage n'est pas explicitement désigné en prenant les utilisateurs pour des cons. Des choses comme les pointeurs ne sont pas cachés sous un autre nom avec moins de features juste parce que dans l'imaginaire collectif "pointeur == compliqué" (ce qui est faux bien entendu).
- sur le même principe il n'y a pas de GC, mais des pointeurs intelligents, qui IMO sont beaucoup plus pratiques (et applicables dans d'autres domaines que juste gérer la mémoire), mais surtout cela permet d'avoir une durée de vie définie sur nos objets, et la construction/destruction est bien plus simple au final.
- une grosse partie de la philosophie de C++ c'est "ce qu'on peut faire à la compilation, on le fait a la compilation", et ça permet d'avoir des objets pratiques comme unique_ptr qui vont avoir absolument zéro overhead, mais en plus ça permet aussi de voir pas mal d'erreurs a la compilation, et ne pas attendre que ça pète au runtime. Et sur ce point Rust a l'air vraiment génial avec son borrow checker.
- je trouve tout le principe des templates et ce que l'on peut en faire complètement génial. Je sais pas si tu as déjà vu les patterns genre CRTP ou encore le polymorphisme statique, je trouve juste ça très élégant en plus d'être pratique (et très performant). Les templates c'est vraiment très puissant (il y a qu'a voir la lib standard, et boost), et on à rarement vu autant de possibilités dans d'autres langages, même si j'ai cru comprendre qu'en Rust il y avait de quoi faire des choses équivalentes, peut être plus facilement.
- chaque nouveau standard nous amène des outils incroyables, toujours plus puissants, et qui réparent petit à petit tous les problèmes majeurs du langage
Après y a aussi tous les trucs obvious qui font que personnellement, je préfère un langage natif à un langage qui tourne dans une VM.
On comprend mieux ce qu'on manipule, ça consomme moins, ça permet d'utiliser des outils plus "standards"... et en C++ on profite quand même de tout l'écosystème qu'il y a déjà autour de C (outils, bibliothèques), d'autant que moi je suis sous Linux et l'OS est vraiment très adapté à ce niveau.
Néanmoins, C++ n'est vraiment pas un langage safe (même si on suit beaucoup de règles, comme les C++ core guideline etc qui permettent de grandement limiter la casse), et je considère perso que ce n'est pas du tout un bon choix dans tout domaine qui nécessite du code vraiment safe (genre serveurs). Moi je développe un jeu donc ça ne me pose pas trop de problèmes, mais dans certains domaines il faut vraiment oublier le C++.
Bon, j'oublie probablement plein de choses, mais ça te permettra de voir mon ressentis général sur la chose je pense

Par contre j'ajouterais que savoir programmer en C++, ça ne se fait pas en quelques années d'études. J'ai fait genre 4 ans de C++ a la fac, et mon niveau était vraiment lamentable (et celui de mes profs encore pire) malgré le fait que je pratiquais pas mal (j'avais l'impression d'être bon, mais la suite m'a montré que non).
Par contre quand je suis allé bosser, et que j'ai rencontré des personnes très compétentes, dont une personne qui maîtrise vraiment le langage, ça a changé beaucoup de choses et mon niveau a été propulsé d'un coup, bien plus en très peu de temps qu'en toutes mes années d'étude cumulées.
Et je pense que c'est le même problème pour la plupart des langages quand on étudie, mais a mon avis C++ est l'un des pires à ce niveau, car tout le monde pense savoir le connaître ou le maîtriser... sans savoir en faire, en fait.
C++ est un langage difficile a apprendre en profondeur, mais pas du tout pour les raisons que la plupart des étudiants pensent (pointeurs, gestion de la mémoire, bas niveau).
5 |
0 |