Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dois je passer au C++ ? ...

... ou rester au bon vieu C

    26 juin 2007 à 1:47:28

    Voila, désolé si je ne post pas de probleme :p

    En fait, j'ai une question toute bête à vous poser :

    Es ce utile que je passe au C++ a mon niveau ou dois je attendre encore un peu ?

    En fait, j'ai finis la partie I,II, et III de m@théo, et je ne sais pas si je dois passer au C++.

    J'ai peur déja de m'embrouiller avec ce que j'ai déja appris.
    J'ai peur que cela ne me serve pas ou trop peu pour galéré plus :lol:
    J'ai peur de devoir me rabbatre sur d'autre tutoriel qui serons surement moin pour les zér0 que pour des programmeur chevronné. :-°
    J'ai peur que cela soit beaucoups plus dur que l'apprentissage du C :euh:

    Qu'en pensez vous ?

    Sachant que j'ai déja programmé deux trois petits truc tout simples. Dois je continuer à m'entrainer en C (sachant que de toute façon le C n'étant pas limité je pourrais programmer tout ce que je souhaite), ou dois je plutot partir a la conquete du C++ ? :D

    Merci d'avance. :)
    • Partager sur Facebook
    • Partager sur Twitter
      26 juin 2007 à 4:44:48

      Perso, je te conseille d'en rester au C pour le moment et d'en essayer toutes les facettes(pas toutes, mais bon..., la plupart, c'est quasi illimité) et ensuite de passer au C++.

      Vraiment, c'est mon avis et ça dépend ce que tu veux faire.

      Bye
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 juin 2007 à 8:36:57

        Personellement, le C et le C++ ne sont pas si différents que certains le laissent à croire.Ce n'est pas comme si tu abandonnais complètement le C.Moi, personellement, j'utilise C++ et SDL (comme certains n'aiment pas),je n'ai pas franchement diffférents. Le C++ ajoute un concept important : celui des objets. Je te conseille de t'amuser à faire de petits jeux pendant quelques semaines et après lance-toi
        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2007 à 9:24:13

          Contrairement aux idées reçues, l'apprentissage du C++ est beaucoup plus simple que l'appretissage du C -- le tout est de ne pas voir le C++ comme du C avec des objets, mais comme un langage à part entière. Concernant la maitrise, c'est bien sûr tout le contraire : le C est infiniment moins complexe que le C++.

          Rien que les std::string vont te simplifier la vie comme pas possible. Ce qui permet de ne s'attaquer sérieusement et sereinement aux char*/char[] qu'après. Bon, là c'est un peu le contraire qui est fait : tu souffres au début.
          • 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.
            26 juin 2007 à 13:58:46

            D'accord, suite a vos réponses, je pense que je vais rester au C pour le moment.

            Merci beaucoups :)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              26 juin 2007 à 14:07:56

              Citation : Pas de titre

              J'ai peur de devoir me rabbatre sur d'autre tutoriel qui serons surement moin pour les zér0 que pour des programmeur chevronné. :-°


              Je ne vois pas ou est le problème.


              Evidemment ta question n'a aucun sens car elle ne contient pas la condition essentielle pour en avoir: Quel usage comptes tu faire de la programmation.

              Il faut que tu saches qu'il y a des tas d'autres langages très intéressants, et pas seulement C++.
              • Partager sur Facebook
              • Partager sur Twitter
                26 juin 2007 à 14:28:53

                L'apprentissage du C++ ne nécessite pas du tout celle du C, mais avoir un tel bagage peut aider
                • Partager sur Facebook
                • Partager sur Twitter
                  26 juin 2007 à 14:31:10

                  Non, les différences entre le C et le C++ sont minimes.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 juin 2007 à 15:59:08

                    Enfin, je trouve quand même que coder en C++ est bien plus dur que de coder en C. Premièrement, quand on code en C, on a peu de question à se poser niveau structure du code et son organisation. Bien sûr on s'en pose, mais on ne se prend pas tellement la tête à ce sujet.

                    En C++, la POO apporte tout une polymique à ce sujet : vais-je créer une fvp pour cette classe ? Devrais-je créer un ADT ? En quoi cela m'aidera t-il ? Etc etc...

                    Je trouve que l'approche du C++ est bien plus complexe que celle du C, qui pour moi, n'est rien d'autre que procédural, alors que le C++ est bien plus "intelligent", "objet" :)

                    Mais chacun a son avis ^^

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      26 juin 2007 à 17:16:21

                      Citation : anonymous

                      Non, les différences entre le C et le C++ sont minimes.



                      -ed- tu peux venir s'il te plait? :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 juin 2007 à 19:10:13

                        Heu... Si on ne parle que des différences de syntaxe entre le C et le C++ qu'on voit au début du cours C++ de Mateo, oui, elles peuvent être considérées comme minimes. Mais réduire le C++ à ca, ca me semble ridicule.

                        Je débute tout juste en C++ après une grosse année de programmation en C et rien que les références me déstabilisent. Sans parler de la POO, qui est encore très très floue :)

                        Donc non, je ne suis pas experte, mais je ne suis vraiment pas d'accord, les différences ne sont pas minimes!

                        Par contre, le sujet de ce fil est très intéressant: quand on ne sait rien du C++ et qu'on ne voit pas bien ce qu'est la POO, comment savoir et bien comprendre ce que pourrait nous apporter le passage du C au C++?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 juin 2007 à 19:23:35

                          Citation : -Skypers-

                          Enfin, je trouve quand même que coder en C++ est bien plus dur que de coder en C. Premièrement, quand on code en C, on a peu de question à se poser niveau structure du code et son organisation. Bien sûr on s'en pose, mais on ne se prend pas tellement la tête à ce sujet.

                          En C++, la POO apporte tout une polymique à ce sujet : vais-je créer une fvp pour cette classe ? Devrais-je créer un ADT ? En quoi cela m'aidera t-il ? Etc etc...

                          Je trouve que l'approche du C++ est bien plus complexe que celle du C, qui pour moi, n'est rien d'autre que procédural, alors que le C++ est bien plus "intelligent", "objet" :)

                          Mais chacun a son avis ^^



                          Non, ce n'est pas parce que tu fais du C++ que tu te dois de programmer en orienté objet.

                          Tu peux très bien rester en procédural, une conception orienté objet peut très bien ne rien apporter pour de petits programmes. L'avantage est qu'on profite des outils de la librairie standard.

                          Tu peux profiter de la programmation générique, et programmer en style fonctionnel aussi, ce qui était difficilement faisable en C.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 juin 2007 à 20:49:44

                            Citation : undefined

                            Par contre, le sujet de ce fil est très intéressant: quand on ne sait rien du C++ et qu'on ne voit pas bien ce qu'est la POO, comment savoir et bien comprendre ce que pourrait nous apporter le passage du C au C++?



                            C'est exactement la question que je voulais poser mais pas réussi a bien la formuler :lol:

                            Citation : undefined

                            Tu peux très bien rester en procédural, une conception orienté objet peut très bien ne rien apporter pour de petits programmes. L'avantage est qu'on profite des outils de la librairie standard.

                            Tu peux profiter de la programmation générique, et programmer en style fonctionnel aussi, ce qui était difficilement faisable en C.



                            Dans ce cas, est ce vraiment utile de passer au C++ si ce n'est que pour faire de façon (un peu ?) plus simple des choses que l'on peut faire en C ?

                            (vu que le post évolue, je remet le post en non résolu :p )
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 juin 2007 à 22:06:05

                              Citation : rrazpo


                              Citation : undefined

                              Tu peux très bien rester en procédural, une conception orienté objet peut très bien ne rien apporter pour de petits programmes. L'avantage est qu'on profite des outils de la librairie standard.

                              Tu peux profiter de la programmation générique, et programmer en style fonctionnel aussi, ce qui était difficilement faisable en C.



                              Dans ce cas, est ce vraiment utile de passer au C++ si ce n'est que pour faire de façon (un peu ?) plus simple des choses que l'on peut faire en C ?

                              (vu que le post évolue, je remet le post en non résolu :p )



                              Ben, la librairie standard est déjà un très gros apport. C'est ce qui fait la différence pour moi.

                              vector, list, string, map + les algorithmes de la STL couvrent 90% des besoins en structures de données et sont simples à utiliser.

                              Et quand en plus ils gèrent de manière déterministe et automatique leur mémoire, on ne peut pas dire que c'est négligeable.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 juin 2007 à 22:41:35

                                Citation : HanLee

                                Citation : -Skypers-

                                Enfin, je trouve quand même que coder en C++ est bien plus dur que de coder en C. Premièrement, quand on code en C, on a peu de question à se poser niveau structure du code et son organisation. Bien sûr on s'en pose, mais on ne se prend pas tellement la tête à ce sujet.

                                En C++, la POO apporte tout une polymique à ce sujet : vais-je créer une fvp pour cette classe ? Devrais-je créer un ADT ? En quoi cela m'aidera t-il ? Etc etc...

                                Je trouve que l'approche du C++ est bien plus complexe que celle du C, qui pour moi, n'est rien d'autre que procédural, alors que le C++ est bien plus "intelligent", "objet" :)

                                Mais chacun a son avis ^^



                                Non, ce n'est pas parce que tu fais du C++ que tu te dois de programmer en orienté objet.

                                Tu peux très bien rester en procédural, une conception orienté objet peut très bien ne rien apporter pour de petits programmes. L'avantage est qu'on profite des outils de la librairie standard.

                                Tu peux profiter de la programmation générique, et programmer en style fonctionnel aussi, ce qui était difficilement faisable en C.



                                En effet mais la POO est un outil plus que puissant qu'il serait dommage de négliger voir de mettre à l'écart ! C'est justement ça qui est intéressant dans le C++ ! Parce que sérieusement, programmer en C++ sans utiliser la POO est pour moi une perte de temps. Ou alors, ça m'arrive, de programmer procédural en C++, mais pour de petites applis style un entrainement ou une étude. Mais c'est tout. Un projet d'envergure en C++ entroduira la POO, ça me semble être un choix logique, non ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 juin 2007 à 23:20:29

                                  Il y a plusieurs choses.
                                  La POO est certes un apport important du C++ sur un gros projet (pas forcément plus important que la généricité). Mais le sujet n'est pas les gros projets, c'est les débutants.

                                  Mais un débutant n'a pas à trembler d'effroi parce que le C++ c'est la POO. Non. D'abord c'est faux. Ensuite, le C++ c'est aussi une bibliothèque standard riche, une gestion simplifiée de la mémoire, et un typage plus strict (cf les pièges à newbs' que sont les printf/scanf comparé aux flux).

                                  Les problèmes que le débutant va résoudre en C, il peut résoudre exactement les mêmes, avec les mêmes choix de design, mais plus simplement en C++. Si C++ est la destination (dans un premier temps évidemment), le C n'est pas le point de départ obligatoire, loin de là. À la limite un point de passage intermédiaire si le newb' a déjà été initié à l'algorithmie avec des langages qui, tout comme le C++, permettent de faire abstraction de détails complexes et bas niveau (cf Pascal, Ada, ...)

                                  Quant à celui qui code en C sans se poser de questions ... comment dire.. c'est pas le bon langage pour ça.
                                  • 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.
                                    26 juin 2007 à 23:52:06

                                    Oui il se pose des bien entendu des question, mais je ne pense pas que l'analyse de la conception d'un code C soit plus complexe que celle d'un C++. Je suis d'accord sur le fait que le C++ présente plus de facilité sur plusieurs points, c'est vrai. Il n'empêche aussi qu'il y a été ajouté quelque chose, qui, aux yeux de débutants, pourrait être dispensable. Lorsque j'ai commencé le C++, je ne vois voyais strictement aucun intérêt dans la POO : ce n'est pas aisé à apprendre, le code me semblait étranger... Puis petit à petit, on s'attaque à des choses de plus en plus compliqué, et l'on se rend compte que la POO est vraiment quelque chose de heuuu, je ne dirais pas indispensable, mais c'est un moyen très efficace pour diviser la difficulté. Elle entraine cependant une réflexion plus poussée qui peut désorienter au début, enfin je pense, moi c'est sûr j'ai été désorienter (je le suis d'ailleurs toujours avec le constructeur de copie :euh: ).
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 juin 2007 à 1:04:00

                                      Toujours pareil, quand tu apprends le C++, tu n'es pas obligé d'apprendre à écrire des classes. Oui, c'est une autre façon de penser. Mais pas une obligation.

                                      Si tu en as l'occasion, feuillette le bouquin de Francis Glassborrow traduit chez Micro Application sous le titre "Je me Lance". Il y 400 (500?) pages d'introduction au C++ comme premier langage (prérequis exigés: savoir allumer son ordinateur, et avoir windows / ou s'y connaitre bien en *nix). Pas une seule fois cela ne traite de POO. Pour les pointeurs, dans l'index on y trouve bien une entrée, et dans la page en question il faut bien chercher pour voir le rapport.

                                      Bref, une autre vision de l'apprentissage du C++ qu'il est bon de méditer.
                                      • 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.
                                        27 juin 2007 à 3:31:22

                                        Hum, je m'y perd un peu du coup ^^

                                        Pensez vous qu'apprendre le C++ même sans utiliser la POO est vraiment utile pour un débutant ?

                                        Car bon, je me suis lancé dans un petit projet de rpg 2d, et je ne veut pas galéré a résoudre des difficultées nouvelles en C++ alors qu'en C je n'aurais eu aucun problème. :lol:
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 juin 2007 à 4:27:39

                                          Oui ça vaut le coup, surtout que si tu regroupes bien les données avec le code qui les manipule, tu vas concevoir très certainement un embryon de POO. Le temps que tu auras perdu, ne le sera pas complètement, car tu commenceras à entrevoir la puissance de la POO. Et tu verras mieux ce qu'elle peut t'apporter dans tes programmes futurs.

                                          Au début tu vas regrouper tes données en structures, dans ces structures tu vas ajouter une ou deux fonctions, par exemple un constructeur pour les initialiser, et un destructeur pour libérer la mémoire, puis tu vas te rendre compte, que tu peux confier la gestion des textures par exemple à un objet qui se chargera de les charger, de les libérer à la fin du programme, et de te les repasser s'il les a déjà en mémoire, et que tous ceci ne te couteras pas grand chose en terme de programmation et t'éviteras bien des problèmes de fuite de mémoire ou de performance liée à des allocation/libération incessantes. Dans ton RPG, tu vas aussi t'apercevoir que beaucoup d'objets de ton jeu ont des caractéristiques communes, et que de définir des modèles génériques simplifieront beaucoup certaines tâches comme par exemple la gestion des inventaires, des PNJ, de la carte (la liste des éléments présents sur une case de la carte par exemple)... Au final, tu vas voir que même la POO qui te parait si compliquée vient naturellement quand on en a besoin ;)

                                          • 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
                                            27 juin 2007 à 11:29:21

                                            Du moment que tu parles constructeur et destructeur, tu parles POO.

                                            Franchement rrazpo, je te conseille de faire ton jeu en C, puis de t'acheter un bouquin traitant sur le C++ (POO ou pas mais il vaudrait mieux).
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 juin 2007 à 19:40:57

                                              Comme dit plus haut, l'un des gros avantages du C++ au premier abord c'est sans aucun doute la STL. Je l'utilise tout le temps, franchement elle me simplifie bien la vie. Après, il y a plein d'à-côtés vraiment plaisant, n'ayant jamais fait de C, si ça se trouve ça existe, mais notamment les pointeurs intelligents, ça permet de s'affranchir de la gestion de tout ça. La surcharge d'opérateurs et les références sont aussi quelques points à ne pas négliger.

                                              Après, les templates quand on a vu un peu comment les manier, ça s'avère être un concept extrêmement puissant.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 juin 2007 à 21:44:07

                                                Citation : -Skypers-

                                                Du moment que tu parles constructeur et destructeur, tu parles POO.



                                                Si tu veux, mais moi j'appelle pas ça de la POO, j'appelle ça me simplifier la vie. Le C++ permet de se décharger sur le langage et ses extensions de tout un tas de tâche qui en C incombent au programmeur, sans sacrifice important sur les performances. Les gains se font au niveau du temps de développement, de mise au point et bien sûr au niveau de la maintenance qui est grandement facilitée. Je programme en C depuis 15 ans et je me suis remis au C++ il y a environ 2 ans (j'avais appris le C++ en même temps que le C). En 13 ans le C++ avait énormément changé, j'ai du pratiquement tout réapprendre. Malgré la différence d'expérience que je peux avoir sur les deux langages, il n'y a pas photo, pour un développement, si je peux partir en C++, je n'hésite pas une seconde. J'ajouterai qu'il est de plus en plus rare que je soit contraint de réaliser les nouveaux développements en C, c'est même plutôt l'inverse.
                                                • 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
                                                  28 juin 2007 à 1:01:14

                                                  Citation : -Skypers-

                                                  Du moment que tu parles constructeur et destructeur, tu parles POO.



                                                  Euh un constructeur, c'est un simple terme d'informatique théorique, qui désigne simplement une fonction qui prend ou non des arguments et renvoie un élément d'un type donné. Il construit un élément d'un type donné.

                                                  En POO, ça a pris une certaine ampleur. Ils sont particulièrement important parce qu'il faut que les objets créés soient dans un état valide (vis-à-vis des pré-conditions, post-conditions de la classe), comme la gestion de la mémoire par exemple, mais ça s'arrête là.

                                                  Après en C++, on peut jouer avec le déterminisme des constructeurs et des destructeurs pour faire des choses.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 juin 2007 à 23:55:05

                                                    Est-ce qu'un constructeur existe hors d'une classe ?
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      29 juin 2007 à 1:34:43

                                                      Mais la POO ne s'est pas approprié le mot "constructeur" !

                                                      Tout ce que tu veux me faire dire que on ne peut pas syntaxiquement créer de constructeur hors d'une classe en C++, ou Java...

                                                      Joue pas sur les mots quand je viens de te dire que ça ne reste qu'un concept. On fait bien des constructeurs en C, alors qu'il n'y a pas de classes dans le langage.

                                                      On fait aussi des constructeurs virtuels en C++, Java... Ca n'existe pas dans le langage. Doit-on en conclure que ça n'existe pas tout court ?

                                                      Non, les fonctions clone() sont typiquement des constructeurs virtuels. Et qu'est-ce que c'est ? Des fonctions qui renvoient une instance d'une classe donnée, donc d'un type donné : c'est la définition que j'ai citée.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        29 juin 2007 à 18:53:15

                                                        Citation : -Skypers-

                                                        Est-ce qu'un constructeur existe hors d'une classe ?



                                                        Oui bien sûr


                                                        struct toto
                                                        {
                                                         int titi;

                                                         toto(int val):titi(val){};
                                                        }
                                                         


                                                        tu peux essayer ça compile :-°

                                                        PS: En C++ la différence entre class et struct, c'est la visibilité par défaut (private pour class, public pour struct), donc ma réponse est un peu beaucoup de mauvaise foi(vu que c'est la même chose), mais juste quand même :D
                                                        • 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
                                                          29 juin 2007 à 23:39:36

                                                          Que veut dire ton morceaux de code stp ?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            3 juillet 2007 à 3:51:48

                                                            Le passage au C++ c'est fourbe, pour une raison simple, le C++ ressemble reprend le C en l'englobant dans un surensemble orienté objet (c'est a dire que les seuls endroits ou tu verra du code C en C++ c'est dans les définitions de méthodes)...
                                                            Problème, la mentalitée de programmation n'est pas du tout la même en C et C++, en C c'est de la programmation structurée (ma source se lit de façon linéaire blabla... avec traitement de données en conséquence), mais le pire, c'est que C++ n'oblige pas la programmation objet, donc... on peu même en arriver à faire du code hybride, entre C et C++, et la au secours, ça une mixture illogique et incompréhensible (mélange objet et structuré anarchique).

                                                            le C++ lui c'est de la programmation Objet... Et c'est pas DU TOUT la même façon de coder, pour clore, je dirais que créer une bibliothèque en C ,c'est moins efficace qu'en coder une en C++, car l'orienté objet permet une réutilisation du code extrêmement poussée, c'est pas pour rien que la plupart des moteurs de jeux sont en C++, grâce à l'heritage et au polymorphisme on peu faire vraiment des choses impressionantes.
                                                            De plus regarde les langages dernière générations, ils sont tous orientés objets.
                                                            Donc apprendre le C++ est un fort avantage, par exemple, pour apprendre le Java, ça facilite vraiment le boulot.
                                                            Je dirais que pour apprendre efficacement le C++ il faut bien avoir conscience que C++ reprend des principes du C, mais que l'orienté objet englobe ces principes (c'est a dire que les seuls endroits ou tu verra du code C en C++ c'est dans des méthodes de classe).
                                                            Du coup, si tu connais bien le C, tu n'as qu'a apprendre la manipulation de classes, de l'heritage, du polymorphisme, des classes abstraites, des templates, (des références optionellement bien que ce ne soit pas une obligation).
                                                            En gros, si tu connais le C, en un mois sans forcer tu peu apprendre le C++, car C++ est un surensemble objet du C...
                                                            Mais au début tu risque vraiment de faire de la merde... c'est un risque.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Dois je passer au 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