Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pourquoi ne pas aller vers le c++?

11 août 2008 à 13:43:45

Bonjour,
Moi perso, je briCole avec le C, j'ai commencé il y a 2 ou 3 mois, et ça me va...je pense attaquer le C++ mais pour l'instant je n'en ressens pas le besoin...trop occupé à bricoler...et puis je préfere parler couremment une langue les mains dans les poches plutot qu'aprendre 2 langues en meme temps et avoir besoin de mes livres. ^^
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 15:51:02

On est ici pour apprendre une base, donc bon ce n'est pas un programme universitaire et pour le moment les tutorials de ce site mon apporté beaucoup et je remercie les gens comme M@téo et autres qui ont pris le temps d'écrire, gratuitement je le rappelle, des tutorials de très bonnes qualités, pour un zéro qui ce respect.

Moi je dis, tout simplement, +1 à M@téo et les autres.
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 16:02:16

Je suis parfaitement d'accord, pour ce qui est d'apprendre les bases aux "zéros", ce site et ces tutos sont parfaitement adaptés. (enfin à l'exception de la continuité C / C++ instaurée par ce site qui est regrétable je trouve)

Le point problèmatique c'est qu'un fois avoir lu et plus ou moins compris les tutos, les "zéros" en questions (pour un grand nombre) ne vont pas plus loin et pensent tout connaitre.

Il découle de ça des projets de GUI en SDL par exemple parce que la SDL et LA lib du tuto, etc.

Après c'est juste une suggestion qui me vient comme ça, mais même sans faire de tuto dessus, ça pourrait être une bonne chose de mettre en fin de tuto une liste aussi exhaustive que possible de tout ce qui n'a pas été traité, ainsi que des liens vers d'autres sites pour continuer à apprendre.
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 16:04:32

Clair qu'il n'y a pas de saut entre C et C++. C'est un besoin qui fait passé d'un langage à un autre et le besoin est dicté bien souvent parce ce que tu veux faire.
Une application demandant l'usage des sockets par ex, je l'aurais fait en C mais une application demandant des tonnes d'objet (genre un gestionnaire d'annonces), bah le C++ a ma préférence (même si j'en ai jamais fait ^^)

Si tu hésite à faire du C++ uniquement parce que tu as fait du C et que ca a une lettre en commun, pourquoi ne pas faire du C#? ;).

Ps: le site du zero est un bon tuto, c'est grâce à lui si je suis maintenant développeur informatique (enfin, grâce a lui que je me suis décide à faire l'école pour ca ^^) et je dirais, ce qui manque le plus au tuto, c'est d'amener le lecteur à se débrouiller tout seul sur un sujet qu'il ne connait pas :)
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 16:12:42

Citation : LeViking

et je dirais, ce qui manque le plus au tuto, c'est d'amener le lecteur à se débrouiller tout seul sur un sujet qu'il ne connait pas :)



+1 pour tout ton poste, mais notamment sur cette dernière partie. On a rédigé nos postes en même temps mais il semblerait qu'on ait pensé la même chose.
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 16:24:22

Citation : Lewis123

je remercie les gens comme M@téo et autres qui ont pris le temps d'écrire, gratuitement je le rappelle, des tutorials de très bonnes qualités, pour un zéro qui ce respect.

Moi je dis, tout simplement, +1 à M@téo et les autres.


+1 on ne le dira jamais assez ^^
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 17:31:29

Citation : LeViking


Une application demandant l'usage des sockets par ex, je l'aurais fait en C



Pourquoi ?

Thierry
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 17:56:24

Bah des langages que je connais le plus, c'est celui qui s'y prête le plus à mon sens et que la partie objet de c++ ne m'est pas nécessaire pour le faire.
Apres, je n'ai pas dit qu'il fallait absolument le faire en C. Mais faire du C++ sans programmation objet, ca ne me parait pas super intéressant et vu qu'on est sur une question qui mêle ces 2 langages...
Enfin, encore une fois, j'ai juste balancé des exemples, juste pour appuyer ce que je disais dans mon post, c'est à dire qu'on choisit son langage en fonction de ses gouts, de ce qu'on nous impose et de l'application en elle même.
Je n'oblige personne à faire des sockets uniquement en C :)

  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 18:14:29

Citation : LeViking

Bah des langages que je connais le plus, c'est celui qui s'y prête le plus à mon sens et que la partie objet de c++ ne m'est pas nécessaire pour le faire.



Ben, on peut toujours encapsuler des sockets de C (Berkeley, Winsock) dans un ensemble de classes...
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 18:31:37

Citation : Ice_Keese

Citation : LeViking

Bah des langages que je connais le plus, c'est celui qui s'y prête le plus à mon sens et que la partie objet de c++ ne m'est pas nécessaire pour le faire.



Ben, on peut toujours encapsuler des sockets de C (Berkeley, Winsock) dans un ensemble de classes...


Oui, et au passage le module réseau de SFML il est trop bien :D .
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 19:10:17

Citation : LeViking

Bah des langages que je connais le plus, c'est celui qui s'y prête le plus à mon sens et que la partie objet de c++ ne m'est pas nécessaire pour le faire.
Apres, je n'ai pas dit qu'il fallait absolument le faire en C. Mais faire du C++ sans programmation objet, ca ne me parait pas super intéressant et vu qu'on est sur une question qui mêle ces 2 langages...
Enfin, encore une fois, j'ai juste balancé des exemples, juste pour appuyer ce que je disais dans mon post, c'est à dire qu'on choisit son langage en fonction de ses gouts, de ce qu'on nous impose et de l'application en elle même.
Je n'oblige personne à faire des sockets uniquement en C :)



En C++, on peut utiliser des APIs de haut niveau telles que ACE (entres autres).

Thierry
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 19:19:54

Moi, j'ai commencé à suivre ton cours sur le C++ et j'aime beaucoup mieux le C++ ! :D C'est vrai qu'au début, ça fait un peu peur, la POO, mais je m'en fous, je vais coder bien mieux et bien plus facilement ! :p De plus, en C++, tu as plus de possibilité (formulaires, cases à cocher, boutons, ...) ! ^^ En tout cas, c'est mon opinion, mais je reconseille plus le C++ pour faire des jeux en ligne. (ex : Dofus, WarCraft, StarCraft, Archlord, ...) :)
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 19:25:41

Citation : Mikelo11

De plus, en C++, tu as plus de possibilité (formulaires, cases à cocher, boutons, ...) !



C++ ne propose rien de tout ça. C'est une histoire de bibliothèque et pas de langage.

C++ != Qt

Thierry
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 19:28:03

Citation : LeViking

Mais faire du C++ sans programmation objet, ca ne me parait pas super intéressant et vu qu'on est sur une question qui mêle ces 2 langages...


Il y a deux trucs du C++ qui n'ont pas grand chose d'objet qui font pour moi une sacré différence :
- les objets (certes!) RAII-sants de la bibliothèque standard (C'est le RAII qui est important, pas que ce soit des objets, même si le côté OO est un prérequis pour cette particularité (!) du C++)(-> string, vector, list, ...) [*]
- les templates, dont les erreurs sont tout de même un chouilla moins sibyllines que celles que l'ont peut avoir avec des macros.

C'est très réducteur que de croire que la seule différence, que dis-je le seul intérêt, du C++ (p/r au C), c'est le côté OO.

[*] On rejoint le encore et toujours plus d'implicite. Dans les inconvénients, je lisais aujourd'hui un "vieux" message de Raymond Chen qui critiquait les exceptions (des C# & Java initialement) car s'il est facile de reconnaitre du premier coup d'oeil un mauvais code qui repose sur les codes d'erreurs, il n'en est rien des codes qui reposent sur les exceptions -- car un code correct dans le premier cas serait complètement parasité. Maintenant, avec le RAII on peut faire du bon code transactionnel simplement, mais il faut une certaine habitude pour repérer ScopedGuards et autres objets automagiquement collectés.
  • 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.
11 août 2008 à 19:47:30

Citation : Mikelo11

De plus, en C++, tu as plus de possibilité (formulaires, cases à cocher, boutons, ...) !


T'as rien compris...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
11 août 2008 à 22:57:06

Mikelo11 > ce que tu dis est faux.
En C et en C++, tu as exactement les memes possibilités.
Tu peux aussi faire des boutons en C, des formulaires, etc.

Les deux langages persmettent la meme chose : c'est a dire aucune limite sinon celle de ta machine... et les compétences/motivation/temps du programmeur, bien entendu !!
  • Partager sur Facebook
  • Partager sur Twitter

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

12 août 2008 à 9:17:51

La question n'a pas de sens.
Ce n'est pas toi qui décide, c'est le marché.
Et en ce moment, ce n'est ni l'un, ni l'autre, c'est le C# que MS est en train d'imposer (et y arrive comme souvent, vu les moyens colossaux mis en oeuvre)
Quand tous les appels d'offres seront en .NET/C#, tu n'auras pas le choix si tu ne veux pas rester sans mission...
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 9:19:12

Citation : george135

La question n'a pas de sens.
Ce n'est pas toi qui décide, c'est le marché.
Et en ce moment, ce n'est ni l'un, ni l'autre, c'est le C# que MS est en train d'imposer (et y arrive comme souvent, vu les moyens colossaux mis en oeuvre)
Quand tous les appels d'offres seront en .NET/C#, tu n'auras pas le choix si tu ne veux pas rester sans mission...


Je ne peux qu'approuver cette vision purement professionnelle... si on fait le choix de la masse. personnellement, je préfère les niches... Question de tempérament...

  • Partager sur Facebook
  • Partager sur Twitter
Music only !
12 août 2008 à 10:07:12

pour moi (j'ai appris la programmation avec java donc fortement orienté objet, le c++ me semble plus clair (enfin c la logique poo) qui je trouve est plus dans mes habitudes qui rendent superieur le c++ au c (polymorphisme...)
par contre il est vrai que même si souvent les equivalent c sont plus long (ou compliqué) (exemple malloc comparé à new)
ou une utilisation objet entre instance.fonction1() et fonction1(&instance) finalement ça revient plus ou moins même.
Mais ce qui fait pencher la balance c'est les autres ajouts:
-stl, des tableaux ou maps dynamique dont on n'a pas a gerer la mémoire directement
et surtout les templates, un mécanisme très puissant permettant une généricité de type (ça se dit ça?)
par exemple:
template <class T>
    class CVector3
    {
    public :

        //----------------------------------------------------------
        // Constructeur par défaut
        //----------------------------------------------------------
        CVector3(T X = 0, T Y = 0, T Z = 0);

        //----------------------------------------------------------
        // Réinitialise le vecteur
        //----------------------------------------------------------
        void Set(T X, T Y, T Z);

        //----------------------------------------------------------
        // Renvoie la norme du vecteur
        //----------------------------------------------------------
        T Length() const;

        //...

        //----------------------------------------------------------
        // Opérateurs unaires + et -
        //----------------------------------------------------------
        CVector3<T> operator +() const;
        CVector3<T> operator -() const;

        //...

        //----------------------------------------------------------
        // Données membres
        //----------------------------------------------------------
        T x; ///< Composante X
        T y; ///< Composante Y
        T z; ///< Composante Z
    };

typedef CVector3<int>   Vec3i;
    typedef CVector3<float> Vec3f;


comment créer un équivalent en c sans passer par des cast à tout va?

Enfin pour finir, je suppose que mon point de vue n'est pas tout à fait objectif et je reconnais que pour certaines application, le c reste utilisé.
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 11:40:10

Citation : Pas de titre

comment créer un équivalent en c sans passer par des cast à tout va?


void* ? C'est le cas de malloc, tu peux utiliser malloc() avec int, float, double(...) et malloc renvoie toujours un void* donc c'est générique.
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 11:44:57

Citation : moi281184

A l'exception de la continuité C / C++ instaurée par ce site qui est regrétable je trouve.



Je ferais remarquer que nul part dans le tuto de mateo (qui en passant est exceptionnel par sa simplicité et son intérêt, ces derniers disparaîtraient d'ailleurs si il commençait à faire la liste des fonctions possible...), je disais donc que nul part il y avait écrit que le C++ est une évolution de language C.
De plus les tuto C et C++ sont aussi séparé que celui du Java et C++, et c'est surtout dans la tête des gens que le lien ce fait. Et personnellement je trouve moi aussi tentant d'apprendre quelque chose de nouveau sur des bases déjà construite...
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 11:55:02

J'ai commencé par apprendre le C++ ( pour le côté POO surtout )à la fac. Je l'ai fais sans trop de convictions, ni de motivations, mais j'y ai acquis de solides bases.

J'ai enchainé avec du Java lors de ma formation de developpeur, j'ai vraiment pas aimé. Le langage m'a semblé restrictif et assez lourd.

Aujourd'hui, toujours dans la suite de mes études, j'ai été amené à travailler en C. De prime abord, je me suis exclamé "Berk!! C'est quoi cette version sous-développée du C, autant le faire en C++". Après avoir passé quelques jours dessus, ça a été le coup de foudre. Je ne maitrise pas totalement le langage, mais il me convient parfaitement, ne serait-ce que par son bas niveau, qui me permet de me rapprocher des couches réseaux et transports.

Il n'y a donc rien de comparable entre le C et le C++, le passage peut donc ne pas se faire, ce n'est pas parce qu'il y a ++ derrière ce fameux C qu'il s'agit d'une chose forcement meilleure.

Au passage, j'ai fortement apprécié le tuto sur le C, les bases sont solidement construites. Par contre, quelques petites déceptions pour le C++. Mais bon, on peut pas tout avoir dans la vie.
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 12:54:14

Citation : xcxl

Citation : moi281184

A l'exception de la continuité C / C++ instaurée par ce site qui est regrétable je trouve.



Je ferais remarquer que nul part dans le tuto de mateo (qui en passant est exceptionnel par sa simplicité et son intérêt, ces derniers disparaîtraient d'ailleurs si il commençait à faire la liste des fonctions possible...), je disais donc que nul part il y avait écrit que le C++ est une évolution de language C.
De plus les tuto C et C++ sont aussi séparé que celui du Java et C++, et c'est surtout dans la tête des gens que le lien ce fait. Et personnellement je trouve moi aussi tentant d'apprendre quelque chose de nouveau sur des bases déjà construite...



Pourtant ici, tout en haut de la page, il est écrit:

Citation : Cours C++, SdZ

Ce cours est la suite de "Apprenez à programmer en C"
Il est nécessaire d'avoir lu au moins les parties I et II du cours de C pour pouvoir suivre celui-ci sur le C++



Thierry
  • Partager sur Facebook
  • Partager sur Twitter
12 août 2008 à 13:53:52

Citation : moi281184

Je suis parfaitement d'accord, pour ce qui est d'apprendre les bases aux "zéros", ce site et ces tutos sont parfaitement adaptés. (enfin à l'exception de la continuité C / C++ instaurée par ce site qui est regrétable je trouve)

Le point problèmatique c'est qu'un fois avoir lu et plus ou moins compris les tutos, les "zéros" en questions (pour un grand nombre) ne vont pas plus loin et pensent tout connaitre.

Il découle de ça des projets de GUI en SDL par exemple parce que la SDL et LA lib du tuto, etc.

Après c'est juste une suggestion qui me vient comme ça, mais même sans faire de tuto dessus, ça pourrait être une bonne chose de mettre en fin de tuto une liste aussi exhaustive que possible de tout ce qui n'a pas été traité, ainsi que des liens vers d'autres sites pour continuer à apprendre.



Tres d'accord. je pense que c'est ce qui manque le plus au tutos du C (merci au passage a mateo).
  • Partager sur Facebook
  • Partager sur Twitter
13 août 2008 à 1:02:56

Citation : george135

La question n'a pas de sens.
Ce n'est pas toi qui décide, c'est le marché.
Et en ce moment, ce n'est ni l'un, ni l'autre, c'est le C# que MS est en train d'imposer (et y arrive comme souvent, vu les moyens colossaux mis en oeuvre)
Quand tous les appels d'offres seront en .NET/C#, tu n'auras pas le choix si tu ne veux pas rester sans mission...



D'après les statistiques, c'est plus le Java qui l'emporte...
  • Partager sur Facebook
  • Partager sur Twitter
13 août 2008 à 1:04:40

Citation : Ice_Keese

D'après les statistiques, c'est plus le Java qui l'emporte...


Tu parles du très controversé TIOBE ?

http://www.tiobe.com/index.php/content [...] ci/index.html

Moi, je l'aime bien parce que le C enfonce le C++ et le C#. Mouarf !

  • Partager sur Facebook
  • Partager sur Twitter
Music only !
13 août 2008 à 2:22:52

Citation : -ed-

Citation : Ice_Keese

D'après les statistiques, c'est plus le Java qui l'emporte...


Tu parles du très controversé TIOBE ?

http://www.tiobe.com/index.php/content [...] ci/index.html

Moi, je l'aime bien parce que le C enfonce le C++ et le C#. Mouarf !



Moi aussi je l'aime bien, par qu'il est plausible. Oh, bien sûr, il est controversé, mais c'est normal: tout ceux qui ne voient pas leur langage favoris en haut de la liste grincent des dents et disent que les statistiques sont faussées... Ah, l'humanité...

N'empêche, à en croire George135, on dirait que le monde de l'informatique est entièrement composé de banques... Si c'est le cas, alors ce cher George a oublié le COBOL...

Mais bon, je préfère le C++, parce qu'il est à la fois haut et bas niveau, qu'il permet de faire à la fois de l'OO, du procédural et de la métaprogrammation, parce qu'il ne nous fait pas payer pour ce que l'on utilise pas (ce qui est à des années lumières des langages "à overhead" comme Java et C#) et qu'il est libre et standardisé. Quoique j'aime bien le Java. Le C# est pas mal non plus, mais il ne fonctionne pas très bien sur ma plate-forme favorite (Mac OS X). Et j'aime de plus en plus l'Objective-C (principalement pour son énorme librairie de classes). Quant au C, rien ne m'empêche de ne faire que du procédural en C++ si besoin est...

Voilà, c'était ma petite pensé du moment.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
13 août 2008 à 15:23:12

Citation : -ed-


Moi, je l'aime bien parce que le C enfonce le C++ et le C#. Mouarf !



<mode grokiki> Hey ! Pour .Net, il faut compter C# + la majeure partie de VB + une petite part de C++ =p </>

Pour en revenir à Tiobe, il faut quand meme faire attention, il a plus tendance à mesurer les coups de buzz du langage, que l'utilisation reelle (bien qu'il puisse exister une certaine correlation, bien entendu). Ceci dit, la hierarchie de Tiobe n'est pas vraiment si detacher de la pratique (tout du moins pour les gros langages).
  • Partager sur Facebook
  • Partager sur Twitter
13 août 2008 à 17:01:35

Citation : -ed-

Citation : george135

La question n'a pas de sens.
Ce n'est pas toi qui décide, c'est le marché.
Et en ce moment, ce n'est ni l'un, ni l'autre, c'est le C# que MS est en train d'imposer (et y arrive comme souvent, vu les moyens colossaux mis en oeuvre)
Quand tous les appels d'offres seront en .NET/C#, tu n'auras pas le choix si tu ne veux pas rester sans mission...


Je ne peux qu'approuver cette vision purement professionnelle... si on fait le choix de la masse. personnellement, je préfère les niches... Question de tempérament...



Il y a des statistiques, mais à ce sujet quand je vois les offres de stage qui arrivent à l'école, il y a certes un peu de C# mais surtout beaucoup de Java. Je suis incapable de dire si globalement c'est vraiment le cas, mais c'est le sentiment que j'en ai.
  • Partager sur Facebook
  • Partager sur Twitter

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

20 septembre 2008 à 16:46:06

Je peux t'apporter mon témoignage, je ne suis jamais passé au C++ parce que je n'en ai jamais eu besoin... Je fais du C parce que j'ai apris ce langage à ma fac, et je serais surement passé au C++ si ma fac me l'avait enseigné aussi, mais comme c'est pas le cas je n'ai pas pris le temps de l'apprendre. Et quand j'ai besoin d'un langage objet j'utilise le Java ou l'OCaml (en fonction de mon humeur).

Bon j'pense pas que cette réponse te satisface. J'peux aussi te donner le témoignage d'un pote, avec qui j'ai justement parlé de ça il n'y a pas très longtemps.
Pour lui c'est essentiellement une question d'habitude, il me disait aussi que la vision objet des choses il avait un peu de mal (manque de pratique, trop imprégné du C), qu'il avait plutot l'impression de faire du "C+" donc faire du C++ comme du C, et ça l'ennerve un peu. Son dernier argument était de me dire que c'est plus facile de faire du C sous Unix que du C++... c'est un argument étrange mais bon... voilà.

De toute façon, pour moi, être capable de savoir utiliser le bon langage au bon besoin, est l'une des deux condition pour reconnaitre un bon programmeur. Le mec qui utilise le C pour tout ou le C++ pour tout, c'est soit un papi pas capable de changer ses habitudes, soit un p'tit jeune en pleine crise identitaire qui a besoin de faire partit d'une communauté. Dans tous les cas c'est pas sérieux, le but c'est pas de savoir lequel est le meilleur, c'est d'utiliser les bon outils, être inteligent en some. Et quand t'as pas l'choix ben t'as pas l'choix...
  • Partager sur Facebook
  • Partager sur Twitter