Partage
  • Partager sur Facebook
  • Partager sur Twitter

Apprendre le C++ ?

    26 juin 2019 à 12:54:36

    Bonjour,

    Je suis un étudiant de seconde année et cela fait un petit moment que nous travaillons le C++ suite a un passage en C. Pour m'aider dans mon apprentissage je m'aider souvent du/des cours du site, le probleme c'est que d'après certain topic de ce forum le cours Programmez en langage C++ serait "obsolete" et apprenderait des "manieres" pas aux gouts du jour.

    Est-ce vrai ? Si c'est le cas, auriez vous des sites ou des ouvrages a me conseiller totalement fiable pour construire (ou instancier hehe :p) des bases solides pour ma formation.

    Merci :)

    -
    Edité par Ligade 26 juin 2019 à 13:03:11

    • Partager sur Facebook
    • Partager sur Twitter
      26 juin 2019 à 13:42:18

      Lu',

      En effectuant une petite recherche sur le forum, j'ai trouvé en quelques secondes ce lien :

      http://guillaume.belz.free.fr/doku.php?id=programmez_avec_le_langage_c

      Etant donné que je ne l'ai pas suivi, je ne sais pas ce qu'il vaut, mais d'après le forum, il serait bien.

      • Partager sur Facebook
      • Partager sur Twitter
        26 juin 2019 à 14:14:11

        Salut,

        Yep il n'est pas bon. Je vais copier une partie du message classique de @Ksass`Peuk.

        Prends plutôt le tutoriel disponible sur Zeste de Savoir. Ou encore le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures (et si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours, tu peux poster ici). Si tu préfères un cours déjà complet, tourne toi vers le C++ Primer de Lippman dans sa dernière édition (en anglais), il sera un poil moins à jour mais c'est un bon cours.

        • Partager sur Facebook
        • Partager sur Twitter
        Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
          26 juin 2019 à 15:17:59

          Ou peut-être celui ci : https://bruce-eckel.developpez.com/livres/cpp/traduction/ticpp2vol1/

          yo@n97one a écrit:

          Yep il n'est pas bon. 

          Toi tu es fort, du déconseille un tuto et ensuite tu le conseilles !?!

          En fait on se demande si tu regarde ce que tu déconseilles, de plus ce n'est pas la première fois !

          -
          Edité par rouloude 26 juin 2019 à 15:22:33

          • Partager sur Facebook
          • Partager sur Twitter
            26 juin 2019 à 15:35:29

            "Yep, il n'est pas bon" est la confirmation des doutes du post original, pas la réponse au message juste au dessus, c'est le cours d'OC qu'il déconseille

            J'ai pas lu le cours que tu proposes, mais il date de 2008, avant les versions majeures du C++ 11/14/17, et de plus le sommaire ne m'inspire pas confiance, l'enseignement est trop basé sur le C, ça m'a l'air d'être un cours de "C with classes". Le cours de Zeste de Savoir commence à être un très bon morceau, je le conseille fortement. Celui de GBDivers est très précis et vaut le coup d'oeil également, mais te tient peut-être un peu moins la main.

            • Partager sur Facebook
            • Partager sur Twitter
            Dream on, Dream on, Dream until your dream comes true
              26 juin 2019 à 15:44:23

              romantik a écrit:

              "Yep, il n'est pas bon" est la confirmation des doutes du post original, pas la réponse au message juste au dessus, c'est le cours d'OC qu'il déconseille

              Effectivement, c'est pas faux. mais ça peut prêter à confusion.

              Les cours proposés sont certes récents, mais ne sont pas complet, alors pour des débutants, c'est peut-être pas l'idéal.

              -
              Edité par rouloude 26 juin 2019 à 15:45:19

              • Partager sur Facebook
              • Partager sur Twitter
                26 juin 2019 à 15:53:40

                J'aurais dû être plus précis, je confirmais les propos de l'OP (vu que la prmière réponse disait que le tutoriel de gbdivers est bon, si je voulais aller contre, je n'aurais pas dit « yep il n'est pas bon », mais plutôt « nope, il n'est pas bon »). ;)

                Sinon, le tutoriel de ZdS a maintenant beaucoup de contenu (quatre parties, une vingtaine de chapitre). De quoi bien mettre le pied à l'étrier.

                -
                Edité par yo@n97one 26 juin 2019 à 15:53:56

                • Partager sur Facebook
                • Partager sur Twitter
                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                  26 juin 2019 à 18:38:36

                  Hello,

                  De plus, lorsque je lis :

                  Les cours proposés sont certes récents, mais ne sont pas complet, alors pour des débutants, c'est peut-être pas l'idéal.

                  C'est cool, mais un cours non fini ne veux pas forcement dire un cours non suffisant.

                  Les auteurs peuvent avoir des exigences qui font que le cours n'est pas fini pour eux. :)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Architecte logiciel - Software craftsmanship convaincu.

                    26 juin 2019 à 18:45:36

                    Salut,

                    Attention le TIC (Thinking In C++  / Penser en C++, de Bruce Eckel) commence lui aussi à dater énormément :'(

                    Il n'était pas trop mal à l'époque où on en a fait la traduction, mais il y a (beaucoup) d'eau qui a coulé sous les ponts (re :'()

                    A l'heure actuelle, on peut à peine dire qu'il est "moins pire" que le cours du site, ce qui ne le place vraiment pas dans la catégories des cours qu'il faut conseiller aujourd'hui (re re :'( )

                    • 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
                      26 juin 2019 à 18:59:43

                      Bonsoir,

                      Oups !

                      yo@n97one a écrit:

                      ... Sinon, le tutoriel de ZdS a maintenant beaucoup de contenu (quatre parties, une vingtaine de chapitre). De quoi bien mettre le pied à l'étrier. ...

                      Je n'en vois que 3! Il y a une subtilité sur le site ZDS que je connais pas, pour voir le 4ème ?  :euh:
                      Merci ... merci pour la réponse ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 juin 2019 à 19:35:23

                        Lorsque tu es identifié tu peux accèder à la version bêta, On peut y voir le plan de la prochaine section sur la Programmation Orienté Objet, mais il n'y a aucun contenu pour le moment
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Dream on, Dream on, Dream until your dream comes true
                          26 juin 2019 à 20:26:36

                          Je conseille plutot le cours de ZdS.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 juin 2019 à 21:40:37

                            Oups, je ne sais plus compter jusqu'à trois. :honte:

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                              27 juin 2019 à 9:55:30

                              romantik a écrit:

                              Lorsque tu es identifié tu peux accèder à la version bêta, On peut y voir le plan de la prochaine section sur la Programmation Orienté Objet, mais il n'y a aucun contenu pour le moment

                              C'est dommage car j'aurais justement préféré aussi avoir un cours pour la POO. C'est LA partie en C++ :(

                              Une autre question, qu'est ce qui fait que le cours d'OC est obsolete ? Auriez vous des exemples concrets ?

                              -
                              Edité par Ligade 27 juin 2019 à 9:56:11

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juin 2019 à 10:14:16

                                Ligade a écrit:

                                C'est LA partie en C++ :(

                                Bof++.

                                Ligade a écrit:

                                Une autre question, qu'est ce qui fait que le cours d'OC est obsolete ? Auriez vous des exemples concrets ?

                                L'obsolescence c'est pas le principal problème. Mais concrètement il est basé sur C++98/03. Aujourd'hui la norme c'est C++17.

                                Pour les vrais problème du cours (à savoir la quantité démentielles de conneries qu'il contient) : https://informaticienzero.github.io/c++-avec-openclassrooms-ou-comment-perdre-son-temps/

                                • Partager sur Facebook
                                • Partager sur Twitter

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

                                  27 juin 2019 à 10:24:26

                                  Comment ça ? Cette réponse m'intrigue.

                                  L'interet d'apprendre le C++ est principalement pour sa partie poo, jme trompe peut etre?

                                  Merci pour vos liens :)

                                  -
                                  Edité par Ligade 27 juin 2019 à 10:28:09

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juin 2019 à 10:30:51

                                    Oui, en fait l'OO n'est pas nécessairement le fragment le plus intéressant de C++. Bien sûr on l'utilise mais pas nécessairement partout et surtout énormément de choses en C++ ne sont pas OO, à commencer par les conteneurs et les algorithmes de la bibliothèque standard par exemple. Aujourd'hui, C++ tend plutôt à améliorer son fragment fonctionnel plutôt que son fragment OO parce qu'il mène généralement à du code qui est plus facilement prévisible (donc plus maintenable).

                                    Non, les éléments les plus intéressants de C++ sont avant tout sa gestion des ressources et la généricité avec les templates, et c'est orthogonal à l'OO, très clairement.

                                    Après, il ne faut pas me faire dire ce que je n'ai pas dit : il est très utile d'étudier le fragment OO de C++, notamment parce que l'on a très vite fait de faire n'importe quoi avec. Mais ce n'est pas le coeur du langage, et pas son principal intérêt.

                                    • Partager sur Facebook
                                    • Partager sur Twitter

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

                                      27 juin 2019 à 10:34:02

                                      La partie Templating de C++ est je trouve plus intéressante que celle de l'OO.

                                      La maîtriser en plus de la lib standard peux t'aider a coder un gros projet sans une seule classe custom. 

                                      Mais, maitriser l'OO reste un plus, mais faire du mauvais OO est trop facile contrairement a l'utilisation des algorithms de la STL.

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Architecte logiciel - Software craftsmanship convaincu.

                                        27 juin 2019 à 10:36:40

                                        necros211 a écrit:

                                        faire du mauvais OO est trop facile contrairement a l'utilisation des algorithms de la STL.

                                        Tu manques d'imagination :lol:

                                        -
                                        Edité par Ksass`Peuk 27 juin 2019 à 10:36:54

                                        • Partager sur Facebook
                                        • Partager sur Twitter

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

                                          27 juin 2019 à 18:32:51

                                          Bonsoir,

                                          romantik a écrit:

                                          Lorsque tu es identifié tu peux accèder à la version bêta, On peut y voir le plan de la prochaine section sur la Programmation Orienté Objet, mais il n'y a aucun contenu pour le moment

                                          Je le savais, je le savais ... C'est plein de ruse:ninja:

                                          il faut que m'inscrive! (encore un mots de passe à retenir!)

                                          Merci.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 juin 2019 à 22:18:43

                                            Dedeun a écrit:

                                            il faut que m'inscrive!


                                            La vraie question c'est, pourquoi n'était-ce pas déjà le cas ? :p

                                            Dedeun a écrit:

                                            (encore un mots de passe à retenir!)


                                            ou pas
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Dream on, Dream on, Dream until your dream comes true
                                              28 juin 2019 à 10:43:49

                                              Je suis rabat-joie mais bon, moi qui comptais taffer la poo via un cours sur internet c'est raté :colere:
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 juin 2019 à 10:48:50

                                                Comme il y a DES POO (la POO de Smalltalk, d'Objectve-C, Scala, et même en fonction des versions du C++ ne sont pas les même), c'est difficile de savoir où vous voulez aller.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                                  28 juin 2019 à 10:57:53

                                                  bacelar a écrit:

                                                  Comme il y a DES POO (la POO de Smalltalk, d'Objectve-C, Scala, et même en fonction des versions du C++ ne sont pas les même), c'est difficile de savoir où vous voulez aller.

                                                  Celle qui est abordé dans le cours d'OC. Je la considère comme la POO "classique"?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 juin 2019 à 11:04:03

                                                    Vu que l'on est sur le forum C++, on suppose POO de C++ ? Pour la partie POO rien ne t'interdit de prendre des cours plus anciens.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      28 juin 2019 à 11:07:13

                                                      Ah ok j'avais mal compris ton post. Ok très bien je vais voir tout ça. merci
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        28 juin 2019 à 11:18:07

                                                        Ligade a écrit:

                                                        Celle qui est abordé dans le cours d'OC. Je la considère comme la POO "classique"?

                                                        Non, comme de la POO poubelle. C'est un ramassis de conneries cette partie du cours.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

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

                                                          28 juin 2019 à 11:30:53

                                                          Ligade a écrit:

                                                          Celle qui est abordé dans le cours d'OC. Je la considère comme la POO "classique"?

                                                          C'est à dire une POO cassée ? x)

                                                          rouloude a écrit:

                                                          Vu que l'on est sur le forum C++, on suppose POO de C++ ? Pour la partie POO rien ne t'interdit de prendre des cours plus anciens.

                                                          Vrai, la POO étant un principe conceptuel, une ressource plus ancienne peut être intéressante si elle ne s'attache pas trop à son implémentation
                                                          . Mais pas le cours d'OC. N'avez vous pas lu le blog d'informaticien zero référencé par Ksass Peuk ? Son exemple est pourtant parlant, le cours se sert d'opérateurs de copie dans une classe à sémantique d'entité, ce n'est pas un problème d'obsolescence mais une erreur de conception, comme l'utilisation abusive d'accesseurs, on repassera pour la POO.

                                                          Il y a une ébauche dans le cours de gbdivers (parties "Classes à sémantique d'entité" et "Classes à sémantique de valeur") mais je n'ai pas vraiment de ressources à conseiller :/ Peut-être le livre de koala ?

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Dream on, Dream on, Dream until your dream comes true
                                                            28 juin 2019 à 12:42:41

                                                            Je n'ai nullement cité le cours d'OC, il n'y a pas que celui là sur le net !
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              30 juin 2019 à 9:39:15

                                                              Un petit exemple de (mauvaise) POO:

                                                              class Perso
                                                              {
                                                                  std::string nom_;
                                                                  int vie_;
                                                                  int xp_;
                                                              
                                                              public:
                                                              
                                                                  void setNom(std::strng const & n);
                                                                  void setVie(int v);
                                                                  void setXp(int x);
                                                              
                                                                  std::string const & getNom() const;
                                                                  int getVie() const;
                                                                  int getXp() const;
                                                              };

                                                              Ce machin est super lourd a écrire, super lourd a utiliser pour un bénéfice globalement nul. J'aurais écrit

                                                              struct Perso
                                                              {
                                                                 std::string nom_;
                                                                 int vie_;
                                                                 int xp_;
                                                              };

                                                              J'ai un truc plus concis tant à écrire qu'à utiliser, et j'ai un niveau de respect de l'encapsulation exactement égal, donc intérêt de la version POO est largement négatif. Ce genre de truc est typique des cours écrit par des gens qui croient que l'encapsulation est l'alpha et l'oméga de la POO, pour être  cash: qui n'ont strictement rien compris. 

                                                              La POO est une façon de penser la structure de son programme, elle repose fondamentalement sur la notion de service. Un objet est là pour assurer des services (idéalement un seul, en vertu du principe de responsabilité unique) au sein du programme. C'est à partir de ce concept de service à rendre que l'on construit l'objet, pas à partir de données plus où moins vagues et pertinentes.

                                                              Cette notion de service implique par exemple la cohérence, pour être en mesure de rendre le service attendu, l'objet doit demeurer dans un état cohérent de sa création, jusqu’à sa destruction. S'il est possible de placer l'objet dans un état incohérent, il ne sera alors plus possible de garantir que le service sera rendu. C'est ici que l'encapsulation prend son sens, toute manipulation qui pourrait compromettre la cohérence de l'objet, doit être bannie, les setters sont par essence des fonctions qui peuvent compromettre la cohérence d'un objet, il doivent absolument être bannis.

                                                              Un autre exemple, la modularité, Si j'ai deux objets qui rendent exactement le même service, ils sont interchangeables, je peux utiliser l'un où l'autre, ça n'aura aucun effet sur le comportement du programme, par contre l'un des deux pourrait être une version optimisée de l'autre, de sorte qu'en utilisant la version optimisée j'obtiendrai un gain de performances substantiel. Cela peut aussi induire une spécialisation, par exemple, au lieu de sauvegarder sur mon disque dur, je pourrais en changeant juste l'objet qui rend le service de sauvegarde, sauvegarder en gravant un CD, ou en envoyant l'es données sur un serveur à l'autre bout du monde, les commandes pour écrire sur le disque dur, graver un CD ou envoyer sur internet ne sont évidemment pas les mêmes, mais les 3 destinations peuvent obéir à la même contrainte "Aller écrire mes donné quelque part", là on va potentiellement utiliser l'héritage...

                                                              Encore un exemple, la réutilisabilité: Si dans un programme j'ai conçu un objet pour rendre un service précis, je sais que je peux l'utiliser dans un autre programme où j'ai besoin d'un objet qui va rendre le même service.

                                                              En fait toutes les grandes règles de la POO dérivent intrinsèquement de cette notion de service.

                                                              -
                                                              Edité par int21h 30 juin 2019 à 10:20:21

                                                              • 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

                                                              Apprendre 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