Partage
  • Partager sur Facebook
  • Partager sur Twitter

C++ un langage critiqué et pourtant intéressant

    29 octobre 2018 à 18:10:12

    Bonjour à tous,

    Je suis un passionné d'informatique libre et de programmation. Les langages C/C++ représentent une étude passionnante concernant les mécanismes de programmation.

    Cependant, une partie importante de projets en informatique libre sont réalisés en C.

    Le C++ est souvent critiqué et dépeint comme étant un "mauvais langage".

    Pourtant, j'ai tendance à trouver le C++ complet au niveau des data structures proposées grâce à la STL et le fait de ne pas toujours réinventer la roue comme ce serait le cas en C.

    Depuis le C++17 et l'arrivée des smart pointers, la gestion de la mémoire est bien plus simple dans ce langage que ce ne pouvait être le cas avant.

    Que pensez-vous des critiques faites à l'égard du C++ ?

    Aussi, pourquoi certains développeurs avancent que le C est plus "portable" que le C++ ? gcc et g++ sont pourtant similaires (en se basant sur ces compilateurs GNU).

    Cordialement

    -
    Edité par Valenciano 29 octobre 2018 à 18:11:41

    • Partager sur Facebook
    • Partager sur Twitter

    Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

      29 octobre 2018 à 18:26:32

      Lu'!

      Valenciano a écrit:

      Que pensez-vous des critiques faites à l'égard du C++ ?

      Que quand elles sont faites avec le bon argumentaire, et dans le bon contexte, la très vaste majorité d'entre elles sont pleinement justifiées. C++ trimballe un passif horriblement lourd, et il est mal foutu sur tellement de points que l'on pourrait difficilement en faire la liste.

      Valenciano a écrit:

      Aussi, pourquoi certains développeurs avancent que le C est plus "portable" que le C++ ? gcc et g++ sont pourtant similaires (en se basant sur ces compilateurs GNU).

      Parce qu'il y a un compilateur C pour quasiment toutes les plateformes matérielles qui existent. Mais ce n'est pas le cas de C++. Par contre, il est très facile de défendre le fait que C est un langage aussi pourri que C++.

      -
      Edité par Ksass`Peuk 29 octobre 2018 à 18:32:43

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        29 octobre 2018 à 18:31:43

        Valenciano a écrit:

        Que pensez-vous des critiques faites à l'égard du C++ ?

        Tu prends les meilleurs developpeurs C++, et tu leur demandes quels sont les defauts du C++ : ils pourront t'en parler pendant des jours.

        Prends n'importe quel "bon" developpeur de n'importe quel langage, il pourra aussi te dire tous les défauts de son langage.

        Du coup, quelle est la pertinence de savoir si le C++ à des défauts ? La réponse est oui. Comme tous les langages.

        Valenciano a écrit:

        Aussi, pourquoi certains développeurs avancent que le C est plus "portable" que le C++ ? gcc et g++ sont pourtant similaires (en se basant sur ces compilateurs GNU).

        Sur des plateformes "exotiques" (en particulier certaines micro-controleurs), cela arrive d'avoir un compilateur C et pas C++. D'où cette réputation que le C est un peu plus portable que le C++.

        Mais c'est de moins en moins vrai. Les fabriquants de matériel proposent de plus en plus souvent le C et le C++ (simplement, parce que comme tu l'as dit, gcc fait très bien les 2).

        Valenciano a écrit:

        Cependant, une partie importante de projets en informatique libre sont réalisés en C.

        Meme pas sur. Tu as beaucoup de libs qui sont écrites en C, parce que le C++ est chia... pas sympa pour l'ABI.

        Mais c'est aussi une chose qui à tendance a changer. Beaucoup de choses sont juste répété, mais cela ne correspond plus forcement a la réalité.

        Si on fait le calcul du nombre de projets open sources qui sont en C et ceux qui sont dans un autre langage, le C perdra. De plus en plus de projets préfèrent des langages plus haut niveau. (C++, Rust, Java, Python, etc, etc)

        EDIT : un exemple sur GitHub https://blog.github.com/2015-08-19-language-trends-on-github/ 

        Le C est en 9eme position.

        -
        Edité par gbdivers 29 octobre 2018 à 18:34:19

        • Partager sur Facebook
        • Partager sur Twitter
          30 octobre 2018 à 19:54:55

          Quel que soit sa position, peu importe. C'est un bon langage, très bon même.

          Le cours de openclassrooms est d'une excellente pédagogie et te fait apprendre en douceur, si tu acceptes l'imperfection.

          Je me suis énormément enrichi grâce à ce cours de OC qui est un cours vivant avec de vrais TP et des activités qui sont corrigées par tes pairs.

          Puis, il faut passer au C++ plus profond.

          -
          Edité par pseudo-simple 30 octobre 2018 à 19:57:33

          • Partager sur Facebook
          • Partager sur Twitter
            30 octobre 2018 à 20:18:02

            (Je crois qu'on l'a vexé, non ? Un avis très pertinent d'un débutant qui n'a aucun recul...)
            • Partager sur Facebook
            • Partager sur Twitter
              30 octobre 2018 à 20:31:42

              YES, man a écrit:

              Je me suis énormément enrichi grâce à ce cours de OC qui est un cours vivant avec de vrais TP et des activités qui sont corrigées par tes pairs.



              • Partager sur Facebook
              • Partager sur Twitter

              Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                30 octobre 2018 à 20:33:01

                YES, man a écrit:

                des activités qui sont corrigées par tes pairs

                (Faites que ce n'est pas moi son pair, faites que ce n'est pas moi :peur:)
                • Partager sur Facebook
                • Partager sur Twitter
                  30 octobre 2018 à 22:55:42

                  Non, @gbdivers... Tu es son père...

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                    31 octobre 2018 à 11:25:13

                    @Yes, man, t'es Nietzschéen ou masochiste ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      1 novembre 2018 à 16:23:45

                      YES, man a écrit:

                      Quel que soit sa position, peu importe. C'est un bon langage, très bon même.

                      Le cours de openclassrooms est d'une excellente pédagogie et te fait apprendre en douceur, si tu acceptes l'imperfection.

                      Je me suis énormément enrichi grâce à ce cours de OC qui est un cours vivant avec de vrais TP et des activités qui sont corrigées par tes pairs.

                      Puis, il faut passer au C++ plus profond.

                      -
                      Edité par YES, man 30 octobre 2018 à 19:57:33


                      Le fait que C++ soit un très bon langage, ne fait pas qu'il ne supporte aucune critique, ni qu'il soit exempt de défauts. En l'occurrence, le c++ est blindé de défauts, mais ses défauts sont compensés par des avantages certains, ce qui fait qu'on considère généralement que c'est plutôt un bon langage. Le langage parfait n'existe pas et n'existera jamais.

                      La pédagogie du cours d'OC est bonne, le problème, c'est son contenu. De la merde, même bien emballée, reste de la merde...

                      La correction par les pairs, ça marche quand les bases de cours sont solides, si tous les pairs ont appris la même merde, les pairs ne risquent pas de donner des conseils correctifs efficaces...

                      Plutôt que de commencer par apprendre de la merde que tu vas devoir désapprendre, pourquoi ne pas commencer directement par un cours au contenu correct? L'expérience montre qu'il est beaucoup plus facile de prendre une mauvaise habitude que de la perdre, qu'il est toujours difficile de renoncer à une connaissance fausse et ce même lorsqu'on a la preuve qu'elle est fausse...

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                        1 novembre 2018 à 19:08:44

                        int21h a écrit:

                        Le langage parfait n'existe pas et n'existera jamais.

                        Si. Il y a Coq.

                        -
                        Edité par Ksass`Peuk 1 novembre 2018 à 19:09:01

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                          1 novembre 2018 à 20:14:17

                          On parlait d'un vrai langage de programmation.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 novembre 2018 à 23:31:58

                            Salut,

                            Il faut aussi se rendre compte qu'avantages et défauts ne sont bien souvent que les deux faces d'une même pièce,et que ce que certains considéreront comme un avantage peut très facilement être considéré comme un défaut par d'autres.

                            Quelques exemples très génériques :

                            • "C++ est particulièrement complexe" : c'est vrai, mais cette complexité nous offre des opportunités que l'on ne retrouve que dans peu de langages (par exemple, de pouvoir "mixer" les paradigmes procédural, orienté objets et génériques comme bon nous semble)
                            • "C++ est trop bas niveau" : c'est encore vrai ... Dans certains cas, ca a son utilité
                            • "C++ est trop haut niveau" : guère plus que Java ou C# ;)
                            • "C++ fournit trop de fonctionnalités '' dangereuses'' " : tout à fait, mais, dans quelques cas bien particuliers, nous serons bien contents de pouvoir en profiter
                            • "C++ met trop le développeur face à ses responsabilités" : nous sommes bien d'accord, mais, au moins, ce n'est pas un langage qui donne l'impression aux développeurs compétents qu'on les prend pour des cons
                            • Je pourrais sans doute continuer longtemps la liste des "défauts" ;)

                            Mais il faut surtout retenir qu'un langage de programmation n'est jamais -- au même titre que n'importe quelle langue --  qu'un ensemble de conventions qui permettent à deux interlocuteurs de se comprendre.

                            Manque de bol, l'un des interlocuteurs est un outil, spécifiquement créé pour être utilisé par "quelque chose d'aussi bête qu'un ordinateur", qui doit pouvoir "traduire" le code en instructions compréhensibles par ... "quelque chose d'aussi bête qu'un ordinateur".

                            Du coup, il devient quasiment impossible de créer un outil qui puisse "comprendre" toutes les nuances que peuvent apporter une langue. 

                            Penses au fait que le C++ dispose -- au dernier comptage -- d'à peine plus de 90 mots clé (en comptant ceux qui ne seront officialisés qu'en ... 2020), contre plusieurs dizaines de milliers de mots pour le français.

                            Penses que, à la base, un ordinateur ne sait effectuer que des opérations mathématiques! Les valeurs sont "plus grandes", "plus petites",  "égales" ou "différentes", mais il n'y a pas moyen d'introduire la notion de "je ne suis pas sur" ou de "peut-être".

                            A partir de là, comment voudrais tu que nous en arrivions à avoir un langage "parfait"?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                              2 novembre 2018 à 12:43:31

                              Bon, il y a quand même une critique important que l'on doit reconnaitre au C++ : sa communauté est une bande de pinailleurs de premirère ! On est champion du monde des langages sur ca.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                2 novembre 2018 à 13:39:13

                                Toute communauté contenant @gbdivers et @koala01 en arriverait à la même conclusion, C++ ou pas. :p

                                • Partager sur Facebook
                                • Partager sur Twitter

                                C++ un langage critiqué et pourtant intéressant

                                × 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