Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours C++ bases et POO

Que faut-il en penser?

Sujet résolu
    16 février 2024 à 11:26:48

    Bonjour, 

    Je suis un étudiant ingénieur de 20 ans qui à pour vocation de plus tard travailler dans l'informatique, pour ma culture et connaissance personnelle et aussi pour pouvoir être polyvalent, j'ai décidé de commencer à apprendre le langage de programmation C++ (je précise que ce n'est pas le premier langage que j'apprends, j'avais déjà des notions plus ou moins approfondies en python, html et css). Je connaissais déjà le site de OpenClassrooms, qui m'a notamment aidé dans mon apprentissage de Html et Css.

    J'en arrive au coeur de ma question, j'ai donc suivis et fini le cours des bases de C++ et commencé celui de la POO, mais voilà, j'ai vu un bon nombre d'articles critiquant ces cours. Et voulant surtout avoir une connaissance des langages de programmations qui ne s'arrête pas à une utilisation personnelle mais à une utilisation professionnelle, je voulais savoir si suivre ces cours était une bonne chose aujourd'hui (les bonnes manières de faire ont-elles changées; conventions; etc...).

    Si la réponse à cette question est "non", alors existe t-il aujourd'hui des vrais bons cours, mis à jours régulièrement, qui me permettrais alors de pouvoir utiliser ce langage dans un contexte professionnel. Et surtout si de tels cours existes, sur quels sites les trouver ? Aussi y à ces sites sont-ils aussi bons pour apprendre d'autres langages pour une utilisation pro (javascript; php; ou même encore python html ou css)?

    J'essaye aussi de commencer à apprendre à utiliser Qt pour pouvoir faire des interfaces utilisateurs, mais justement, je préférais avoir des "vraies" bonnes connaissances en C++ avant de commencer à apprendre à utiliser Qt.

    En espérant que quelqu'un prendra le temps de répondre à mon message :)

    -
    Edité par FélixCabanel2 16 février 2024 à 11:27:24

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2024 à 14:39:50

      Salut,

      Le C++ a beaucoup changé depuis ses débuts, et même la façon de voir les choses a fortement changé.

      On parle de C++ moderne celui d'après 2011, et ancien celui avant.

      Le cours C++ de ce site est un cours ancien. Donc il manque plein de choses modernes (et il parait aussi qu'il y a pas mal de coquilles).

      Donc un cours de C++ moderne est surement mieux pour toi (gbdivers en a fait un, il va surement passer par ici bientôt je pense).

      Après, pour relancer le débat, bien que le C++ moderne est plus propre, beaucoup de gens codent encore en C++ ancien : tu parles de monde professionnel, dans ce monde il y a des gens qui codent depuis de décennies et n'ont jamais évolué, tu seras donc confronté aussi à du vieux C++.

      Et pire, il y a même des profs qui enseignent encore le C++ ancien (et ça, c'est craignos, mais ça montre qu'on va se trimballer d'anciens concept un loooog moment encore)

      -
      Edité par Fvirtman 16 février 2024 à 14:40:33

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        16 février 2024 à 14:52:48

        En poursuivant mes recherches je suis tombé sur le cours de informaticienzero et mehdidou99 sur zestedesavoir, qui à l'air d'être un des meilleurs cours en français apparemment et qui se base sur le cours de gbdivers. Du coup je survole un peu le cours pour voir les "erreurs" d'apprentissage qu'ont pu me transmettre les cours d'openclassrooms.

        Merci pour ta réponse en tout cas ;)

        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2024 à 15:35:37

          > On parle de C++ moderne celui d'après 2011, et ancien celui avant.

          On parlait de Modern C++ Style et par abus de Modern C++ dès 2002 (non, je n'ai pas inversé les 2 derniers chiffres). La modernité commence avec le RAII, et l'exploitation de la bibliothèque standard.

          Depuis, shitfs sémantiques, et certains associent C++ Moderne à C++11... et seront tout autant capables de gérer la mémoire à la main, ce qui est l'antithèse de la modernité en C++.

          -----

          Sinon, oui. En VF, c'est le cours de ZdS que l'on conseillera. Voire même la version bêta qui est plus à jour. Et suite à la sortie du livre tiré du tuto, je ne sais pas à quel point il y aurait d'autres mises à jour. Ce qui n’empêche qu'il s'agira d'un excellent point de départ.

          -
          Edité par lmghs 16 février 2024 à 15:36:35

          • 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.
            16 février 2024 à 16:24:04

            > il y a même des profs qui enseignent encore le C++ ancien

            Ils n'enseignent pas le C++, ils essaient d'enseigner les bases de la programmation, en utilisant des rudiments du langage C++ (du C amélioré + des classes), certainement.

            Après, vous connaissez des formations dont on puisse dire qu'elles enseignent "le C++", c'est à dire prétendent donner une bonne connaissance de, disons, 80 % des concepts du langage C++ ? Et leur application à bon escient ?

            On parle bien du truc dont le dernier standard fait 2121 pages ? :-)




            -
            Edité par michelbillaud 16 février 2024 à 16:27:04

            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2024 à 16:26:56

              FélixCabanel2 a écrit:

              Si la réponse à cette question est "non", alors existe t-il aujourd'hui des vrais bons cours, mis à jours régulièrement, qui me permettrais alors de pouvoir utiliser ce langage dans un contexte professionnel. Et surtout si de tels cours existes, sur quels sites les trouver ? Aussi y à ces sites sont-ils aussi bons pour apprendre d'autres langages pour une utilisation pro (javascript; php; ou même encore python html ou css)?

              Vu ton profile, je te conseille de te diriger vers Tour of C++. C'est un livre qui fait un tour rapide du C++ (pour ceux qui savent deja programmer dans un antre langage ou veulent se mettre a jour), il est a jour (publiée en 2022 pour la 3eme edition), en anglais (je suppose que c'est pas un problème pour toi) et rapide a lire (300 pages).

              En second livre, Professional C++. A jour aussi (publié en 2021 pour la 5eme édition), beaucoup plus complet (1300 pages !).

              Et si tu n'as pas les moyens pour acheter ces livres, je te conseille de regarder sur libgen.

              EDIT : pour Qt, je n'ai pas trop suivi les publications récentes. Peut être un livre comme "Cross-Platform Development with Qt 6 and Modern C++" mais je ne l'ai pas lu. Pour Qt, c'est moins important d'avoir un bon livre, la documentation officielle de Qt est deja très bonne.

              EDIT4 : en complément, je te conseille la chaine YouTube de la CppCon, la grosse conférence sur le C++. En particulier les "Back to basic".

              Fvirtman a écrit:

              (gbdivers en a fait un, il va surement passer par ici bientôt je pense).

              EDIT2 : je n'avais pas le temps de maintenir a jour mon cours, j'ai donc préféré le supprimer plutôt que laisser un cours obsolète en ligne.

              Fvirtman a écrit:

              tu parles de monde professionnel, dans ce monde il y a des gens qui codent depuis de décennies et n'ont jamais évolué, tu seras donc confronté aussi à du vieux C++.

              EDIT3 : hors sujet, mais quand on recherche un boulot et qu'on fait des entretiens d'embauche, c'est pas uniquement pour savoir si on convient pour l'entreprise, mais aussi si l'entreprise nous convient. Je conseille fortement de se renseigner sur les méthodes de dev de l'entreprise. Et si l'entreprise est dans le caca niveau process, les devs le seront aussi (probablement) niveau connaissances. Choisir une entreprise qui sait faire évoluer ses process, c'est souvent le signe qu'on va pas devoir se battre contre l'entreprise pour faire du bon boulot.

              Il y a une grosse différence entre un dev qui fait du code old school et n'a jamais fait évoluer ses connaissances et une dev qui doit maintenir du code legacy old school mais s'est maintenu a jour.

              michelbillaud a écrit:


              Après, vous connaissez des formations dont on puisse dire qu'elles enseignent "le C++", c'est à dire prétendent donner une bonne connaissance de, disons, 80 % des concepts du langage C++ ? Et leur application à bon escient ?

              Oui. 2 que je connais (de réputation), enseignants dans des facs fr et sont a jour (je les connais via la CppCon).

              Un livre comme Tour of C++, qui est largement suffisant pour un prof qui veut se maintenir à jour et qui couvre plus que le programme de base d'un cours de C++, fait 300 pages. Avec une nouvelle norme (et donc une nouvelle édition) tous les 3 ans, ca fait 100 pages a lire par an, soit 1/3 de page pour jour.

              Ne pas être un minimum à jour, cela veut dire n'avoir jamais lu quoi que ce soit sur le C++ pendant plusieurs années. C'est chaud quand même d'être aussi peu au courant sur un cours qu'on donne.

              -
              Edité par gbdivers 16 février 2024 à 16:51:34

              • Partager sur Facebook
              • Partager sur Twitter
                17 février 2024 à 8:47:47

                > j'en connais 2 dans des facs

                Voilà un échantillon représentatif :-)   

                Qu'ils connaissent bien un sujet, c'est une chose, mais qu'ils prétendent l'enseigner in extenso ? Pour quel public ? Avec quel volume horaire ?

                La plupart du temps ce n'est pas l'objet du cours, mais un moyen de faire pratiquer autre chose (bases d'algorithmique etc), avec un langage choisi pour des raisons x ou y il y a un certain temps, dont on peut charitablement supposer qu'elles leur paraissaient bonnes à ce moment-là. On fait avec un tout petit sous-ensemble du langage, en passant évidemment à coté de ce qu'on pourrait faire mieux/proprement avec le reste, mais le temps est limité. Ce choix fait, ca perdure des années, des décennies. Sinon ils auraient abandonné ce vieux langage tordu qui s'effondre sous le poids des complications rajoutées au fil des ans pour en boucher les trous.

                (Personnellement j'ai vécu "pascal n'intéresse pas l'industrie, et C++ c'est plus moderne que C, d'ailleurs M$ s'y met, et mon thésard qui est très fort dit que c'est bien, et puis y en a d'autres qui font pareil")

                -
                Edité par michelbillaud 17 février 2024 à 9:01:48

                • Partager sur Facebook
                • Partager sur Twitter
                  17 février 2024 à 13:19:50

                  Salut

                  michelbillaud a écrit:

                  La plupart du temps ce n'est pas l'objet du cours, mais un moyen de faire pratiquer autre chose (bases d'algorithmique etc),

                  Le truc, c'est qu'il y a tout à fait moyen d'enseigner l'algorithmie ... Sans passer par le moindre langage de programmation. Et qu'il y a même moyen de le faire de manière ludique et intéressante pour les étudiants!

                  Je le sais bien, j'ai eu un tel cours, pour lequel les seuls choses que l'on utilisait étaient un papier et un crayon! (et l'un des meilleurs cours que j'aie eu lors de mon bachelor)

                  Le truc, c'est que passer par un langage -- quel qu'il soit -- pour enseigner les principes de la programmation revient trop souvent à les enseigner de manière "biaisée", ne serait-ce que à cause de la philosophie propre au langage envisagé.

                  Et cela revient donc un peu à dire que l'on va nous apprendre l'italien afin de nous apprendre le latin...

                  Regarde java, par exemple : c'est un des langages préférés pour apprendre les notions de programmation orientée objets.  A ceci près que java fait une distinction très forte entre l'héritage de classes et l'implémentation d'interfaces.

                  Ce n'est pas un mal en soi, car cette distinction est pour le moins intéressante.  Sauf que, lorsque tu martèle la règle -- propre à java  (et suivie par d'autre langage par la suite) --- qu'il ne peut y avoir qu'un héritage de classe, mais que le nombre d'implémentations d'interfaces est libre, tu imposes dans l'esprit des gens le fait qu'il s'agisse de deux choses totalement différentes.

                  Or, il se fait que l'héritage de classes et l'implémentation d'interfaces ne sont en définitives que les deux faces d'une même pièce, car ils sont tous les deux la mise en oeuvre d'un principe de conception unique : la substituabilité, dont les règles sont définies par le LSP.

                  Et bien sur, il est vain d'essayer de convaincre un développeur java que ce n'est pas vrai que java ne supporte pas l'héritage multiple, qu'il est même l'un des langages qui le favorise le plus en permettant l'héritage de classes et l'implémentation d'interfaces, car ils te prétendront mordicus que ce sont deux concepts tout à fait différents.

                  Seulement, bien qu'incapables de citer le principe de conception -- autre que la substituabilité -- sur lequel se base l'implémentation d'interfaces, et pour cause, car il n'existe pas, ils refuseront malgré tout d'admettre que nous sommes bel et bien en présence de la notion de sous-typage, telle que formalisée par le principe de Liskov.

                  Ceci étant dit, le fait est que si les profs se mettaient un tant soit peu à niveau et qu'ils acceptaient l'idée de réorganiser leur cours pour parler des différents éléments dans un ordre différent (n'impliquant pas de parler de pointeurs et d'allocation de la mémoire dés le deuxième cours), tu serais étonné de voir le niveau de connaissance que les étudiants pourraient atteindre en à peine soixante heures de cours ;-)

                  • 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
                    17 février 2024 à 16:27:50

                    Prenons un parallèle : les cours de physique utilisent les maths.  Et cette utilisation fait bien rigoler les vrais matheux.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 février 2024 à 18:18:12

                      Prenons un parallèle : un prof de géographie qui parlerait de l'URSS ou du président Chirac passerait pas mal pour un con de ne pas avoir mit a jour ses connaissances depuis 20 ans.

                      J'ai du mal a voir en quoi ça serait acceptable pour un prof d'info de ne pas avoir mit a jour ses connaissances.

                      A la rigueur, plutôt que passer 20h a faire un cours de C++ tout moisi, ça serait peut être plus profitable pour ses étudiants et pour lui de dire à ses élèves qu'il n'a pas les connaissances pour leur faire cours, de leur dire de lire le livre Tour of C++ et lui même de poser son cul sur une chaise pendant ces 20h de cours et lire ce livre.

                      EDIT : la discussion sur les écoles privées revient souvent sur le discord NaN. En particulier avec l'argument que l'enseignement classique est tout moisi (et je peux pas leur donner complètement tort). Une chose est sur : l'argument que les profs n'ont pas le temps, pas les moyens, que leur chien a mangé leur copie, etc. les élèves s'en tapent et ils ont raison. Ils ont des mauvais cours et ils n'ont pas de raison d'accepter cela. Et les profs sont en partie responsable de cela.

                      -
                      Edité par gbdivers 17 février 2024 à 18:26:49

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 février 2024 à 22:47:47

                        gbdivers a écrit:

                        Prenons un parallèle : un prof de géographie qui parlerait de l'URSS ou du président Chirac passerait pas mal pour un con de ne pas avoir mit a jour ses connaissances depuis 20 ans.


                        Si je voulais partir dans la politique concernant les profs d'Histoire, je dirais que même s'ils savent qui est président actuellement, certains raisonnent encore totalement comme si le communisme était prépondérant ! :lol: 

                        Sinon, concernant la remarque sur la façon de coder des entreprises, hélas il y a des cas ou une entreprise vend des libs, et certains de ses gros clients exigent des libs compatibles avec des vieux compilos (parce qu'eux ne veulent pas se mettre à jour de leur coté, mais veulent qu'on maintienne ça....)

                        Et dans ce cas hélas, on ne peut pas utiliser les concepts trop modernes, car ils ne compileraient pas sous de vieux compilos...

                        Il y a aussi le cas ou la boîte a 30 ans de code qui marche derrière elle, et parfois quand il y a besoin de modifier du vieux code, ou bien brancher une nouvelle fonctionnalité au vieux code, ben dur de faire propre.

                        D'ailleurs - a moins qu'ils aient changé - mais qT a longtemps proposé des pointeurs (raw pointers) vers ses classes, alors que l'aspect moderne voudrait qu'on passe par des unique_ptr ou des shared_ptr...

                        Mais hélas, à moins de tout péter, tout réformer, ben on est obligé de se trimballer les vieux pointeurs....

                        -
                        Edité par Fvirtman 17 février 2024 à 22:50:01

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                          17 février 2024 à 23:34:55

                          Fvirtman a écrit:

                          il y a des cas

                          Que cela existe, on peut pas le nier.

                          Que cela soit prépondérant, c'est très discutable.

                          Que cela serve d'excuse pour justifier que les profs ne soient pas a jour, c'est du bullshit.

                          Et il y a une grosse différence entre enseigner les pointeurs nus quand on est a jour sur ses connaissances et qu'on pense que c'est encore nécessaire de les enseigner -- ce que je comprend tout a fait -- et les enseigner parce qu'on ne connait que cela parce qu'on n'a pas mit a jour ses connaissances depuis 20 ans.

                          -
                          Edité par gbdivers 17 février 2024 à 23:36:59

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 février 2024 à 23:58:12

                            > A la rigueur, plutôt que passer 20h a faire un cours de C++ tout moisi, ça serait peut être plus profitable pour ses étudiants et pour lui de dire à ses élèves qu'il n'a pas les connaissances pour leur faire cours, de leur dire de lire le livre Tour of C++

                            Ah bon, et tu arrives à le lire, étudier des exemples pour comprendre, mettre en application par des projets et tout ça en 20h, tout en essayant de maitriser des bases d'algorithmiques ?

                            Tu enseignes à des génies, ou la programmation est devenu un truc facile que tu peux apprendre en la moitié d'une semaine ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 février 2024 à 1:23:05

                              michelbillaud a écrit:

                              Ah bon, et tu arrives à le lire, étudier des exemples pour comprendre, mettre en application par des projets et tout ça en 20h, tout en essayant de maitriser des bases d'algorithmiques ?

                              20h par année pendant lesquelles ils ne se sont pas mit a jour, ils auraient eu le temps de lire Tour of C++.

                              Se mettre à jour après avoir rien fait pendant 20 ans, c'est normal que cela soit vu comme une tache impossible. Se remettre un peu à jour chaque année, c'est une tache possible.

                              michelbillaud a écrit:

                              Tu enseignes à des génies, ou la programmation est devenu un truc facile que tu peux apprendre en la moitié d'une semaine ?

                              La contrainte de temps est la même, que le prof mette a jour ou pas ses connaissances.

                              C'est quoi l'argument ? Que comme les profs n'ont pas le temps de faire un cours correct, alors pourquoi s'embêter à mettre a jour leur connaissances et essayer ?

                              Je crois que ce qui est plus aggacant qu'une personne qui ne fait pas correctement son boulot, c'est une personne qui se cherche des excuses pour justifier cela.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 février 2024 à 7:57:32

                                L'argument, c'est que le boulot qui leur est demandé, ce n'est pas du tout d'enseigner le langage C++. Comme le prof de physique n'est pas là pour enseigner les maths, et va utiliser un truc pourri pour résoudre l'equa diff compliquée qui apparaît dans la résolution d'un problème.

                                Pour prendre un autre exemple,  certains de mes collègues essayaient d'inculquer aux chères têtes blondes les bases de la "programmation évenementielle". Pour ca ils faisaient  - à ce que j'en sais - des formulaires sous windows, des callbacks sur des boutons, des trucs comme ca. 

                                De là à conclure que ce sont des "profs de windows" ?  De leur reprocher de ne pas connaître tous les machins de la bibliothèque, et donc de ne pas utiliser les bons que les pros connaissent?  D'avoir une ou deux versions de retard ?

                                (Et de ne pas avoir mis à jour leur connaissance de l'orthographe et de la grammaire françaises dans leurs écrits publics ? :-)) 

                                Bref, faudrait un peu revenir aux réalités concrètes au lieu de gueuler que les autres font pas leur boulot, et se poser les questions

                                • À qui on enseigne
                                • L'objectif réel du cours 
                                • Les modalités : temps à y consacrer en cours, nombre et taille des projets à réaliser.

                                Parce qu'un cours de 100h consacré spécifiquement  à C++ pour des ingénieurs qui savent déjà programmer dans un vrai langage, effectivement ça serait pas bien que ça soit en C++ du siècle dernier. Et qu'on file ce cours à un physicien qui n'a pas son nombre d'heures de cours dans sa spécialité.

                                Après, si c'est pour s'extasier sur le tri à bulles et fibonacci pour de l'initiation en 20h en essayant de ne pas dégoûter les 1ere année de psycho... la part de C++ là dedans n'a guère d'importance.

                                Mais si on s'intéresse aux choses importantes, et au travail bien fait, faut voir du côté des professionnels de la profession, dont le boulot est de produire et maintenir du code C/C++ .  Est-ce qu'on leur reproche la dette technique, les pratiques moyenageuses, la securité mal prise en compte etc ?  Et la cause c'est qu'ils ont appris à faire des boucles avec un C++ d'il y a 20 ans ?

                                -
                                Edité par michelbillaud 18 février 2024 à 8:31:34

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 février 2024 à 19:50:21

                                  michelbillaud a écrit:

                                  faudrait un peu revenir aux réalités concrètes

                                  A mon sens, c'est pour cela qu'on tourne en rond systématiquement sur cette discussion à chaque fois qu'on l'aborde. Tu explique pourquoi les cours C++ sont moisis.

                                  Ok. Vu. Je m'en tape. Ce que je constate, c'est qu'ils sont moisis. 

                                  A chaque fois qu'un étudiant demande quelle formation suivre, on leur conseille de suivre des études classiques et d'éviter les discours marketing des écoles. Mais en même temps, on sait qu'il y a de fortes chances qu'ils vont avoir certains cours qui seront complètement moisis. C'est juste une loterie pour savoir quels cours seront bien ou pas.

                                  Comment leur dire "n'allez pas dans une école sans prof et sans pédagogie" quand les formations classiques avec prof vont leur enseigner des choses fausses ou inutiles, qu'ils vont devoir réapprendre par eux même, seul, sans les profs ?

                                  Heureusement, le global de la formation fait que cela reste mieux (je pense). Mais il ne faut pas se faire d'illusion, si la situation persiste (j'espère que non, les vieux profs obsolètes finiront par partir à la retraite), il arrivera un moment où il sera mieux d'apprendre seul qu'avec un prof moisis.

                                  Anecdote perso, j'ai connu 2 profs comme ça au lycée. Et ils avaient de bonnes raisons pour justifier que leur cours étaient moisis. Mais quand tu es dans la position d'élève et que tu as le bac derrière, c'est complètement inacceptables.

                                  Pour cela que je conseille plutôt des études d'ingé. Ou si on fait une licence-master, d'accepter que les premières années seront pénibles et qu'il faut s'accrocher.

                                  Seul l'intérêt des élèves est pertinent, pas les excuses des profs.

                                  michelbillaud a écrit:

                                  Mais si on s'intéresse aux choses importantes, et au travail bien fait, faut voir du côté des professionnels de la profession, dont le boulot est de produire et maintenir du code C/C++ .  Est-ce qu'on leur reproche la dette technique, les pratiques moyenageuses, la securité mal prise en compte etc ?  Et la cause c'est qu'ils ont appris à faire des boucles avec un C++ d'il y a 20 ans ?

                                  Ben oui. Les clients gueulent quand les produits mettent du temps a sortir, quand ils sont bugé. Et les entreprises gueulent quand les clients gueulent. Et les devs gueulent de devoir bosser sur du code de merde, difficile a maintenir et qu'ils passent plus de temps à tracker les bugs qu'a fait leur boulot.

                                  Et une partie du problème est que effectivement, les devs ne se sont pas forcément mit a jour pendant 20 ans et qu'ils font un boulot de merde.

                                  J'ai connu le cas d'une boite qui a viré toute son équipe de devs, sauf les 2 derniers devs arrivés, qui étaient a jour.

                                  C'est pas acceptable dans les entreprises en général, donc il n'y a aucun raison que cela soit acceptable de former les étudiants comme cela.

                                  -
                                  Edité par gbdivers 18 février 2024 à 19:51:00

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 février 2024 à 23:12:25

                                    De mon coté, je constate que les cours s'améliorent. Les "jeunes" sortis de l'école/fac ne sont pas forcément prêts à l'emploi, mais leur réflexes en C++ sont d'utiliser les vecteurs ou les strings.  Certes il va leur manquer plein de subtilités du langage (car l'objectif est rarement d'enseigner le C++) et même du génie logiciel (quand on continue à enseigner l'héritage à base de pointcolore qui derive de point), mais franchement, ils sont moins susceptibles de produire de la grosse dette technique à la C/C++ que leurs aïeux.
                                    • 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.
                                      19 février 2024 à 0:23:23

                                      lmghs a écrit:

                                      De mon coté, je constate que les cours s'améliorent. (...) mais leur réflexes en C++ sont d'utiliser les vecteurs ou les strings.

                                      Corrélation ou causalité ? Tu leur demande s'ils ont appris via un prof ou s'ils ont du apprendre par eux même ?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 février 2024 à 1:18:40

                                        Les collègues que j'avais en formation et qui ont croisé le C++ avant la formation cochent une ou plusieurs des cases:

                                        - prof qui utilise vector & string -- pour ceux&celles qui ont une formation informatique (VS formations scientifiques -- qui enseignent rarement le C++)

                                        - code en maintenance qui utilise vector & string (=> c'est rare qu'ils/elles n'aient pas une base C++ avant et passent juste par une case autoformation -- mais il y en a quand même)

                                        Bref, une accélération dans le bon sens depuis ces 5 dernières années. Avant j'en avais même eu un qui avait eu Joel en prof, je ne lui ai pas appris grand chose.

                                        • 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.
                                          19 février 2024 à 11:06:10


                                          lmghs a écrit:

                                           leur réflexes en C++ sont d'utiliser les vecteurs ou les strings.  Certes il va leur manquer plein de subtilités du langage (car l'objectif est rarement d'enseigner le C++) et même du génie logiciel (quand on continue à enseigner l'héritage à base de pointcolore qui derive de point), mais franchement, ils sont moins susceptibles de produire de la grosse dette technique à la C/C++ que leurs aïeux.


                                          Quand il faudra enfin se décider à traiter des chaînes Unicode ?  :-)

                                          Pour les présentations pourries de l'héritage (les hiérarchies d'animaux ou de véhicules), il me semble que ça peut s'expliquer historiquement.  Ca sort des premières conférences/exposés etc des années 80 (par les meilleurs spécialistes) qui présentaient la notion d'héritage, c'était des exemples simples et amusants destinés à des programmeurs chevronnés supposés capables de les prendre avec le proverbial grain de sel du bon sens.  Plus simple que d'aborder par les bibliothèques de composants d'interface utilisateur, par exemple, qui nécessitent de longs préliminaires pour ceux qui ne connaissent pas. Tout le monde ne pratique pas Smalltalk 80.   Et puis ça a percolé dans les bouquins, dans lesquels les enseignants de C++ ont pompé ça comme exemples "pédagogiques".

                                          Enfin, c'est assez puéril de décréter que telle ou telle profession ne fait pas son boulot. Que ce soit prof ou développeur ou autre, chacun fait son job avec un certain nombre de contraintes, genre temps à  consacrer à telle ou telle partie du job, importance relative,  exigences de la hiérarchie etc. Si les résultats ne sont pas satisfaisants, il faut agir sur les causes, pas aboyer après les personnes.


                                          PS: vérifié dans "Le Langage C++" 2ieme ed. de Stroustrup himself, 1991 : les exemples c'est shape dans l'introduction, et personnel/employé/manager; véhicules plus loin etc.

                                          Mauvaise pioche pour les employés, on est obligés de les détruire d'abord pour les réincarner si on veut les promouvoir en managers.

                                          (en fait les personnels devraient avoir un champ qui indique leur fonction, qui peut changer au cours du temps. Composition over inheritance, toussa.)

                                          Dans Programming, Principles and Practice using C++, du même 2nd ed 2014, l'héritage n'arrive que vers la page 500 (avec les shapes). Les classes sont présentées plus tôt (page 300), mais en mettant l'accent sur l'encapsulation. Seule mention de l'héritage multiple p 1127 dans l'annexe sur le langage. Pointeurs dans le chapitre 17 pour l'allocation dynamique, pas de smart pointers en vue. Mais bon, Stroustrup, qu'est-ce qu'il connaît à C++ à l'enseignement, et aux besoins des professionnels ? :-)

                                          Bref un exemple de cours d'introduction à la programmation en général en utilisant C++, à ne pas confondre avec un cours de C++.

                                          -
                                          Edité par michelbillaud 19 février 2024 à 12:01:01

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 février 2024 à 11:39:29

                                            :D

                                            J'aime beaucoup la réincarnation d'employés en managers. Je la resservirai pour illustrer les erreurs de désign.

                                            Pour des bons exemples, oui c'est compliqué. J'ai pondu une métaphore avec des balais et des aspirateurs que j'ai refilée au tuto de ZdS. Mais je galère toujours à avoir des exo simples/minimalistes qui font travailler un héritage de sous-typage qui soit propre.

                                            • 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.
                                              19 février 2024 à 12:22:38

                                              > erreurs de design

                                              Il y a aussi des usages "anormaux" de l'héritage en C++ qui ne sont pas des erreurs de conception.

                                              Je pense par exemple aux bibliothèques Arduino (*).  On peut avoir une bibliothèque de classes pour utiliser des composants qui ont une base commune, avec des variantes.  C'est raisonnable de factoriser ce qui est commun dans une classe de base (qui n'est pas faite pour être instanciée), et de dériver des classes pour les machins concrets.  Mais il n'y a pas besoin (dans ce contexte) de faire du polymorphisme par héritage (ni de l'allocation dynamique).  L'important ici c'est l'encapsulation, et la réutilisation de code.

                                              (*) qui mériteraient souvent un grand nettoyage. Savoir lire et exploiter une datasheet pour en faire du code qui marche est une compétence inestimable, programmer proprement pour avoir du code maintenable, documenté, et réutilisable en est une autre, visiblement différente.

                                              -
                                              Edité par michelbillaud 19 février 2024 à 12:44:28

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Cours C++ bases et POO

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              • Editeur
                                              • Markdown