Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passer du C au C++...

Anonyme
    5 mai 2016 à 21:40:28

    Bonjour,

    En ce moment même, j'étudie le C. A la différence du C++, ce n'est pas un langage orienté object. Seulement, par habitude des langages orientés objet (et de leur efficacité), je compte passer au C++.

    J'aimerais savoir si la syntaxe du langage C correspond à celle du C++ (gestion des variables, conditions, ...) ?

    En gros, ma question est : "Je sais coder en C. Est-ce que passer au C++ sera une difficulté ? Est-ce que tout change, ou est-ce seulement la POO qui revolutionne le C++ ?"

    -
    Edité par Anonyme 5 mai 2016 à 21:41:47

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 mai 2016 à 21:56:28

      Salut,
      C et C++ était autrefois complémentaire. Maintenant, C++ a évolué de son côté, C de l'autre. Avoir appris le C avant le C++, c'est "presque" avoir appris le latin avant le français (pub pour @koala01 :p ), quelques éléments similaires (verbes, sujet, etc ...), des éléments obsolètes qui ont presque disparu en français (cas, neutre, supin ...) etc ... 
      Pour le C et le C++, c'est pareil: quelques éléments similaires (syntaxe des boucles, des fonctions ...), mais beaucoup d'éléments obsolète (en l’occurrence, presque tous les fichiers de la "bibliothèque standard" du langages C sont obsolètes).

      Maintenant, rien t'interdit de le faire, mais il faut se dire "là, je fais du C, donc je suis les bonnes pratiques du C, là je suis en C++, donc je fais du C++ correct et non du C/C++". (C/C++ est une nomination que certains programmeurs ont inventé pour faire croire qu'ils codent en un langage :D )

      Après, il faut aussi un bon cours, si possible moderne pour pouvoir profiter des nouveautés du C++11. Il y en a très très peu. Deux sont en rédaction (celui-ci et celui-là) bien qu'ils sont loin d'être terminés, ils valent largement la peine d'y faire un tour. Mais le mieux, c'est d'acheter un bon livre comme C++Primer (la dernière édition, la 5eme) qui est en anglais, il n'y a pas pour l'instant de bon livre C++ en français dédié à son apprentissage (à ne surtout pas confondre avec les livres de bonnes pratiques, comme le livre de @koala01, ou la traduction de "Effective modern C++" de Scott Meyer :-° ). 

      -
      Edité par Anonyme 5 mai 2016 à 22:01:39

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        5 mai 2016 à 22:28:08

        Ilearn32 a écrit:

        Salut,
        C et C++ était autrefois complémentaire. Maintenant, C++ a évolué de son côté, C de l'autre. Avoir appris le C avant le C++, c'est "presque" avoir appris le latin avant le français (pub pour @koala01 :p ), quelques éléments similaires (verbes, sujet, etc ...), des éléments obsolètes qui ont presque disparu en français (cas, neutre, supin ...) etc ... 
        Pour le C et le C++, c'est pareil: quelques éléments similaires (syntaxe des boucles, des fonctions ...), mais beaucoup d'éléments obsolète (en l’occurrence, presque tous les fichiers de la "bibliothèque standard" du langages C sont obsolètes).

        Maintenant, rien t'interdit de le faire, mais il faut se dire "là, je fais du C, donc je suis les bonnes pratiques du C, là je suis en C++, donc je fais du C++ correct et non du C/C++". (C/C++ est une nomination que certains programmeurs ont inventé pour faire croire qu'ils codent en un langage :D )

        Après, il faut aussi un bon cours, si possible moderne pour pouvoir profiter des nouveautés du C++11. Il y en a très très peu. Deux sont en rédaction (celui-ci et celui-là) bien qu'ils sont loin d'être terminés, ils valent largement la peine d'y faire un tour. Mais le mieux, c'est d'acheter un bon livre comme C++Primer (la dernière édition, la 5eme) qui est en anglais, il n'y a pas pour l'instant de bon livre C++ en français dédié à son apprentissage (à ne surtout pas confondre avec les livres de bonnes pratiques, comme le livre de @koala01, ou la traduction de "Effective modern C++" de Scott Meyer :-° ). 

        -
        Edité par Ilearn32 il y a 22 minutes

        Merci beaucoup !

        Je compte commencer par utiliser les livres que proposent OpenClassRooms. Je suis client depuis déjà quelques anneés alors que le site s'appellait le site du zéro, et je me suis particulièrement habitué à ce style de livres (style de rédaction, ...). Celui de Philippe Dunski me semble très intéressant, autant sur le prix que ce qu'il propose que son contenu. Je jeterais un coup d'oeil à l'occasion s'il est disponible en médiathèque ou ailleurs. ;)

        En gros (je suis très synthétique, malheureusement), j'aurais des fonctions provenant des bibliothèques complêtement différentes (printf, scanf, ... pourraient bien avoir disparus). Mais l'utilisation des variables, ... restera la même ?

        -
        Edité par Anonyme 5 mai 2016 à 22:30:30

        • Partager sur Facebook
        • Partager sur Twitter
          5 mai 2016 à 22:35:10

          HugoDefois a écrit:

          Mais l'utilisation des variables, ... restera la même ? 

          Non.

          Un code tel que :

          int i = 0;

          sera valide en C et en C++.

          Mais utiliser des variables en C++, c'est en plus la gestion automatique des ressources (RAII), l'inférence de type (auto, decltype), la move semantic, etc.

          Et surtout, le C++ est une façon de penser différemment. Même si on retrouve des syntaxes communes.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            5 mai 2016 à 22:43:36

            Re,

            HugoDefois a écrit:

            Merci beaucoup ! Je compte commencer par utiliser les livres que proposent OpenClassRooms.

            Malheureusement, le cours C++ de ce site (et donc le livre) est de très mauvaise qualité :( . Auparavant, c'était une "bonne base" car c'était plus une introduction au C++. Puis est apparu Openclassrooms, et le tuto est devenu un cours comme par magie.

            Enfin, c'est ce que les anciens disent :p.

            HugoDefois a écrit:

            et je me suis particulièrement habitué à ce style de livres (style de rédaction, ...).

            Je suis tout à fait d'accord. Mais c'est justement ce problème qui propulse le cours C++ de ce site de "mauvais cours" à "très mauvais cours" :'(. Il te donne l'impression que tu apprends des choses correctes, mais en fait tu apprends "pleins d'âneries"et "pleins de bavures" (citation de @Ksass`Peuk , pas de moi :p).

            HugoDefois a écrit:

            j'aurais des fonctions provenant des bibliothèques complêtement différentes (printf, scanf, ... pourraient bien avoir disparus)

            printf() et scanf() n'ont pas "disparu" :p, c'est juste qu'elles sont obsolètes, on est encouragé à ne plus les utiliser. D'un autre côté, printf() est plus rapide que std::cout (l'alternative "C++" de printf()), mais cette dernière est beaucoup plus ergonomique.

            HugoDefois a écrit:

            Mais l'utilisation des variables, ... restera la même ?

            Oh, C et C++ sont différents mais pas à ce point là :p.

            En fait, les variables "natives" restent les mêmes (int, char, float ...). Il y a quelques différence avec les structures, énumérations et unions (elles n'ont plus besoin de typedefs) etc ...

            Les classes, il y a tout pleins de choses différentes avec le C, c'est une autre histoire.

            Heu ... en fait @gbdivers raconte ça beaucoup mieux que moi :p .

            -
            Edité par Anonyme 5 mai 2016 à 22:46:45

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 mai 2016 à 10:56:19

              Bonjour,

              Merci à tous pour vous réponses. Vous m'avez vraiment beaucoup aidé !! Une dernière petite question sans réel rapport avec ce forum (C++) : est-ce que les cours de C d'OpenClassRooms sont une bonne base ? (je suis en ce moment même en train de préparer mon année à Epitech avec ce livre)

              • Partager sur Facebook
              • Partager sur Twitter
                6 mai 2016 à 11:10:30

                C et C++ partagent une partie de leurs syntaxes, un code écrit en C sera, à quelques exceptions près, valide en  C++. Attention cependant, valide ne signifie pas correct. La bibliothèque standard du C est incluse dans celle du C++, principalement pour permettre de réutiliser du code écrit en C directement en C++. On pourrait dire que globalement le C est un sous-ensemble de C++, mais il faut faire très attention avec ça car comme l'a dit gbdivers, C++ et C n'ont pas du tout la même "philosophie", ce qui est correct en C ne l'est pas toujours en C++, notamment en ce qui concerne l'utilisation de la bibliothèque standard du C. Lorsqu'on fait du C++, on n'utilise quasiment jamais la bibliothèque standard du C, c'est à dire qu'on utilise toujours les équivalents C++, sauf quand ça n'est pas possible/souhaitable, ce qui est tout à fait exceptionnel.

                C++ n'est pas stricto-sensu un langage orienté objet, en fait c'est beaucoup plus que ça, c'est un langage multi-paradigmes. L'aspect objet n'est que l'un des paradigmes utilisable en C++. Restreindre C++ à sa seule dimension objet est dommage, car C++ peut faire bien mieux.   

                Si tu as commencé à apprendre le C avec comme objectif de ne programmer qu'en C++, tu as perdu ton temps, cette façon de faire était valable il y a 30 ans, mais elle ne l'est plus du tout aujourd'hui, car le C++ a énormément changé. 

                Pour répondre à ta question: Je sais coder en C. Est-ce que passer au C++ sera une difficulté ? Est-ce que tout change, ou est-ce seulement la POO qui revolutionne le C++ ?

                La réponse est oui, passer du C au C++ sera difficile, très difficile même, car tu vas devoir apprendre à ne pas utiliser ta connaissance du C pour faire du C++. Tout change, sauf une partie de la syntaxe et comme je l'ai dit, la POO n'est qu'une possibilité offerte par le C++ et contrairement à ce qu'on pourrait penser, ce n'est pas la panacée, il y a des tas de situations où elle est inutile voir même contre productive. 

                • 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
                  6 mai 2016 à 11:54:05

                  HugoDefois a écrit:

                  est-ce que les cours de C d'OpenClassRooms sont une bonne base ? (je suis en ce moment même en train de préparer mon année à Epitech avec ce livre)

                  <troll inside>Ce livre ne sera pas pire que ce que l'on t'enseignera a Epitech</troll outside>
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 mai 2016 à 15:17:46

                    Si tu cherches un cours de C achète le K&R
                    • 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
                    Anonyme
                      6 mai 2016 à 18:12:48

                      gbdivers a écrit:

                      HugoDefois a écrit:

                      est-ce que les cours de C d'OpenClassRooms sont une bonne base ? (je suis en ce moment même en train de préparer mon année à Epitech avec ce livre)

                      <troll inside>Ce livre ne sera pas pire que ce que l'on t'enseignera a Epitech</troll outside>


                      Merci, c'est très aimable.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 mai 2016 à 19:47:56

                        HugoDefois a écrit:

                        Merci, c'est très aimable.

                        C'etait un troll, cela n'avait pas vocation a etre aimable. Ni a etre objectif, pertinent ou intelligent. Mais ce n'est pas toi qui est vise.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Passer du C au C++...

                        × 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