Partage
  • Partager sur Facebook
  • Partager sur Twitter

A quoi sert le C++ moderne ?

    24 septembre 2021 à 15:53:07

    Bonjour, je me demande à quoi sert concrètement les avancées du C++ moderne alors qu'on peut faire les choses beaucoup plus proprement et simplement avec du simple C.

    Par exemple, il y a ce jeu de Ryan Fleury (1er jeu de cette vidéo : https://www.youtube.com/watch?v=u0GZKJGeQLY) qui est codé en C et quand on voit son code (https://github.com/ryanfleury/dungeoneer), il est vraiment clair et surtout performant et fait les choses vite et bien, sans utiliser de concepts de C++ moderne. Et cette personne travaille maintenant chez Epic Games sur de vrais projets sérieux.

    Du coup la question est : est-ce que tout le monde est vraiment paumé à recommander le C++ moderne à tout va, où y a-t'il de vraies raisons pratiques basées sur des éléments factuels qui montrent une supériorité de ces méthodes modernes dans la qualité du résultat obtenu ?

    Moi je constate que tous les articles, tutos et autres, recommandent de faire les choses de "telle manière" parce que "c'est mieux" ou "c'est comme ça qu'on fait maintenant" mais sans jamais apporter d'éléments concrets. Aussi, ce n'est pas compliqué de se rendre compte que les logiciels modernes mettent 10 plombes à se lancer, à tourner et sont bugués dans le pire des cas et donc que la qualité du logiciel aujourd'hui est exécrable

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2021 à 17:06:04

      C'est parce qu'on est payé 10 euros a chaque fois qu'un nouveau développeur fait du C++ moderne plutôt que du C.

      Signé : les paumés du C++ moderne.

      • Partager sur Facebook
      • Partager sur Twitter
        24 septembre 2021 à 17:26:03

        Vous pensez vraiment que le choix d'un langage est important pour les performances ?

        Vous n'êtes vraiment pas au point au niveau analyse.

        On utilise le langage le plus adapté, c'est tout.

        Le C++ moderne a pour principal objectif de rendre le codage en C++ plus simple et plus robuste.

        Si vous voulez vous prendre la tête et faire des trucs qui plantent, fuitent, ralentissent la machine, c'est votre droit.

        Comparez la productivité avec des langages de "haut niveau" avec la productivité avec les langages "bas niveau" et multiplier par le TJM, même d'un développeur indien, et vous verrez l'intérêt. (Mais actuellement, c'est plus le coût de formation des pisseurs de code qui bloque l'adoption du C++ moderne, car leur formation initiale est foireuse).

        Mais vous n'êtes ni un indien, ni une personne qui a besoin (tout de suite) de savoir décoder du code tout moisi ou ultra-complexe, pour contourner les faiblesses des vieux langages.

        Pourquoi avoir des aides au pilotage sur une bagnole : pour avoir moins de chance de se prendre un platane. Le C++ moderne, c'est pareil, c'est des aides à développer correctement rapidement et simplement.

        Quand tu seras "pilote de courses" chez Epic, tu sauras se qu'apportent ces systèmes et tu pourras aussi palier à leurs manquements. Mais si tu veux rester dans ta caisse à savon, dont acte.

        (Et les pilotes de courses se prennent des platanes en forme de murs)

        P.S.: la vitesse de chargement, comme l'occupation mémoire ne sont plus trop des critères "vendeurs" avec nos machines actuelles mais le C++ moderne, comme tout autre langage, quand on sait s'en servir (ainsi que tous ce qui n'est pas langage, car c'est un tout petit aspect de l'Informatique), a bien de quoi réduire ces nuisances.

        >donc que la qualité du logiciel aujourd'hui est exécrable

        Vous avez la qualité que vous méritez (Service "gratuit" de Google, etc...)

        -
        Edité par bacelar 24 septembre 2021 à 17:32:38

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          24 septembre 2021 à 17:31:40

          j'ai juste parcouru vite fait la vidéo que tu as linké, et ce qu'on voit à 8:43 n'est pas du C, il utilise le langage de script fourni par son moteur de jeu. Par ailleurs les jeu semble relativement simple, les bonnes pratiques de programmation prennent souvent du sens lorsque les projets grossissent et deviennent complexes.

          Et si le type est parti chez Epic, je ne sais pas dans quel service il est mais si il est dev y'a pas mal de chance qu'il fasse du C++ vu que l'Unreal Engine est codé dans ce langage (bon de ce que j'ai vu il y a quelques années c'est pal mal de C++ old school, je ne sais pas si ça a changé) et/ou de l'unrealscript.

          Mais il est tout à fait possible de réaliser des projets en C, cf le kernel Linux, ça a ses avantages et ses inconvénients.

          En revanche le fait que certaines applications récentes mettent 10 plombes à se lancer n'a aucun rapport, c'est souvent qu'il utilisent 10 couches d'abstractions genre du ReactJS Javascript into nodeJS embarqué into machine virtuelle et autre hérésies mais qui permettent à des devs web de développer des applications et des contraintes de dev "incitant" à aller très rapidement (oui je suis salé)

          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2021 à 17:37:01

            "Si vous voulez vous prendre la tête et faire des trucs qui plantent, fuitent, ralentissent la machine, c'est votre droit."


            Cest l’inverse, c’est les trucs modernes qui ralentissent la machine et qui plantent. Vu les réponses, je suis malheureusement confortée dans l’idée que vous ne savez pas de quoi vous parlez. Peut-être que regarder les 250 premiers épisodes de Handmade Hero pourra vous éclairer ?


            @Orochi à 8:43 c’est la deuxième personne parmi les 4 qui presente son jeu, ce n’est plus la personne dont je parle, qui n’apparaît qu’au début 

            -
            Edité par JadeSalina 24 septembre 2021 à 17:42:53

            • Partager sur Facebook
            • Partager sur Twitter
              24 septembre 2021 à 17:44:36

              Vous avez vraiment répondu au PO comme si c’était une discussion sérieuse ? Lol
              • Partager sur Facebook
              • Partager sur Twitter
                24 septembre 2021 à 18:01:31

                @gbdivers là vous me faites peur, bien sur que c’est sérieux et d’ailleurs j’ai jamais dit que qui que ce soit était paumé c’est juste une question que j’ai posée et apparemment cest le cas puisque vous prenez même mon post pour du troll. En attendant je n’ai pas eu les éléments de réponse que j’attends. Je sais que c’est difficile de réfléchir par soi-même et pas simplement répéter ce que certains qui ne savent pas coder racontent, mais c’est ça qu’il faudrait faire.
                • Partager sur Facebook
                • Partager sur Twitter
                  24 septembre 2021 à 18:10:42

                  Oui, "juste une question" :) 

                  Si je dis "tu es con quoi ou quoi ?", c'est juste une question. Mais c'est pas juste une question en fait.

                  J'imagine que tu comprend très bien la différence entre "juste une question" et de l’agressivité déguisée sous forme de question.

                  Tu n'as eu aucune réponse a tes questions parce que tu n'avais en réalité aucune question. Tu étais déjà persuadé de ce que tu pensais avant même de poster ton premier message. Tu n'es pas la pour discuter mais juste pour dire a quel point tu as raison et que les autres (ceux qui utilisent le C++ moderne) ont tort.

                  Et non, je ne pense pas que tu trolle. Je pense que tu es juste arrogant et que tu ne sais pas de quoi tu parle.

                  Mais continue, tu es distrayant.

                  Signe : ceux qui ne savent pas coder.

                  -
                  Edité par gbdivers 24 septembre 2021 à 18:11:00

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 septembre 2021 à 18:48:12

                    Ce n'est pas de l'aggressivité déguisée, c'est vraiment une question que je me pose. Avez-vous regardé les 200 premiers épisodes de Handmade Hero pour avoir ne serait-ce qu'une petite idée de ce dont je suis en train de parler ? Regardez la simplicité et la clarté de la codebase que j'ai linké, à comparer à de la torture templatée de C++. Connaissez-vous également Jai, un langage en cours de développement par Jonathan Blow, qui, dès sa première version, permettait déjà de faire tourner un jeu complet à la compilation (https://youtu.be/UTqZNujQOlA?t=3109), au lieu d'avoir à écrire des templates illisibles juste pour enlever les doublons d'une liste (https://www.twitch.tv/videos/1153227029?t=01h18m32s). Le langage de Jonathan Blow, en 2018, était capable de compiler 80000 lignes en 1,5 secondes sur un laptop (https://youtu.be/uZgbKrDEzAs?t=1246), ce qui pose la question de "pourquoi le C++ est-il si lent à compiler ?", autrement dit, quand on fait les choses "bien", on peut se passer des limitations actuelles. Et vous allez me dire "oui mais le C++ fait beaucoup de calcul à la compilation", eh bien en fait son langage en fait beaucoup plus (https://youtu.be/De0Am_QcZiQ?t=1333)

                    Après je m'en fiche de tout ça, je suis pas là pour prêcher la bonne parole, chacun fait ce qu'il veut. Ce que je veux dire, c'est qu'on n'a pas fondamentalement à subir ces limitations, la manière "moderne" de faire les choses n'est pas forcément la meilleure. On peut éviter que la moitié des allocations mémoire concernent des std::string (https://groups.google.com/a/chromium.org/g/chromium-dev/c/EUqoIz2iFU4/m/kPZ5ZK0K3gEJ) et il n'est pas non plus nécessaire d'avoir un terminal Windows aussi lent (https://github.com/microsoft/terminal/issues/10462 et https://www.youtube.com/watch?v=hxM8QmyZXtg)

                    Il faut avoir un esprit critique et ouvert et se rendre compte qu'on peut probablement faire mieux. 

                    -
                    Edité par JadeSalina 24 septembre 2021 à 18:57:59

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 septembre 2021 à 19:01:40

                      À chaque problème son langage. Et à chaque langage son problème.
                      Il y a des choses qui se font mieux en C, d'autres en C++, d'autres en Python, et d'autres en assembleur (pourquoi pas ...)
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        24 septembre 2021 à 19:07:55

                        Non, tu ne poses pas réellement cette question, tu es déjà persuadé de ce que tu penses. Tu dis aux autres de réfléchir et d'avoir un esprit critique, mais tu es loin d'appliquer ces conseils sur toi même. Et même si tu ne le réalise pas, tu es très agressif, dès ton premier message et dans tous les suivants.

                        Tu ne sais pas de quoi tu parle et tu n'as pas assez de recul. Cela se voit dans les exemples que tu cite. Tu es impressionné par 200h de codage ou par un projet de 80k lignes. Mais 200h de boulot, c'est un peu plus d'un mois de boulot pour un professionnel. Et 80k, c'est un petit projet pro.

                        Ou par exemple quand tu cites Ryan Fleury, comme si c’était une référence, alors que c'est un débutant. Tu cites Handmade Hero sans réaliser que son code et son jeu sont ce qu'on attend d'un code et d'un jeu il y a 20 ans. On est a 1000 lieu d'un projet pro actuel.

                        Peut être qu'un jour, tu auras le recul pour comprendre. Ou peut être que tu vas rester dans tes certitudes et ne jamais apprendre. Mais en attendant, cette discussion n'a aucun utilité, parce que tu n'es pas prêt a essayer de remettre en cause ce que tu pense.

                        -----------------------------------------------------------------------

                        EDIT : j'ajoute une partie a mon message, parce que les liens que tu donnes montre justement que tu ne comprends pas de quoi tu parles.

                        JadeSalina a écrit:

                        la manière "moderne" de faire les choses n'est pas forcément la meilleure. On peut éviter que la moitié des allocations mémoire concernent des std::string (https://groups.google.com/a/chromium.org/g/chromium-dev/c/EUqoIz2iFU4/m/kPZ5ZK0K3gEJ

                        Dans ce lien :

                        JadeSalina a écrit:

                        strings being passed as char* (using c_str) and then converted back to string  

                        Tu utilises comme exemple pour critiquer le C++ moderne :

                        - du code qui n'est pas du C++ moderne (c_str, char*)

                        - sur un probleme qui n'est pas spécifique au C++ moderne (l'allocation mémoire est un probleme général qui concerne tous les langages et qui dépend avant tout des structures de données que l'on va choisir d'utiliser)

                        - dont les C++ moderne propose des solutions efficaces (les string_view, les ranges, etc).

                        Bref, cela montre que tu attribues les problèmes au C++ moderne, alors que l'origine est simplement ton manque de compétences et de connaissances.

                        -
                        Edité par gbdivers 24 septembre 2021 à 19:39:59

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 septembre 2021 à 21:56:15

                          Donc pour vous c'est normal de mettre 10 minutes à compiler et écrire du code templaté illisible parce que le langage ne permet pas d'exécuter du code arbitraire à la compilation ?

                          Je pense que vous n'avez pas regardé en détail (voire même pas du tout pour être honnête) la façon de penser utilisée dans Handmade Hero, qui permet de faire des choses complexes comme du hot reload, etc, qui rend le concept même de langage de script inutile, puisqu'il peut utiliser C++ comme langage de script ! Et Casey Muratori a travaillé chez RAD Game Tools sur des outils utilisés par énormément de jeux, et il est cité dans de nombreux ouvrages, notamment sur la gestion des formats de fichiers et ses différentes versions dans Granny, ou encore dans les livres de physique pour son explication de GJK (https://www.youtube.com/watch?v=Qupqu1xe7Io), ou même sur wikipédia (https://en.wikipedia.org/wiki/Immediate_mode_GUI) puisqu'il a aussi inventé le concept d'interface graphique en mode immédiat

                          Et Ryan Fleury est un débutant ? Excusez-moi mais vous êtes qui en fait ? Si vous êtes un professionnel avec une grande expérience, dans ce cas je suis toute ouïe. Je ne cherche pas à suivre aveuglément un gourou ou autre, je cherche à comprendre, et pour l'instant, à part balayer d'un revers de main les éléments que je donne et dire que j'y connaît rien, je n'ai pas vraiment d'arguments prouvant la supériorité des méthodes modernes. D'ailleurs, la gestion moderne "haut-niveau" d'un sleep ressemble à ça en C++ :

                          std::this_thread::sleep_for(std::chrono::milliseconds(100));

                          A comparer avec du code Windows "bas niveau" :

                          Sleep(100);

                          Sans parler du fait que l'implémentation dans la bibliothèque standard de MSVC est tout simplement buguée, en "pending release" depuis plusieurs années, et tant pis pour ceux qui ont besoin que ça soit fixé (https://developercommunity.visualstudio.com/t/bogus-stdthis-threadsleep-for-implementation/58530)

                          Vu que je n'ai pas l'impression que vous ayez regardé Handmade Hero, je peux vous envoyer des timestamps où il démontre par a+b que certaines façons de penser en C++ sont mauvaises, et pour lesquelles il montre un exemple de comment ça aurait pu être fait si c'était "mieux pensé", et c'est très intéressant d'avoir justement plusieurs "sons de cloche" et ne pas rester dans une seule pensée. 

                          Si vous avez déjà conscience de cette façon de penser etc et que vous en êtes "revenu" pour X ou Y raisons, alors dans ce cas je veux bien que vous me "convainquiez", en fournissant des éléments.

                          Par contre, si vous avez uniquement suivi les manières modernes telles qu'enseignées à l'école depuis toujours, et que vous n'avez jamais vraiment expérimenté des méthodes "Handmade", alors dans ce cas ce serait intéressant de vous familiariser avec, pour que vous puissiez me donner votre avis en toute connaissance de cause, et ainsi que j'ai des éléments de réponse pour progresser. Il se trouve que j'ai fait des études informatiques et donc que je connais beaucoup mieux le C++ moderne et autres "conception orientée objet" et "génie logiciel" que le C lui-même, d'ailleurs j'ai appris le C++ en lisant la 4ème édition de "The C++ programming language" de l'auteur du C++ lui-même, avant d'avoir des cours officiels de C++ à l'université, donc tout ce que je dis là, c'est en ayant vraiment en tête ce qu'on nous enseigne aujourd'hui, et je cherche justement à le confronter à d'autres façons de penser, sans prendre ce qu'on nous dis pour argent comptant, sans parler du fait que les profs qu'on a ne codent pas eux-même, ils répètent juste ce qu'ils ont appris 30 ans plus tôt sans même le mettre à l'épreuve en pratique.

                          Et d'ailleurs entre nous, je trouve beaucoup plus simple de suivre les Cpp Core Guidelines et d'utiliser des smart pointers que d'aller faire sa gestion mémoire à la main, en allant même jusqu'à faire la différence entre "réserver" de la mémoire et la "commit", distinction qui n'est même pas exposée dans la lib standard, même au plus bas niveau (malloc)

                          -
                          Edité par JadeSalina 24 septembre 2021 à 22:08:05

                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 septembre 2021 à 22:38:40

                            JadeSalina a écrit:

                            Et Ryan Fleury est un débutant ? Excusez-moi mais vous êtes qui en fait ? 

                            Ben, du coup, quelqu'un qui a assez d’expérience en C++ pour dire que c'est un débutant.

                            C'est pas une insulte, c'est juste un constat en lisant son linkledin : il est diplômé depuis peu et était encore stagiaire l’année dernière.

                            De mon cote, j'ai commence le C++ avant que celui ci soit normalisé.

                            Et on est plusieurs devs pro sur ce forum, certains avec plus de 10 ou 20 ans d’expérience. Alors débarquer ici en disant que ceux qui défendent le C++ moderne sont des paumes, qui ne savent pas réfléchir et se remettre en cause, ca fait bien rire en fait :)

                            JadeSalina a écrit:

                            j'ai appris le C++ en lisant la 4ème édition de "The C++ programming language" de l'auteur du C++ lui-même

                            Ok, donc tu as appris le C++ "moderne" d'il y a 8 ans...

                            Ouch.

                            Mais en fait, cela explique pourquoi tu penses que le C++ moderne est bof : tu ne connais pas le C++ moderne.

                            JadeSalina a écrit:

                            Je pense que vous n'avez pas regardé en détail (voire même pas du tout pour être honnête) la façon de penser utilisée dans Handmade Hero, qui permet de faire des choses complexes comme du hot reload, etc, qui rend le concept même de langage de script inutile, puisqu'il peut utiliser C++ comme langage de script !

                            Handmade hero date de 2016. C'est pas la première fois qu'on parle de lui ici. Et ça impressionne peut être un débutant, mais pas de quoi non plus se rouler par terre. Ni tout jeter. C'est un parmi beaucoup d'autres.

                            JadeSalina a écrit:

                            alors dans ce cas je veux bien que vous me "convainquiez", en fournissant des éléments.

                            Bof, non. Parce que ton agressivité et ton manque de remise en question personnelle me laisse penser que ça va être une discussion fastidieuse et qui n'aboutira pas.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 septembre 2021 à 0:32:56

                              Moi ce que je vois c'est que vous me prenez de haut en pensant que je dis forcément de la merde puisque j'ai pas 30 ans d'expérience. Et vous ne trouvez pas que Handmade Hero c'est complexe ? Vous en faites tous les jours des projets d'une telle ampleur, vous auriez un Github ou quelque chose qu'on pourrait consulter ? Handmade Hero n'est pas de quoi se rouler par terre ? Mais whoooa je suis espantée, sur quoi travaillez vous pour le sous-estimer ainsi ? Regardez juste le titre des vidéos pour avoir une idée de ce qu'il fait, c'est quand même beaucoup, il est passé par pratiquement tous les aspects (système d'asset avec chargement asynchrone, système de debug, et blablabla j'ai plus de place)

                              Et je ne dis pas que vous êtes paumés, je me demande juste si vous avez connaissance de ce qui est fait dans Handmade Hero, qui est une autre façon de penser et que, en pleine connaissance de ça, quand même dire que le C++ est mieux pensé, auquel cas ça pourrait me faire reconsidérer la voie à suivre.

                              Oui le livre date de C++11 mais mes cours étaient sur C++17. Et quand je dis que le C++ moderne est "bof", je parle du C++ moderne par rapport à toute autre façon de programmer dans l'absolu, sans quelque contrainte que ce soit, pas par rapport à du vieux C++ qui est 100 fois pire, ce que vous reconnaissez en crachant sur le cours de Mateo21. D'ailleurs reconnaissez que de nouveaux langages sortent et apportent des choses par rapport à C++, donc ça montre bien que ce n'est pas la solution "ultime". En fait les nouveautés dans le C++ moderne ne font que fixer les défauts du langage, sans forcément repenser la résolution du problème à la base (d'ailleurs j'attend avec impatience les paramètres constexpr de fonctions, peut être que je pourrais enfin parser des string de couleurs CSS à la compilation, who knows). Et oui, il faut rester rétrocompatible, ce qui est d'ailleurs un frein à l'évolution, qui complique le langage alors alors que si c'était pensé bien dés le début ça serait plus simple, cf. constexpr, consteval et constinit.

                              Mais j'ai quand même l'impression que personne ici en France n'a vraiment regardé Handmade Hero et ne comprend tout simplement pas ce dont je parle. D'ailleurs, moi qui sortait d'université, après avoir eu tous les cours possibles et imaginables sur UML, la COO, le C++ etc, j'ai commencée à regarder Handmade Hero en me disant "mais qu'est-ce qu'il dit ce mec ?", car il crache souvent sur le C++ mais parfois sans qu'on sache pourquoi. Et bien sachez que ce n'est que vers l'épisode 150, donc au bout de plusieurs mois, à force de tomber des nues car je me disait "alors comment il va faire cette fois sans utiliser C++" et à chaque fois il arrive avec une solution toute simple sortie de nulle part, que j'ai commencé à apprivoiser sa façon de penser, parce que jusque là, je ne comprenait sincèrement pas pourquoi il crachait sur l'OOP etc, que je considérais comme "la façon de penser", tout comme je me disais que le C++ était "le langage", et que si je trouvais un truc bizarre, c'est que c'est moi qui comprenais pas bien le langage, ce dont j'ai commencé à douter en découvrant la communauté Handmade et en voyant ce qu'ils arrivaient à faire (cf le débugger RemedyBG, fait par un mec sur son temps libre, plus performant que Visual Studio, qui était d'ailleurs lui-même plus rapide il y a 20 ans sur un Pentium 4 https://www.youtube.com/watch?v=GC-0tCy4P1U).

                              Donc je n'imagine pas la difficulté de "percevoir" cette façon de penser si on fait différent depuis des décennies, alors que même moi en sortie d'école il m'a fallu des mois (à regarder HH intensément !)

                              Et je ne suis dans aucun camp, je n'ai aucune année d'expérience à défendre, donc je ne cherche pas à critiquer quoi que ce soit, je veux juste des éléments concrets pour comprendre, les cours français disent juste "ça c'est sale" ou "il faut faire comme ça", sans rentrer dans le détail du fonctionnement et pourquoi faire comme ci ou ça.

                              Donc je me dis juste : est-ce que les gens qui enseignent les trucs modernes ont entendu parler de ça et en sont conscient, où passent-ils peut-être à coté de quelque chose ? Auquel cas leur avis n'est pas completement informé et donc d'un intérêt moindre pour moi qui cherche juste à progresser dans l'absolu, et pas "rejoindre une secte" qui fonctionne comme ci ou comme ça et faire les choses "parce que c'est comme ça qu'on fait". Et de toute façon je pense que le coeur d'un moteur style Unreal Engine ou autre ressemble plus à du code comme Handmade Hero que du C++ à la Kate Gregory, donc vous ne pouvez pas quand même dire que ce que fait Casey est mauvais, il a d'ailleurs "écrasé" des mecs de Microsoft avec son terminal qu'ils avaient qualifié de "projet de recherche doctoral", qu'il a fait en 2 jours, et qu'ils ont avoué "n'avoir jamais vu un terminal aussi rapide" (cf l'issue du terminal Windows linké plus haut)

                              -
                              Edité par JadeSalina 25 septembre 2021 à 0:52:34

                              • Partager sur Facebook
                              • Partager sur Twitter
                                25 septembre 2021 à 1:14:59

                                JadeSalina a écrit:

                                Moi ce que je vois c'est que vous me prenez de haut en pensant que je dis forcément de la merde puisque j'ai pas 30 ans d'expérience.

                                Non. Juste parce que tu es agressif et arrogant dès ton premier message, alors que ca se voit que tu n'y connais pas grand chose.

                                Et que cela présage une discussion complètement inutile.

                                Et personne a ma connaissance prétend que le C++ est le langage "ultime". Ni aucun autre langage.

                                Et oui, je travaille sur des plus gros projets. Ce qui n'est pas difficile quand tu travailles sur des projets pendant des années, a plein temps (pas quelques heures par jour comme lui) et avec une équipe (pas comme lui, qui est tout seul).

                                Et je t'ai dit que je connais HM depuis des années. Et je confirme qu'il n'y a pas de raison de se rouler par terre. Voir je déconseille à un débutant de suivre ses codes. Il fait des choses moisies, ce qui me laisse penser qu'il ne maîtrise pas du tout le C++. Un exemple que j'ai vu en me baladant rapidement dans ses videos : il a pleins de code avec "&ptr->member", pour récupérer un pointeur sur un membre. Manifestement, il ne connaît pas les références. Ca montre le niveau. (Ou plus probablement, il connait les references, mais il a l'habitude de faire ca en C et fais la même chose en C++, ce qui montre qu'il n'a pas sur faire évoluer ses connaissances).

                                Enfin bref. Continue de t'extasier sur son code si tu en as envie.

                                -
                                Edité par gbdivers 25 septembre 2021 à 1:18:01

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 septembre 2021 à 2:22:15

                                  Comme gbdivers, tu sembles arriver avec déjà ton idée de réponse à tes questions, et comme lui je n'attends pas vraiment de dialogue. Mais admettons et faisons l'effort du débat.

                                  > Du coup la question est : est-ce que tout le monde est vraiment paumé à recommander le C++ moderne à tout va, où y a-t'il de vraies raisons pratiques basées sur des éléments factuels qui montrent une supériorité de ces méthodes modernes dans la qualité du résultat obtenu ?

                                  Robustesse, et maintenabilité dont les deux mots clés. Ecrire simplement un programme stable qui réponde au besoin. C'est ça les origines du C++ moderne. Désolé je ne suis pas un gamin et ma définition est celle du début des années 2000. Le C++ moderne est un C++ qui se démarque du C/C++ historique où l'on croyait que l'on pouvait transposer les bonnes pratiques du C au C++. La pierre angulaire, c'est le RAII. Arrivent ensuite les algos standards. Le reste c'est du bonus quand on peut s'en servir.

                                  9 ans après, ma vision sur le sujet n'a guère changé https://luchermitte.github.io/blog/2012/04/04/le-c-plus-plus-moderne/

                                  > Moi je constate que tous les articles, tutos et autres, recommandent de faire les choses de "telle manière" parce que "c'est mieux" ou "c'est comme ça qu'on fait maintenant" mais sans jamais apporter d'éléments concrets.

                                  Parce que tu arrives avec 20ans de retard sur le débat.

                                  Dans les grandes lignes on en retrouve ici les idées https://www.developpez.net/forums/d327/general-developpement/langages-programmation/c-cpp-lequel-choisir/

                                  > Aussi, ce n'est pas compliqué de se rendre compte que les logiciels modernes mettent 10 plombes à se lancer,

                                  Il n'y a pour moi pas le moindre rapport entre le style de C++ employé et les temps de démarrage des softs.

                                  > à tourner et sont bugués dans le pire des cas et donc que la qualité du logiciel aujourd'hui est exécrable

                                  Mon expérience est à l'exact opposé. La modernité est avant tout au service de la qualité et de la robustesse. Mais ma définition de "C++ moderne" est une définition de vieux. Je ne change pas la définition de moderne tous les 3 ans à chaque fois qu'une nouvelle itération sort. D'ailleurs ce n'est pas parce qu'un nouveau feature apparait que l'on doit absolument s'en servir.

                                  Toujours dans la problématique de définition du terme "C++ moderne", cela n'a jamais été pour moi de chercher à réaliser des incantations magiques à base de template.

                                  PS: non je n'ai pas regardé les 150 vidéos et non je ne le ferai pas. Dirige moi vers des articles qu'il a pu écrire s'il y en a.

                                  EDIT:

                                  > Ou plus probablement, il connaît les références, mais il a l'habitude de faire ça en C et fais la même chose en C++, ce qui montre qu'il n'a pas sur faire évoluer ses connaissances

                                  Cette histoire de pointeurs me rappelle ce vieil article de John Carmack (puisqu'il semble falloir sortir des arguments d'autorité) https://web.archive.org/web/20140713032309/http://www.altdev.co/2011/12/24/static-code-analysis/

                                  -
                                  Edité par lmghs 25 septembre 2021 à 3:00:09

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                    25 septembre 2021 à 12:03:49

                                    Il y a un non sens dans un des messages de Jade Salina:

                                    [...] Par contre, si vous avez uniquement suivi les manières modernes telles qu'enseignées à l'école depuis toujours,[...]

                                    Il se trouve que beaucoup des profs ne mettent pas à jour leurs cours et continuent d'enseigner un C++ with classes ; en tout cas il y a souvent des messages sur le forum C++ où l'on voit des débutants poster des questions sur du C++ antédiluvien qu'ils auraient écrit suite au cours de leur prof. :)

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                                      25 septembre 2021 à 16:13:01

                                      Donc je vois que vous ne comprenez pas la manière de raisonner de Casey, puisque vous ne regardez même pas ses vidéos. Ensuite il n’utilise pas de C++ moderne d’où le fait qu’il utilise des syntaxes tordues pour faire certains trucs, d’ailleurs je suis pas d’accord avec tout ce qu’il fait, par exemple pour faire des types génériques je trouve que les templates sont une bonne idée. D’ailleurs à un moment il avait fait une macro qui déclarait un tableau avec une taille négative pour s’en servir comme static_assert, ce qui est évidemment mauvais (mais il a corrigé ça dans le même épisode)

                                      Si vous jugez son code avec un regard C++ oui il y a de quoi se tirer une balle, mais le cœur du sujet n’est pas là, regardez plutôt comment il approche les problèmes, comment il raisonne, et comment son code est architecturé etc. 

                                      Je vois que vous êtes des experts en C++, là n’est pas là question, mais n’est-ce pas mieux d’être expert en résolution de problèmes en général, expert dans l’art de simplement transmettre des instructions au CPU sans contraintes de rétro compatibilité d’un quelconque langage ? Sans rester dans une seule manière de penser qui est celle du C++ ?

                                      Je peux vous donner des timestamps où il dit des choses interessantes sur pourquoi certaines facons de penser en C++ posent problème en donnant des exemples. Il connaît le C++ et il explique pourquoi il n’utilise pas les références. Sinon il a un blog où il y a notamment cet article qui n’est pas vraiment anti C++ mais plutôt anti OOP, qui est la encore un autre sujet, où il explique que faire des classes à l’avance n’est pas idéal, etc (https://caseymuratori.com/blog_0015)

                                      Et je vous assure que c’est en regardant des dizaines d’heures que j’ai arrêté de me dire « mais qu’est-ce qu’il fout ce mec » et commencé à voir son raisonnement, donc je ne pense pas qu’un simple parcours des vidéos suffise. mais évidemment vous n’avez pas ce temps à passer ce qui est dommage pour qu’on puisse mieux se comprendre. Encore une fois je suis « fraîche » et pas teintée de décennies de telle ou telle façon de penser donc je ne cherche pas à convaincre, je suis dans aucun camp, juste je me demandait si vous aviez connaissance de ces manières de penser tout en enseignant le C++ moderne ce qui n’est pas le cas puisque vous le dites vous même.

                                      Par contre au vu des cours que j’ai eu, vous dites exactement tous les mêmes choses sur les façons modernes de faire, en balayant la partie C, mais vous avouez vous même ne pas connaître les  raisonnement en C, juste vous prenez la façon la plus pourrie de faire en C vous dites qu’en C++ on peut faire mieux avec le RAII etc mais imaginez qu’il existe d’autres façons de penser en C qui ne souffrent pas de ces problèmes, et bien c’est ça que j’essaie de vous dire, mais on ne comprends qu’en se plongeant longuement dans HH par exemple

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        25 septembre 2021 à 16:58:40

                                        Je suis plutôt programmeur C , et pourtant j'ai vraiment du mal à défendre du C.

                                        "Je vois que vous êtes des experts en C++, là n’est pas là question, mais n’est-ce pas mieux d’être expert en résolution de problèmes en général, expert dans l’art de simplement transmettre des instructions au CPU sans contraintes de rétro compatibilité d’un quelconque langage ?"
                                        De quoi parle tu ?
                                        Parce que le C ou le C++ sont pas des langages vraiment bas niveau.
                                        Et ça ne veut absolument rien dire  "’art de simplement transmettre des instructions au CPU" en C , tu n'as aucun moyen de contrôler ça , la seul façon serait de faire ça en asm , mais comme 99% le compilo (C ou C++ ) fera mieux que toi...

                                        Apres , le C++ permet de faire des choses bien plus complexe que ce que tu peux espérer en C sans t'arracher des cheveux sur la tête.
                                        Pour ma part je le dit clairement , le C ne pose pas de réel problème , si tu es dans certain user case , mais les programmes moderne ont des problématiques assez importantes et de sécurité du code , que le C ne résout absolument pas.
                                        Le problème de son jeux , c'est qu'il pourrait faire pas mal de choses en statique , il peut optimiser pour une utilisation particuliere, et là oui en C , tu vas pouvoir faire sans que ça pose trop de soucis (et encore) , pas sur que la même formule marche sur du Unreal Engine par contre.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          25 septembre 2021 à 17:25:14

                                          > Donc je vois que vous ne comprenez pas la manière de raisonner de Casey, puisque vous ne regardez même pas ses vidéos.

                                          Pour ma part, Je n'ai pas cherché à savoir comment il raisonne, j'ai cherché à répondre à tes questions. Le premier problème est une question de définition: "1. que veut dire moderne?" Ensuite, tous les "faites du C++ moderne" datent du "Modern C++ style" du début des années 2000. Et là, tout part, je me répète, d'arrêter avec le carcan des programmes inmaintenables parce qu'ils importent dans le C++ un style qui n'est pas le style optimal. Depuis la définition de "Modern C++" ne cesse de shifter, mais l'argument initial de "c'est mieux" est resté. A tord ou à raison, peu importe c'est une autre question de moindre importance, recentrons-nous d'abord. C'est exactement comme avec le "Single Entry Single Exit" que l'on se traîne encore 40ans plus tard alors que les langages ne permettent même plus le "Multiple Entry", et où le "multiple exit destinations" n'est possible qu'avec les exceptions. On pourrait dire la même chose sur le sujet des vaccins dont les générations qui nous ont précédés ont vu de près les avantages, alors qui sont remis en question par nos contemporains.

                                          Bref, il savoir d'abord savoir de quoi on parle.

                                          Pour ce qui est des vidéos, c'est général, ça me casse les pieds, ça ne se brosse pas. Revenir précisément en arrière est non ergonomique. Ca ne se copie-colle pas. Bref, ce n'est pas du tout mon support de prédilection. Alors non, je ne regarderai pas 10h de videos où un gars se filme en train de réfléchir, ni même une heure quand j'ai d'autres choses à faire que de participer à un débat. Car comme l'a très bien dit Dan Saks, "you argue you loose". C'est cognitif: discuter avec quelqu'un qui a un biais, ce n'est pas possible, même avec les meilleures arguments techniques.

                                          Je reviens sur "comprenez pas la manière de raisonner de Casey", sois plus précise quant à ce qu'il dit. Car "le C++ moderne ça n'apporte rien par rapport au simple C", ben il y a bien trop de flou pour répondre concrètement. Tu y repenseras le jour où tu auras un client qui t'ouvres une fiche d'anomalie qui dit "ça ne marche pas".

                                          Si tu veux des vidéos, tu as 20 ans de conférence de Dan Saks sur les apports du C++ au milieu de l'embarqué.

                                          > Sinon il a un blog où il y a notamment cet article qui n’est pas vraiment anti C++ mais plutôt anti OOP,

                                          C'est un grand classique. Je suis le premier à critiquer l'enseignement de l'OO qui confond factorisation des données avec factorisation des comportements ou qui donne trop de place aux syntaxes sans s'intéresser aux cas d'utilisation. Ou à critiquer les limites de la modélisation du vivant avec de l'OO. Ca ne scale pas. Ce n'est pas pour rien que l'on a vu émerger (du monde du jeu video) les "Entity Component System". Sur le sujet de l'OO, Stepanov se défend aussi que la STL originale soit OO (mieux dit: il assume que son désign ne soit pas OO -- au mieux il gardé encapsulation et gestion des invariants)

                                          > Par contre au vu des cours que j’ai eu, vous dites exactement tous les mêmes choses sur les façons modernes de faire, en balayant la partie C, mais vous avouez vous même ne pas connaître les  raisonnement en C, juste vous prenez la façon la plus pourrie de faire en C vous dites qu’en C++ on peut faire mieux avec le RAII etc mais imaginez qu’il existe d’autres façons de penser en C qui ne souffrent pas de ces problèmes

                                          Je ne sais pas à qui tu réponds, ni si tu as bien lu mon billet de 2012 sur la définition de "C++ Moderne". Ce que j'y critique, c'est que les bonnes pratiques du C ne sont pas transposables au C++, et que pour profiter pleinement d'un langage, à un moment donné il faut faire le saut, abandonner nos pratiques venues d'ailleurs et apprendre les façons nominales de faire dans ce langage. Et c'est valable pour tous les langages. Quand je retourne au C, je respecte au mieux l'heuristique de Ramond Chen (un code C sans un if toutes les 2 lignes est très certainement un nid de bugs). Quand je fais du Pyhon, je m'adapte aussi, etc.

                                          A propos de bonnes pratiques du C++, je tends à accorder énormément d'attention aux invariants et aux contrats, à avoir une sémantique claire. Ce n'est pas pour rien que l'on va préférer employer des références éventuellement constantes en place de pointeurs. En plus cela offre plus d’opportunité d'optim aux compilos. Après s'il y a des batchs de données à traiter de façon performante, je change de paradigme, je retourne à l'orienté données pour mieux exploiter caches et vectorisation -- on retrouve des similitudes avec les ECS d'ailleurs. Par contre, je vais préférer une approche la moins étoilée possible (j'ai connu les saletés non maintenables et j'en ai ma claque!) et embrasse sans hésiter string_view et span, et même mdspan. Je préfère un code qui fait son boulot à un code qui va vite .... dans le mur.

                                          Ca me rappelle la critique plus haut du code de chrome avec les fonctions qui prenaient string ou char* sans la moindre uniformité. Le problème ce n'est pas le moderne std::string, le problème c'est la non uniformité entre ceux qui veulent rester en C et ceux qui veulent avancer et ne pas se prendre la tête avec des détails de gestion de la mémoire. C'est le rôle d'un responsable technique du projet d'imposer LA façon de faire du projet. Et c'est d'ailleurs le sujet du post sur la ML.

                                          > Sinon il a un blog où il y a notamment cet article qui n’est pas vraiment anti C++ mais plutôt anti OOP,

                                          C'est un grand classique. Je suis le premier à critiquer l'enseignement de l'OO qui confond factorisation des données avec factorisation des comportements ou qui donne trop de place aux syntaxes sans s'intéresser aux cas d'utilisation. Ou à critiquer les limites de la modélisation du vivant avec de l'OO. Ca ne scale pas. Ce n'est pas pour rien que l'on a vu émerger (du monde du jeu video) les "Entity Component System". Sur le sujet de l'OO, Stepanov se défend aussi que la STL originale soit OO (mieux dit: il assume que son désign ne soit pas OO -- au mieux il gardé encapsulation et gestion des invariants)

                                          > Par contre au vu des cours que j’ai eu, vous dites exactement tous les mêmes choses sur les façons modernes de faire, en balayant la partie C, mais vous avouez vous même ne pas connaître les  raisonnement en C, juste vous prenez la façon la plus pourrie de faire en C vous dites qu’en C++ on peut faire mieux avec le RAII etc mais imaginez qu’il existe d’autres façons de penser en C qui ne souffrent pas de ces problèmes

                                          Je ne sais pas à qui tu réponds, ni si tu as bien lu mon billet de 2012 sur la définition de "C++ Moderne". Ce que j'y critique, c'est que les bonnes pratiques du C ne sont pas transposables au C++, et que pour profiter pleinement d'un langage, à un moment donné il faut faire le saut, abandonner nos pratiques venues d'ailleurs et apprendre les façons nominales de faire dans ce langage. Et c'est valable pour tous les langages. Quand je retourne au C, je respecte au mieux l'heuristique de Ramond Chen (un code C sans un if toutes les 2 lignes est très certainement un nid de bugs). Quand je fais du Pyhon, je m'adapte aussi, etc.

                                          A propos de bonnes pratiques du C++, je tends à accorder énormément d'attention aux invariants et aux contrats, à avoir une sémantique claire. Ce n'est pas pour rien que l'on va préférer employer des références éventuellement constantes en place de pointeurs. En plus cela offre plus d’opportunité d'optim aux compilos. Après s'il y a des batchs de données à traiter de façon performante, je change de paradigme, je retourne à l'orienté données -- on retrouve des similitudes avec les ECS d'ailleurs. Par contre, je vais préférer une approche la moins étoilée possible (j'ai connu les saletés non maintenables!) et embrasse sans hésiter string_view et span, et même mdspan (oui je sais, pour vous qui codez sous windows, l'ABI ne permet pas de les faire passer dans les registres).

                                          Ca me rappelle la critique plus haut du code de chrome avec les fonctions qui prenaient string ou char* sans la moindre uniformité. Le problème ce n'est pas le moderne std::string, le problème c'est la non uniformité entre ceux qui veulent rester en C et ceux qui veulent avancer et ne pas se prendre la tête avec des détails de gestion de la mémoire. C'est le role d'un responsable technique du projet d'imposer LA façon de faire du projet.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                            25 septembre 2021 à 17:36:08

                                            lmghs a écrit:

                                            Alors non, je ne regarderai pas 10h de videos où un gars se filme en train de réfléchir, ni même une heure quand j'ai d'autres choses à faire que de participer à un débat. 

                                            Petite correction : plus de 640 videos, qui font entre 1h et 2h. Enjoy :)

                                            EDIT : tu as copier-coller 2 fois le meme texte dans ton message, lmghs 

                                            -
                                            Edité par gbdivers 25 septembre 2021 à 17:56:18

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              25 septembre 2021 à 17:43:32

                                              Sinon vous avez pensé à regarder la chaine Twitch sirlynixvanfrietjes ? C'est un gars sympa qui fait du C++ moderne, efficace ET avec une bonne architecture.

                                              Et en plus il est très beau.

                                              -
                                              Edité par Lynix 25 septembre 2021 à 17:48:38

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                                25 septembre 2021 à 18:45:15

                                                Il n'y a pour moi pas le moindre rapport entre le style de C++ employé et les temps de démarrage des softs.

                                                Bah le fait d'utiliser la STL, de faire n'importe quoi avec la mémoire, ça ralentit pas l'exécution ? Le simple fait de déclarer un std::vector dans une fonction c'est déjà une grave erreur, et oui je croyais que c'était comme ça qui fallait faire et que le compilateur allait faire "sa magie" bah pas du tout, il se met vraiment à demander de la mémoire à l'OS et appeler des constructeurs de partout même quand c'est pas nécessaire.

                                                gbdivers a écrit:

                                                lmghs a écrit:

                                                Alors non, je ne regarderai pas 10h de videos où un gars se filme en train de réfléchir, ni même une heure quand j'ai d'autres choses à faire que de participer à un débat. 

                                                Petite correction : plus de 640 videos, qui font entre 1h et 2h. Enjoy :)

                                                -
                                                Edité par gbdivers il y a 13 minutes


                                                Ce que je comprends en lisant ça c'est que vous le prenez de haut en ne considérant même pas la valeur pédagogique démentielle présente dans cette série (sans même parler du côté programmation pure, mais simplement la partie maths/physique et approche de problèmes).

                                                Lynix a écrit:

                                                Sinon vous avez pensé à regarder la chaine Twitch sirlynixvanfrietjes ? C'est un gars sympa qui fait du C++ moderne, efficace ET avec une bonne architecture.

                                                Je veux bien me faire convaincre de ce que vous avancez, mais comment en être sûr ? Vu que vous n'avez pas regardé comment il fait les choses, il vous manque des éléments pour faire la comparaison. J'ai vu le temps que vous mettez à compiler, mais pourquoi est-ce si long comparé au langage de Jonathan Blow (~100k lignes/s en 2018) ? Quelle est la propriété physique de l'univers qui fait que c'est si long ? Apparemment on peut faire mieux, puisque J. Blow le fait, donc pourquoi se contenter de ce qu'on a aujourd'hui si on peut dès maintenant faire mieux ? Pourquoi avoir des debuggers aussi lents que VS alors qu'un 

                                                Finalement je commence à avoir une petite idée sur ma question originale, apparemment vous ne n'avez pas eu la révélation qui m'est parvenue vers l'épisode 150, et donc êtes dans l'idée que le C c'est nul et qu'il ne faut que faire du C++ moderne, sans penser aux autres possibilités. Vous allez finir par me faire cracher la liste des timestamps où il balances des trucs sortis de nulle part et qui remettent en question le C++ moderne, même sur des choses supposés universellement bonnes comme le RAII.

                                                Donc en fait si je comprends bien vous sous-entendez que le C c'est pourri et que tous les projets en C sont mal écrits et mal pensés ? Le noyau Linux ? Raylib ? IMGUI (oui c'est du C++ mais à la C) ? Vous savez qu'on peut allouer un bloc mémoire en début de programme et sous-allouer à partir de là quand nécessaire ? Sans faire d'allocation dynamique, donc sans point de failure. 

                                                Vous savez qu'un raw pointer est la meilleure manière d'exprimer le fait que "la mémoire n'est pas gérée par moi, je ne fais qu'utiliser la ressource merci" ? Et que ça ne veut pas dire qu'il y aura la moindre fuite mémoire ? Comme par exemple

                                                struct GameState {
                                                  Renderer *renderer;
                                                  // ...
                                                };
                                                
                                                int main() {
                                                  Renderer renderer{};
                                                
                                                  runGame(&renderer);
                                                
                                                  return 0;
                                                }

                                                Pas de smart pointer, encore moins le combo shared/weak , pas de fuite mémoire et pas non plus d'allocation dynamique. Done.

                                                Le C++ moderne vise à ajouter des sécurités de partout, qui rend le code plus lourd, en mettant toute la responsabilité sur les objets eux-même au lieu de simplement laisser le code autour gérer ça, ce qui casse la complexité et non ça ne ressemble pas non plus à du code C des enfers que vous prenez en exemple pour illustrer des concepts C++

                                                J'ai l'impression que toutes les nouveautés de C++ c'est pour fixer des mauvaises façons de faire qui sont déjà causées par le C++ ! Par exemple la sémantique de mouvement prend tout son sens quand on est déjà dans du code C++ qui fait des copies de partout par défaut, mais moins si on fait les choses différemment et souvent pour au final avoir un code plus simple et clair et moins "error-prone", en plaçant de simples abstractions manuellement là où elles se justifient.

                                                Mais franchement faites comme moi, questionnez-vous, ne restez pas sur une façon de penser, écoutez les autres "sons de cloche", voir ce qu'on peut en tirer, ce qu'on veut au final c'est résoudre des problèmes efficacement dans l'absolu, satisfaire le client, etc,

                                                -
                                                Edité par JadeSalina 4 octobre 2021 à 0:17:54

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  25 septembre 2021 à 19:10:05

                                                  "apparemment vous ne n'avez pas eu la révélation qui m'est parvenue vers l'épisode 150"
                                                  C'est un peu ça le soucis , tu parle comme si c'était une religion et que HH et Casey sont des gourous de la prog.
                                                  Donc non personne n'a eu de révélation divine sauf toi ! :D

                                                  "Mais franchement faites comme moi, questionnez-vous, ne restez pas sur une façon de penser, écoutez les autres "sons de cloche", voir ce qu'on peut en tirer, ce qu'on veut au final c'est résoudre des problèmes efficacement dans l'absolu, satisfaire le client, etc, et pas simplement rester dans un monde de théorie juste pour faire de la br***** intellectuelle, comme pour aller se demander si on met plutôt une aggrégation ou une composition alors qu'en pratique on ne peut même pas exprimer cette distinction"

                                                  Justement ,j'ai l'impression que tu manque d'expérience et que tu es plus dans la théorie, j'ai plus de 10 d'expérience en C , donc je vois très bien la limite de faire du full C ! :D

                                                  Tu comprendra plus tard que certaine solution sont de toute façon absolument complexe et qu'il est illusoire de pouvoir simplifier certaine tache, et il faut mieux que le langage te donne tout les outils pour résoudre cette tache complexe que de passer ton temps autour des segfault et d'UB en C (que tu mentionne jamais étrangement ).

                                                  Après tu peux ne pas trouver la façon de comment le C++ résout ces problématiques intéressante pour toi , c'est un argument recevable , mais de dire que le C ou un langage créer par quelqu'un en une semaine sont des bonnes solutions pour résoudre des cas complexes non !

                                                  -
                                                  Edité par HelbaSama 25 septembre 2021 à 19:22:13

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    25 septembre 2021 à 19:28:01

                                                    JadeSalina a écrit:

                                                    Ce que je comprends en lisant ça c'est que vous le prenez de haut en ne considérant même pas la valeur pédagogique démentielle présente dans cette série (sans même parler du côté programmation pure, mais simplement la partie maths/physique et approche de problèmes).

                                                    J'avais envie de te faire une réponse plus détaillée, en prenant l'article de blog que tu as link et en expliquant en détail pourquoi il se trompe.

                                                    Mais flemme.

                                                    Tu es tellement dans ton petit monde que tu en arrive a conclure qu'on ne sait pas de quoi on parle puisqu'on n'est pas d'accord avec toi. Que c'est toi qui a compris, qui est éclairé, qui est ouvert d'esprit, qui sait se remettre en question, et pas nous.

                                                    Mais des débutants arrogants, on en a déjà vu passer. Tu n'es pas le premier, ni le dernier.

                                                    Amuse toi bien avec tes certitudes et arrêtes le C++. Ça te fera du bien et a nous aussi.

                                                    Bye.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      25 septembre 2021 à 19:45:55

                                                      Après ça dépend de ce qu’on entend par full C, j’en ai pas parlé mais je trouve aussi C pur très limité et oui il y a des choses purement immondes en C que le C++ permet de faire mieux (l’operator overloading, les generics, etc) mais ça ne veut pas dire qu’on est bloqué pour autant. Dans la première vidéo, on voit Ryan utiliser un outil qu’il a codé qui lui permet de parser sa map à la compilation, et cet outil lui permet de générer des shaders, et aussi le code qui setup les attributes qui vont avec et compagnie, c’est tout simplement de la metaprogrammation que vous connaissez mieux que moi. Donc au final il utilise du simple C tout en pouvant faire des choses cools qu’on ne peut que rêver de faire en pur C++ (mon dieu les spécialisations de templates juste pour brancher à la compilation, heureusement qu’on a if constexpr maintenant).

                                                      Et le langage de J Blow permet d’executer n’importe quelle fonction à la compilation, en claquant des doigts, sans constexpr ou autre, ça c’est pas cool comme fonctionnalité ? Pour faire des programmes plus fiables avec des static_assert de choses qu’on ne peut pas faire en templates (ou de manière illisible, ce qui n’est pas bon pour la maintenabilité).

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        25 septembre 2021 à 22:31:32

                                                        > Vous savez qu'on peut allouer un bloc mémoire en début de programme et sous-allouer à partir de là quand nécessaire ? Sans faire d'allocation dynamique, donc sans point de failure.

                                                        Bien, tu as découvert les memory pools...

                                                        > Vous savez qu'un raw pointer est la meilleure manière d'exprimer le fait que "la mémoire n'est pas gérée par moi, je ne fais qu'utiliser la ressource merci" ? Et que ça ne veut pas dire qu'il y aura la moindre fuite mémoire ? Comme par exemple [...]

                                                        Dis moi que tu plaisantes... Ton expérience en C++ se résume à avoir regardé ses vidéos ?
                                                        Pour découvrir ça faut vraiment pas avoir codé longtemps...

                                                        > Ce qui permet également de se faire passer le pointeur d'une DLL à l'autre.

                                                        Aucun rapport... Un pointeur est un pointeur.

                                                        > Donc en fait si je comprends bien vous sous-entendez que le C c'est pourri et que tous les projets en C sont mal écrits et mal pensés ? Le noyau Linux ? Raylib ? IMGUI (oui c'est du C++ mais à la C)

                                                        Personne n'a dit ça, mais bon, à ce stade tu peux annoncer ce que tu veux, ça ne te rendra pas plus crédible.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Si vous ne trouvez plus rien, cherchez autre chose.

                                                          26 septembre 2021 à 2:29:59

                                                          > D'ailleurs, la gestion moderne "haut-niveau" d'un sleep ressemble à ça en C++ :
                                                          > > std::this_thread::sleep_for(std::chrono::milliseconds(100));
                                                          > A comparer avec du code Windows "bas niveau" :
                                                          > > Sleep(100);

                                                          Le problème de la version C, -- en plus de ne pas être portable -- est propice aux erreurs. Il est très facile de se tromper dans les unités de temps utilisées et se retrouver à utiliser des secondes à la place des millisecondes et inversement, surtout quand on sait que la fonction sleep sur Unix prend des secondes et non pas des millisecondes. On a perdu des sondes spatiales pour le même genre de problème: une erreur d'unité.

                                                          std::chrono::duration fait automatiquement les conversions sans perte et empêche les conversions avec perte via une erreur de compilation ; ce qui permet de se prémunir de ce genre d'erreur.

                                                          La version "moderne" est certes plus longue à écrire, mais elle est aussi 1000 fois plus expressive et sécurisée.

                                                          Au passage, on peut écrire std::this_thread::sleep_for(100ms)

                                                          -
                                                          Edité par jo_link_noir 26 septembre 2021 à 2:32:09

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            26 septembre 2021 à 3:59:23

                                                            J'ai lu vite fait le thread.

                                                            Ma remarque est générale. Jade, tu défends Ryan Fleury ou Casey, je ne sais plus. Mais, as-tu regardé aussi attentivement ce qui se faisait ailleurs en C++ ?

                                                            Si c'est ta seule référence, et que tu es impressionnée par leur travail, c'est normal que c'est bien pour toi. Pour comparer il faut 2 références au moins.

                                                            Je lis les 3 dernières lignes de JoLinkNoir. En admettant qu'un code source C++ moderne soit 30 % plus volumineux qu'un ancien C++, en faisant la comparaison avec les prix des disques durs et SSD, on gagne en rapport sauvegarde/prix. Par exemple, un SSD d'1 To aujourd'hui coûte 100 €, à l'époque il y a 5 ans, c'était 150€. Pour 10 K lignes de code ancien C++ on a un ratio de 66.67 lignes/euro avec mes arbitraires + 30 % on a un ratio de 130 lignes/euro.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              26 septembre 2021 à 5:12:13

                                                              CristianoRolando a écrit:

                                                              J'ai lu vite fait le thread.

                                                              Ma remarque est générale. Jade, tu défends Ryan Fleury ou Casey, je ne sais plus. Mais, as-tu regardé aussi attentivement ce qui se faisait ailleurs en C++ ?

                                                              Si c'est ta seule référence, et que tu es impressionnée par leur travail, c'est normal que c'est bien pour toi. Pour comparer il faut 2 références au moins.

                                                              Je lis les 3 dernières lignes de JoLinkNoir. En admettant qu'un code source C++ moderne soit 30 % plus volumineux qu'un ancien C++, en faisant la comparaison avec les prix des disques durs et SSD, on gagne en rapport sauvegarde/prix. Par exemple, un SSD d'1 To aujourd'hui coûte 100 €, à l'époque il y a 5 ans, c'était 150€. Pour 10 K lignes de code ancien C++ on a un ratio de 66.67 lignes/euro avec mes arbitraires + 30 % on a un ratio de 130 lignes/euro.


                                                              J'espère que ce n'est pas ta seule motivation pour faire du C++ moderne :)
                                                              Si on est moindrement habile avec un éditeur, on code simplement et on remplace globalement à la fin.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Le Tout est souvent plus grand que la somme de ses parties.

                                                              A quoi sert le C++ moderne ?

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown