Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC C++

    10 juillet 2014 à 20:16:49

    @Ksass`Peuk

    Ok pour tes explications complètes. Effectivement, ce n'est pas du tout ce que j'avais compris à la lecture des commentaires.

    Du coup, ton commentaire est éclairant. 

    Pour le moment, je n'ai fait que la première partie du cours, mais je l'ai trouvé facile (à part la partie sur les références). Je n'ai eu aucun problème à faire les exercices et le TP. Après, le R est un language typiquement orienté objet, donc peut être que j'ai des acquis que je ne soupçonne pas qui me permettent d'éviter certains ecceuils. Et puis on verra si les autres parties passent aussi bien.

    Perso, du coup:

    - je vais continuer à suivre ce cours;

    - puis je vais me renseigner sur les algo déjà implémentés (je me doute qu'il doit par exemple exister une librairie et des fonctions pour faire des moyennes sans se retaper la fonction à chaque fois.. mais j'ai trouvé utile de voir une fois comment ç'est fait, ç'est un exemple simple qui permet de comprendre facilement comment ont été construites les fonctions qu'on utilisera par la suite).

    - puis je vais me procurer le petit livre des bonnes pratiques dont j'ai donné le lien plus haut;

    - puis je pratiquerais en gardant en tête que j'ai encore plein de choses à apprendre (ceci dit, ça je l'aurais même avec un cours parfait ;) ).

    -
    Edité par AurelieC 10 juillet 2014 à 20:17:47

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      10 juillet 2014 à 20:18:34

      C'est marque pour physiciens mais c'est valable pour les biologistes aussi: Et puis pour tous les non programmeurs en fait !

      -
      Edité par Anonyme 10 juillet 2014 à 20:48:30

      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2014 à 20:22:07

        (HS : "Le site du zéro", c'est l'ancien nom de "OpenClassRoom")
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2014 à 20:34:19

          @gbdivers

          Merci pour tes inputs, éclairants également. Seulement une chose: j'ai déjà de mauvaises habitudes, le mal est déjà fait en ce qui me concerne ;). J'ai appris R à la fac au départ, en TP de stats. Il n'y avait rien sur les bases de la programation, c'était utiliser les objets existants et faire des stats. Puis ensuite, j'ai progressé grace aux forums et multiples ressources en ligne (je ne me souviens pas du tout comment j'ai appris à programmer avec des boucles, ni pourquoi. Je n'ai jamais appris à créer des objets, je ne sais pas le faire.. enfin, je veux dire, des types d'objets).

          @Davidbrcz

          Prendre un programeur pro demande du temps et de l'argent. Y a pas mal de trucs pour lesquels on a pas vraiment besoin d'aller jusque là... triangle de scope...

          -
          Edité par AurelieC 10 juillet 2014 à 20:35:18

          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2014 à 20:57:50

            @AurelieC

            R est quand même très différent du C++. La difficulté dans R, c'est surtout les statistiques, pas la syntaxe. Il n'y a pas vraiment de "bonnes" pratiques dans R, à part peut être d'éviter les boucles et d'utiliser les fonctions de vectorisation (apply et équivalent). Au contraire, un code C++ qui respectent les "bonnes" pratiques est très différents qu'un code qui ne les respectent pas (dans la syntaxe et dans la façon de penser). Autant ne pas avoir de bonnes pratiques dans R ne pose pas de problème, en C++ c'est fatale.

            Si je devais faire une estimation pifométrique, je dirais que la moitié des problèmes posés sur le forum peuvent être corrigé en respectant les bonnes pratiques

            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2014 à 21:45:47

              Ahah, bah t'as pris le parfait exemple, car ç'est typiquement çe que je fais: utiliser les boucles au lieu des fonctions apply. J'ai essayé de me faire violence pour utiliser les apply dernièrement, mais chaque fois que j'essaye, au bout de 5 minutes je me dis ok j'irais plus vite en faisant une boucle et je laisse tomber ^^. C'est parce que ça fait des années que j'utilise les boucles, et en général j'ai des tableaux pas trop lourd donc elles tournent en quelques secondes... mais un jour, je finirais bien par avoir des tableaux lourds et ce jour là, je me mettrais à utiliser lapply et cie.

              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2014 à 21:55:40

                L'utilisation de apply est un classique :) Mais si ça peut te rassurer, je n'ai jamais pu m'y faire non plus. J'ai préféré passé au C++ pour gagner en performance
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2014 à 22:26:29

                  Question aux pros C++ d'ici : on m'a conseillé ce livre, est-ce que vous le connaissez, et si oui quel est votre avis ? Merci
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2014 à 22:31:43

                    Je crois qu'il suis l'approche historique, donc bof bof. Pour 10 euros de plus (je crois), tu as C++ Primer
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      10 juillet 2014 à 22:32:16

                      Il est mauvais. strcpy page 67 a suffit a me convaincre

                      -
                      Edité par Anonyme 10 juillet 2014 à 22:39:50

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2014 à 22:32:21

                        Pas lu. Le plan me semble assez casse gueule. Je vois des pointeurs bien avant l'idée de vector et de string. Et des fonctions du langage C. Les concepts du C++11 n'y apparaissent que comme un ajout (un peu à l'arrache) à la fin du bouquin.

                        Bref, à vue de nez, je ne le conseillerai pas. En tout cas, tant que je n'aurais pas vu le vrai contenu du livre.

                        • Partager sur Facebook
                        • Partager sur Twitter

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

                          10 juillet 2014 à 23:01:25

                          Pour ce que développe (logiciels éducatifs), j'utilise Qt et toutes ses classes. Quelles différences faites vous entre l'utilisation de cette bibliothèque et l'utilisation de C++ natif. Je pense par exemple à QString vs string, à la gestion de la mémoire (QObject)...

                          Je pose cette question avant de bosser plus précisement les algorithmes :-°

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 juillet 2014 à 7:36:07

                            Le point qui différencie Qt et les normes récentes de C++ (précédemment boost) sur le plan de la gestion mémoire (je laisse volontairement les fonctionnalités de côté pour le moment). Les deux ont répondu à la problématique de manière assez différente, l'un par les systèmes parents/enfants, l'autre par l'exploitation du mécanisme de désallocation automatique des objets sur la pile. A mes yeux la seconde solution est la fois plus belle (on nous donne un moyen d'appliquer aux éléments dynamique le même comportement que les types natifs comme "int"), et plus safe : un pointeur dans un programme Qt, il y a toujours un trou du cul qui va avoir l'idée de le foutre à nullptr ou le rendre invalide.

                            Après, certaines choses plus subtiles différencie les conteneurs Qt et SL, comme par exemple, je crois que QVector/QString utilisent l'idiome CoW alors que ce n'est pas le cas de la SL.

                            C'est pourquoi généralement, je conseille de faire le coeur d'une application en C++ pur (éventuellement avec du boost ou d'autres libs métiers au besoin) et par exemple le GUI avec Qt ; et d'y associer des interfaces bien opaques et biens lisses pour ne pas être tenté de mélanger les deux (quitte à faire des copies inutiles par moment).

                            • Partager sur Facebook
                            • Partager sur Twitter

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

                              11 juillet 2014 à 9:17:40

                              Le plus drôle est que Qt propose les 2 mécanismes, il existe de classes RAII dans Qt équivalentes à celle du C++11 : QScopedPointer (std::unique_ptr), QScopedArrayPointer (équivalent de std::unique_ptr<T[]>), QSharedPtr (std::shared_ptr), QWeakPointer (std::weak_ptr), QSharedDataPointer et QExplicitlySharedDataPointer (pour faciliter l'implémentation du COW)

                              Il faudrait regarder l'historique de ces classes. Il est probable que le système parent-enfant soit le premier système implémenté (avant que le RAII ne soit à la mode ?) et que donc Qt est resté là-dessus.

                              Pour QString et QVector (et en fait quasiment toutes les classes à sémantique de valeur de Qt) implémente le COW. Avant la move semantic, c'était un moyen pas trop coûteux d'éviter la copie des objets. Mais ce n'est pas la seule différences, il y en a plein d'autres (plus de fonction, comme le split de QString ou les fonctions de conversion numérique, la prise en charge de l'unicode, les itérateurs Java-like, l'opérateur [] dans QList, la sérialisation via QDataStream, le method-chaining avec la fonction arg, etc)

                              Concernant les copies, il ne faut pas oublier un point : les conteneurs/algorithmes de Qt sont parfaitement compatibles avec ceux de la STL. Il est tout à fait possible d'appeler un std::transform sur un QVector ou d'appeler un qDeleteAll sur un std::vector. À partir du moment où les structures de données implémentent les itérateurs (ce qui est le cas de Qt) et qu'elles sont séparées des algorithmes, alors c'est compatible avec la STL.

                              Donc si c'est pour bosser sur les algorithmes, Qt ou la STL sera pareil, à partir du moment où la séparation entre données et algorithmes est clairement définie (mais bien sûr, je recommande de ne pas utiliser Qt de façon intrusive si ce n'est pas nécessaire)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 juillet 2014 à 9:40:54

                                gbdivers a écrit:

                                l'opérateur [] dans QList


                                Juste une petite remarque en passant, c'est normal que QList ait un opérateur [] parce que c'est une conteneur à random access, tout comme QVector, pour une liste chainée comme std::list, il y a QLinkedList (qui n'a pas d'opérateur [] non plus donc).

                                HS: dites donc les coupains, vous enchainé les -1, faut vraiment rien dire par ici hein^^

                                -
                                Edité par epso 11 juillet 2014 à 9:41:20

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 juillet 2014 à 9:45:12

                                  (chut, tu vas t'en prend aussi ;) Pas d'inquiétude, c'est juste quelqu'un qui est aigri contre nous, osef)

                                  Oui pour QList, c'est peut être le plus gros problème avec cette classe, beaucoup pense qu'elle est équivalente à std::list

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 juillet 2014 à 10:10:01

                                    Je rajouterai que Qt est par défaut sans exceptions. Ce n'est vraiment pas terrible pour savoir quand il n'y a plus de mémoire pour allouer de grosses structures. Ma priorité va toujours au couple SL + boost.
                                    • 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.

                                    MOOC 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