Partage
  • Partager sur Facebook
  • Partager sur Twitter

Etudier le C puis le C++ ?

    30 novembre 2013 à 0:11:59

    Salut à tous voilà tout est dans le titre faut t-il d'abord étudier le C pour comprendre et faire du C++ ou sa n'en vaut pas la peine?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2013 à 0:32:57

      Non, si tu veux apprendre le C, apprends le C, mais si tu veux apprendre le C++, apprend directement le C++. L'idée qu'il faudrait connaitre le C pour apprendre le C++ est une vieille lune qui avait du sens il y a 20 ans et qui n'en a plus aujourd'hui. Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.

      -
      Edité par int21h 30 novembre 2013 à 0:36:54

      • 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
        30 novembre 2013 à 2:00:36

        C'est toujours bien de savoir ce qu'il se passe bas niveau quand tu utilises des trucs de plus haut niveau, tu comprendras plus facilement pourquoi tu as des erreurs, comment optimiser etc ..
        • Partager sur Facebook
        • Partager sur Twitter
          30 novembre 2013 à 2:50:26

          @ads00: Bullshit, mais comme je sais que tu ne vas pas me croire sur parole, je vais me permettre de te demander de m'expliquer en détail ce qui se passe lorsque que je fais un malloc (épargne moi les conneries habituelles,  genre l'OS me donne la mémoire que je lui ai demandé),  et explique moi en quoi utiliser malloc m'aiderai à mieux comprendre le bas niveau qu'utiliser new. Explique moi aussi en quoi lire la taille d'une chaine de caractère via strlen m'en apprendrait plus sur le bas niveau que lire cette même taille en appellant la fonction length() de std::string?
          • 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
            30 novembre 2013 à 3:46:19

            Jte demande pas de me croire, mais j'ai déjà vu des gens écrire des trucs du genre : t[0.2] = 1;

            Ou alors mettre ne pas mettre des pointeurs quand la taille d'un objet dans une classe n'est pas connue etc ..

            Je viens de voir à l'instant quelqu'un qui ne comprend pas pourquoi il a des erreurs en mettant des données binaires dans un string, ça alors les données sont coupées ! Bizarre !

            • Partager sur Facebook
            • Partager sur Twitter
              30 novembre 2013 à 4:33:31

              Sans se balancer des histoires de malloc ou de printf je dirais simplement que le C++ a une syntaxe à peu près identique au C, mais une façon radicalement différente d'aborder le sujet.

              Donc NON, si tu veux apprendre le C++ il est complètement inutile d'apprendre le C.

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                30 novembre 2013 à 9:39:03

                Apprendre le C++ après le C de nos jours, c'est comme vouloir apprendre l'anglais après le russe…

                il est important de comprendre le bas niveau d'un ordinateur mais c'est indépendant du langage.

                • Partager sur Facebook
                • Partager sur Twitter
                  30 novembre 2013 à 10:14:25

                  Exactement, c'est pas parce que tu as appris le C que tu comprends ce qui se passe à bas niveau, ce serait même plutôt l'inverse, c'est parce que tu comprends ce qui se passe à bas niveau que tu es capables d'écrire du C qui tient la route.
                  • 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
                    30 novembre 2013 à 19:09:28

                    Evitez d'apprendre le C avant le C++ si l'objectif est d'apprendre le C++. Les bonnes pratiques dans les deux langages n'ont rien à voir. Aujourd'hui on critique même énormément les cours de C++ qui commencent par enseigner le C qui est dans le C++.

                    Bref, prends un cours de C++ moderne.

                    • 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.
                      2 décembre 2013 à 18:43:55

                      Je vous remercie pour vos réponses :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 décembre 2013 à 16:42:20

                        Mais une question pour confirmer mes dires, la programmation objet on peut bien crée des petits logiciel avec ? :) ( Comme une application avec une barre de recherche google, ou autres bien sûr ^^ )
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 décembre 2013 à 16:44:21

                          On peut faire ce que l'on veut avec.

                          Mais je ne comprends pas la pertinence de la question, dans le cadre du C++. En effet, le C++ permet aussi de travailler en OO, comme de ne pas l'utiliser.

                          • 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.
                            3 décembre 2013 à 16:47:52

                            Salut

                            La POO n'est qu'une "façon" de programmer, ce n'est pas cela qui va limiter ce que tu peux créer avec. Cela va dépendre surtout du langage, bibliothèques, la documentation, etc.

                            Par exemple, faire une barre de recherche google sera très compliqué en C++, beaucoup moins en utilisant un framework comme Qt, encore moins en utilisant les outils Google ou d'autres langages (DART ? :D)

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 décembre 2013 à 16:55:21

                              int21h a écrit:

                              Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.

                              Plus difficile à maîtriser que le C++ ? J’ai des doutes…

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Zeste de Savoirbépocode minimal  — Ge0 <3
                                3 décembre 2013 à 17:20:06

                                simbilou a écrit:

                                int21h a écrit:

                                Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.

                                Plus difficile à maîtriser que le C++ ? J’ai des doutes…

                                Je dirais que le plus symptomatique est la gestion des erreurs en C. En C, tu as l'obligation de couvrir tous les chemins d'exécution. En C++, les exceptions permettent de limiter cette gestion au strict nécessaire en se prenant bien moins la tête.

                                De même la gestion des ressources est complexe en C, en C++ le RAII te sauve la vie en te proposant d'exploiter le mécanisme de fonctionnement de la pile.

                                Enfin, le typage de C++ est suffisamment fort pour t'empêcher de faire de grosses boulettes que tu peux mettre des plombes à comprendre dans un programme C.

                                • Partager sur Facebook
                                • Partager sur Twitter

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

                                  3 décembre 2013 à 21:01:33

                                  Certes, mais le c++ ajoute également tout une couche de concepts complexes et inexistants en C (je pense notamment à des utilisation poussées de l'OO, des templates et à la métaprogrammation en rêgle générale).

                                  Personnellement, je suis arrivé sur le site au moment où le tuto de M@teo sur le C++ demandait d'avoir lu le tuto sur le C, j'ai donc appris le c avant le c++.

                                  Pourquoi vouloir comparer le C et le C++? ce sont 2 langages différents, bien qu'avec des compatibilités et des syntaxes proches.

                                  Enfin, pour répondre à ta question : si tu veut apprendre le c++, apprend le c++. Si tu veux apprendre le C, apprend le C, il n'y a pas de "prérequis" à l'apprentissage de tel ou tel langage, et ça vaut pour TOUS les langages (il est vrai que commencer par apprendre l'assembleur est un peu too much, car c'est de très bas niveau, mais c'est finalement possible, je me souviens d'un concours de prog où on m'a raconté qu'une année, un participant ne connaissait QUE l'assembleur, ça avais bien embêté les orgas d'ailleurs ^^ )

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Merci de penser au pouce vert si les messages aident, et de mettre votre sujet en résolu si il est résolu !
                                    3 décembre 2013 à 21:46:52

                                    D'accord, je vous remercie on peut également faire des BINDS à la fin de ce tutoriel ? Ou il faudra approfondir les connaissances ? ( Niveau Seconde Lycée )
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 décembre 2013 à 21:52:20

                                      Il arrive bien souvent que de "bonnes" habitudes en C deviennent de "mauvaises" habitudes en C++. Tu écriras :

                                      type *var = malloc(n * sizeof(*var));

                                      en C, tandis qu'en C++, c'est déconseillé. Il faudra plutôt faire :

                                      type *var = new type(arg1, arg2...);

                                      Commence donc direct par le C++ afin de ne pas être déboussolé par la suite ;)



                                      -
                                      Edité par TTT 3 décembre 2013 à 22:09:07

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 décembre 2013 à 22:01:37

                                        c'est à dire des binds ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Merci de penser au pouce vert si les messages aident, et de mettre votre sujet en résolu si il est résolu !
                                          4 décembre 2013 à 10:10:03

                                          TTT a écrit:

                                          Il arrive bien souvent que de "bonnes" habitudes en C deviennent de "mauvaises" habitudes en C++. Tu écriras :

                                          type *var = malloc(n * sizeof(*var));

                                          en C, tandis qu'en C++, c'est déconseillé. Il faudra plutôt faire :

                                          type *var = new type(arg1, arg2...);

                                          Justement non. Déjà tes codes ne font absolument pas la même chose : il y a un tableau dans un cas, et un objet construit avec 2 paramètres dans l'autre. Ils ne sont pas comparables.

                                          Après, new ou malloc, ça ne change pas grand chose. L'habitude venant du C, et qui devient mauvaise en C++, est de croire que l'on peut impunément manipuler des ressources à mains nues dans un monde à exceptions.

                                          Ce malloc ci, en C++, deviendra:

                                          std::vector<type> var(n); // bon, là, c'est plus équivalent à un calloc

                                          Quant au new:

                                          // en C++11
                                          std::unique_ptr<type> var(new type(arg1, arg2)); // std::auto_ptr<> ou boost::scoped_ptr<> en C++98/03
                                          // ou, mieux, en C++14
                                          auto var = std::make_unique<type>(arg1, arg2); 

                                          -
                                          Edité par lmghs 4 décembre 2013 à 11:56:25

                                          • 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.
                                            4 décembre 2013 à 12:35:08

                                            C'est pour comparer l'allocation en C et en C++, mais je n'ai en effet pas forcément pris un exemple des plus pertinents.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              4 décembre 2013 à 12:45:10

                                              Certes, la syntaxe devrait changer quand on n'aime pas répéter des choses (type et taille du type), ou quand il y a un besoin de construction.

                                              Mais quand on critique les mauvaises pratiques du C, ce n'est pas malloc Vs new que l'on critique, mais new[] Vs vector, delete Vs RAII.

                                              • 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.
                                                4 décembre 2013 à 18:52:33

                                                Quelqu'un serait disponible au cas ou je tiens plus la route ? ( Via Skype ) :p
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  4 décembre 2013 à 18:54:47

                                                  Si tu as une question, il suffit de la poster sur le forum (après avoir fait tes propres recherches).
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

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

                                                    5 décembre 2013 à 16:07:31

                                                    Oui, mais je sens que genre si je ne comprend pas quelque chose je vais laisser au lieu de demande ( crée un poste pour chaque question ^^ )
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      5 décembre 2013 à 20:54:03

                                                      Bonjour, j'ai une question qui est un peu en rapport avec le sujet

                                                      A savoir dans quel cas on va programmer en C et dans quel cas on va plutôt privilégier le C++

                                                      Si vous avez des exemples concrets.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        5 décembre 2013 à 20:55:20

                                                        Le C est principalement dans la programmation système, me semble-t-il.

                                                        C++ est plus utilisé, comme par exemple dans l'embarqué, le jeu vidéo, etc...

                                                        (infos à vérifier, je n'affirme rien ^^)

                                                        -
                                                        Edité par TTT 5 décembre 2013 à 20:55:42

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          5 décembre 2013 à 21:13:28

                                                          Bibilerikiki a écrit:

                                                          A savoir dans quel cas on va programmer en C et dans quel cas on va plutôt privilégier le C++

                                                          Si vous avez des exemples concrets.

                                                          Quand on veut grossièrement, avant le C était plus utilisé dans l'embarqué, maintenant il semble que plus grand chose ne s'oppose à l'usage du C++ dans le même domaine.

                                                          -
                                                          Edité par LoupSolitaire 5 décembre 2013 à 21:13:57

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Blond, bouclé, toujours le sourire aux lèvres...

                                                            5 décembre 2013 à 21:20:35

                                                            Bibilerikiki a écrit:

                                                            Bonjour, j'ai une question qui est un peu en rapport avec le sujet

                                                            A savoir dans quel cas on va programmer en C et dans quel cas on va plutôt privilégier le C++

                                                            Si vous avez des exemples concrets.


                                                            La logique voudrait que l'on ne programme en C que si l'on ne travaille pas dans un environnement supportant C++. Après en pratique...
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Pony : Un langage à acteurs sûr et performant
                                                              5 décembre 2013 à 21:26:17

                                                              Ou quand la complexité du C++ n'est pas nécessaire.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Etudier le C puis le 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