Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les cours d'Openclassrooms

mettre à jour les cours ?

Sujet résolu
    20 novembre 2015 à 10:53:37

    Bonjour à toutes et à tous !

    Je crée ce sujet pour avoir quelques réponses si il y en a et avoir vos avis sur la question.

    Je me suis abonné au cours :
    - apprendre à programmer en C !
    - Programmer avec le langage C++

    J'ai essayé ces deux langages de programmation, pour continuer celui qui me plait le plus.
    Mais le gros problème que je rencontre est que les cours ne sont pas à jours.

    Je vais expliquer en quoi pour moi les cours ne sont pas à jours et mes nombreux problème. (je débute en programmation et j'ai peu être faux sur tout les points )

    Pour le cours du langage C :

    je suis arrivé au chapitre de la SDL et là impossible d'ouvrir une fenêtre avec la couleur demander, j'ai beau changer le code, j'aurai toujours une fenêtre toute grise ( je travail avec xcode ) et impossible d'obtenir une autre couleur ou même de faire un dégrader.
    je ne suis pas aller plus loin dans le cours.

    Pour le cours du langage C++ :

    Je ne suis pas aller plus loin que la partie 1. entre les codes fournis en exemple qui ne ce compile pas et les nombreux avis défavorables de suivre ce cours, je me suis arrêté là.

    Bien sur je critique pas les cours qui sont compréhensibles et très abordable pour des débutant, mais ne faudrait il pas mettre à jours certaines parties des cours ?

    Si vous voulez devenir un bon programmeur c'est évidents, vous devez aller vous même chercher dans la documentation les nouvelles syntaxe et les nouvelles normes du langage sur lesquels vous travailler ! mais pour un débutant c'est assez frustrant de voir que tout ce qu'on à appris ne marche pas car ce qu'on a appris n'est plus viable de nos jours. et qu'il va falloir tout réapprendre depuis de début ( ou presque ).

    Comme je l'ai dis plus haut je suis un débutant, il est probable que je dise n'importe quoi et que je ne suis tout simplement pas fait pour devenir programmeur (même si je me suis beaucoup amuser à créer de tout petit programme, à passer des heures à chercher comment faire pour résoudre tel ou tel problème ).

    Donner moi vos avis sur la question ! 
    que pensez vous de ces cours ( langage C et langage C++ ).

    Si j'ai tout faux, j'en suis désolé !

    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2015 à 11:31:54

      Bonjour,

      Je me sens directement concerné en tant qu'auteur / coauteur de ces cours. Je vais donc te dire un peu ce qu'il en est :)

      • Pour le cours de C, c'est effectivement la partie sur la SDL qui n'est plus à jour. Le reste n'est à ma connaissance pas trop concerné. Il faudrait mettre à jour donc la SDL suite à la nouvelle version, ce qui représente un travail non négligeable et qui demande du temps. J'aimerais le faire mais je n'ai pas encore pu dégager du temps pour ça. Aujourd'hui, je pense que je couperais le cours en deux, pour que la SDL soit un cours à part, afin que ça soit plus digeste.
      • Pour le cours de C++, il y a des mises à jour à faire suite aux dernières évolutions du langage. Quant à la partie sur Qt elle doit avoir les mêmes soucis que celle sur SDL : il faudrait la mettre à jour et probablement la séparer dans un autre cours.

      J'en discute avec Matthieu Schaller (co-auteur du cours C++) pour voir comment mettre à jour ce cours sur les bases du langage. Je pense que la priorité va être la suivante :

      Mettre à jour le cours sur C++ (sans Qt) => Mettre à jour SDL, dans un cours à part probablement => Mettre à jour Qt

      Pour Qt c'est celui dont je suis le moins sûr, car il y a moins d'intérêt aujourd'hui pour créer des programmes natifs sur ordinateur. Je préfèrerais qu'on se concentre sur le développement natif mobile et le développement web où il y a beaucoup à faire.

      Enfin, entre mettre à jour le cours SDL et créer un nouveau cours sur la création de jeux vidéo web et mobile avec Phaser, je pense que mon coeur pencherait plutôt pour Phaser. ;) 

      Je vous tiens au courant pour la mise à jour de C++, qui est pour moi le sujet le plus important du lot !

      -
      Edité par Mateo21 20 novembre 2015 à 11:32:48

      • Partager sur Facebook
      • Partager sur Twitter

      If you'd like to join us, read "How do we work at OpenClassrooms"! :)

        20 novembre 2015 à 12:11:54

        Merci pour toutes ces informations !

        J'ai hâte d'avoir accès à toutes cette nouveautés, je sais très bien que ça demande du temps ( et pas qu'un peu ) pour écrire un bon cours.

        Je n'oublis pas que les cours sont en ligne gratuitement j'en suis ultra reconnaissant !
        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2015 à 13:24:23

          Yop,

          Mateo21 a écrit:

          • Pour le cours de C++, il y a des mises à jour à faire suite aux dernières évolutions du langage.

          -
          Edité par Mateo21 le 20 novembre 2015 à 11:32:48

          A vraie dire, il n'y a pas QUE la mise à jour à faire suite aux dernières évolutions du langage, il y a bien plus que ça.

          En effet, ce cours est quelque peut déprécié car en plus de ne pas être à jour et d'être sur une norme assez vieille, il y a de sérieux problème au niveau des méthodes d'apprentissage. Je ne vais pas tout énuméré, mais je vais donner quelques exemples notamment sur la partie objet du cours mais aussi sur le plan.

          En premier lieu, j'aimerai parler du plan, on peut voir au début un plan qui va d'abord introduire le paradigme impératif du cours pour ensuite passer sur le paradigme objet de ce dernier. Néanmoins, il y a fort à penser que ce cours n'introduit pas tout correctement, il y a même de sérieuse lacune ne serai-ce que sur ce sujet. Je tiens à préciser que c'est une liste non exhaustive et que c'est un avis purement personnel.

          Chose commune à tous les chapitre, la directive using namespace n'est pas une bonne idée, ni une bonne habitude à donner à un débutant. Si les namespace sont là c'est pour une très bonne raison, séparer certaines choses comme par exemple tous les algorithmes de la SL donc le simple fait de mettre un using namespace sans expliquer à quoi servent les namespace est -- à mon sens -- une erreur.


          Dans le chapitre "utiliser la mémoire", on voit quelque chose qui, n'est pas très grave en soi, mais qui reste quand même ce genre de petit détail qui font que ça tourne vite au vinaigre. Vous proposez comme approche l'âge de l'utilisateur, cependant, vous utilisez un type signé, pourquoi ?

          Par la suite,  dans la partie "les fonctions" -- que j'ai lu en diagonale -- je n'ai pas vu d'explication concernant la portée des variables, ainsi que tout autre explication concernant la destruction des variables à la fin d'une fonction, ce qui devrait -- à mon sens -- être l'une des premières choses à dire au sujet de ces dernières.


          Là on arrive au gros du problème du paradigme impératif : LES TABLEAUX, présenter les tableaux à la C ne devrait même pas être dans un cours, même avec une norme qui date de la guerre de 100 ans. Les tableaux à la C sont des mauvaises pratiques depuis des lustres, de plus, vous n'introduisez les collection que vers la fin, et vous faites également une grave erreur comme par exemple créer un vecteur de vecteur pour les tableaux à deux dimensions, sans mentionner ne serai-ce qu'une fois la linéarisation des données. De plus, vous introduisez les collections -- et encore, juste le std::vector -- comme si c'était "un autre moyen vitef de le faire". Mais vous ne parlez pas des collections de tri, ou même des collections comme std::map ou std::pair, juste std::vector.

          Par la suite, vous introduisez les std::string comme étant des tableaux, ce qui n'est pas le cas ! Dire ça revient à dire qu'une classe est un tableau, ce qui est -- à mon sens -- pas non plus le cas. De plus, on peut voir quelque chose comme : 

          std::string test("toto");
          
          test[0] = 'l';

          Ce qui est encore une mauvaise pratique, lorsqu'on utilise quelque chose comme l'opérateur [] on se doit de vérifier par le biais d'une assertion la validité de ce dernier : 

          std::string test("toto");
          
          assert(test[0] && "Index out of bound");
          test[0] = 'l';

          Et là, on arrive à un autre problème -- que j'aimerai citer avant de continuer -- vous ne parlez pas des assertions et des exceptions pour l'instant, chose qui aurait du être vu bien plus tôt car ça fait partie intégrante du langage. Lorsque j'ai survolé le plan, j'ai pu constater que vous parliez des exceptions dans la partie "annexe" du langage, comme si c'était "un truc qui peut être swag". Et là encore, c'est une grave erreur -- à mon sens --.

          Maintenant, on arrive à un autre gros soucis du cours, les pointeurs. Je suis d'accord, le cours est vieux, donc il n'y avait pas à l'époque de pointeur intelligent, PAR CONTRE il y avait l'idiome RAII qui existait déjà, et lors de la partie sur l'allocation dynamique, je ne le vois nul part, et ce n'est pas une très bonne chose en soi. Vers la fin de ce cours, j'ai aussi pu voir quelque chose qui m'a fait un peut peur, c'est le pointeur sur string. De plus, il me semble que vous introduisez l'allocation dynamique sans parler des exceptions, comme par exemple le fait que new peut échouer, ce qui, encore, n'est pas du au fait que le cours est trop vieux.

          Vient enfin sur le cours sur le paradigme objet, et là c'est la grosse dégringolade d'erreur et de mauvaise pratique et de notion même pas abordé et qui sont pourtant assez importante.

          Vous commencez cette partie avec uniquement "la vérité sur les string" et ensuite, vous passez directement à "faire des classes". Mais vous n'introduisez pas le principe de sémantique de classe, comme la sémantique de valeur et la sémantique d'entité. Et cette erreur va être poursuivie dans pas mal de chapitre car même les exemples violent allègrement ce principe. Je ne vois d'ailleurs nul part ni les principes comme le SOLID ou même la loi de Déméter, ou même les invariants de classes.

          Votre premier exemple sur les classes part directement dans le mus en introduisant l'encapsulation qu'après avoir dit qu'une classe peut contenir des variables (attributs) et des fonctions (fonctions membre), ce que j'aurai bien vu personnellement c'est de parler plutôt du principe des services rendu et donc des différents moyens de conception (cf : les principes) mais aussi de l'encapsulation, AVANT de partir sur les fonctions membres et les attributs.

          On arrive là à la notion de constructeur, vous parlez de constructeur par copie sur une classe à sémantique d'entité et là, ça commence à douiller au niveau des principes, de plus, dans cette partie vous n'introduisez même pas la forme canonique (qui, au moment de votre cours, était une notion assez importante), donc là encore, on a un sérieux problème. Par la suite, vous parlez de la liste d'initialisation comme d'une autre manière de construire les objets, mais là encore, il y a un soucis.

          Lorsqu'on arrive sur la surcharge d'opérateur, on ne vois pas le principe de la symétrie d'appel, qui est quand même assez important également. Et s'en suit également certaines pratiques comme des fonctions comme estEgal qui n'ont aucun sens si on suit correctement le principe de la symétrie d'appel. De plus, le fait de manipuler 2 objets dans une fonction membre permet d'accéder au contenue privé des objets, cette fonction membre n'a donc pas lieu d'être. Et je ne parlerai pas du TP sur Zfraction qui est bourré de mauvaise pratique.

          Voilà, je n'ai pas tout cité et j'ai du oublier pas mal de chose, mais je tiens à dire que ce cours était déjà pas super même sous l'ancienne norme car beaucoup de chose ne sont pas vues et sont donc passé dans l'oubliette et c'est quand même assez dommage, de plus, comme ce cours est en "certification" je trouve ça un peut gros, peut-être l'enlever des certifications ?

          Cordialement,

          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2016 à 18:09:13

            Pourrons notre être mis au courant de la MAJ de ces cours, par mail ou notification via interface du site ? 
            Merci.
            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2016 à 10:19:41 - Message modéré pour le motif suivant : bashing et multi-compte


              Zeste de Savoir, le site qui en a dans le citron.

              Les cours d'Openclassrooms

              × 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