Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pourquoi ne pas aller vers le c++?

9 août 2008 à 21:01:10

Salut, cela va faire pas loin de 2 mois et demi que je code en c et j'aimerais savoir quesqui fait que certain ne font jamais le saut au c++, puisque après la lecture des 5 premiers chapitres du cours c++ je trouve la programmation beaucoup plus interessante en c++ et surtout plus puissante.

Donc en résumé, pourquoi certain ne veulent pas faire le saut en c++? Quesque le c++ a de mal?

Lewis

  • Partager sur Facebook
  • Partager sur Twitter
9 août 2008 à 21:09:37

Petite réponse rapide,
Je code rarement, mais j'ai préféré coder en C car il ressemble à beaucoup d'autres langages (Pawno) et j'ai trouvé que le C++, bien que plus puissant soit légèrement plus compliqué et la nouvelle syntaxe plus difficile.

@+
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2008 à 21:13:15

printf("bonjour\n");


cout << "bonjour" << endl;


Personnellement, c'est la syntaxe que je trouve plus amusante et plus claire surtout, mais c'est la POO qui me fait peur ^^ C'est justement pour ça que je pose cette question.
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2008 à 21:18:30

Ce sont des questions d'habitude. On peut faire quelque chose de très propre en C, ou de très sale en C++, et inversement. En codant depuis quelques mois, tu ne peux pas vraiment comparer pour l'instant. De même alors, pourquoi programmer en C++ et pas en java, ruby, python et autre?
C'est un peu comme passer d'un os à un autre: c'est différent, ça marche différemment, certains disent que l'un est mieux que l'autre, mais au final, c'est le programmeur (ou l'utilisateur pour un OS) qui fait son choix ^^
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2008 à 21:28:16

Sache quand même que pour quelqu'un qui relis le code source (ou même toi après 6 mois...) c'est extrêmement plus rapide car super structuré!
Apres maintenant que je suis passé au C++ jtrouve vraiment le C très brouillon et compacte...

Jrajouterai que ceux qui ne passent jamais c'est surtout par manque de temps et d'envie d'apprendre!!!
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2008 à 22:43:30

Tu aimes la syntaxe de cout, mais il faut savoir que cout est un truc tres particulier. Ce n'est pas une fonction, c'est une instance d'objet.
C'est concretement la variable stdout.

Mais mis a part cout, on n'utilise pas souvent les opérateurs <<, mais bien plus souvent des appels de fonctions ou de méthodes comme en C :

objet.fonction(parametres);

xcxl > Apres, je peux te faire mentir :
- le mec qui programme en C++ n'importe comment, en faisant des classes mal découpées est illisible
- le mec qui programme en C, s'il ne fait pas des fonctions de + de 50 lignes (Perdez cette habitude !! les mecs qui font des fonctions de 500 lignes, ça me donne envie de gerber !) et qui découpe bien son projet, on le relis bien :)

Mais bon, moi je ne prends pas partie, j'aime le C et le C++.
  • Partager sur Facebook
  • Partager sur Twitter

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

10 août 2008 à 0:13:23

Bah, parce qu'ils n'ont pas besoin de faire de la programmation orienté objet ou générique...

Ensuite, ces remarques quant à la "nouvelle syntaxe plus difficile"... si vous aviez commencé par le C++, comme moi, vous ne penseriez pas ça.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 1:01:44

Il y a aussi les questions de gout, moi j'ai finit les cours de C++ (j'ai tous compris ;) ), mais il y a un truc qui m'attire dans le C je peut pas l'expliquer, moi c'est le C et voilà ^^ .
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 1:24:55

Oui, mais je crois que je peux me permettre de dire que le c++ est plus puissant que le c, enfin c'est ma première impression. J'ai des frisons en lisant les chapitres du cours c++ telement je me rend compte des possibilités.

justement :
Note : 20 / 20

Commentaires du professeur : Tu es très fort toi ! Très très très fort même. Bravo pour avoir donné autant de bonnes réponses, je crois pas que tout le monde aurait su en faire autant !
:-°:p
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 1:27:07

Fvirtman > Pour la deuxième fois de la journée tu as peut être raison :p Mais dans mon cas je pense surtout à des gens qui codent très bien.

Après j'ajouterais que la création d'un programme de base en C++ est plus long et fastidieux qu'avec le C (par là j'entends à la création de la classe, destructeur, constructeur et le reste...)

Sinon le C est très agréable quand on veut y aller tranquille! Perso j'aime bien les deux mais j'ai une préference au C++ quand le projet prend de l'ampleur.

EDIT :
Lewis > Bien joué, mais tu dépasse pas encore le maitre :D
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 2:15:30

Citation : Lewis123

Donc en résumé, pourquoi certain ne veulent pas faire le saut en c++? Quesque le c++ a de mal?


Tu fais du C++ si tu décides de faire du C++. Point. C'est ton choix. Ca n'a rien à voir avec le C. On peut commencer par l'un ou par l'autre. J'ai pas assez de neurones pour faire du C++.

De toutes façons, c'est pas sur le forum C que tu auras des conseils valables sur le C++...

  • Partager sur Facebook
  • Partager sur Twitter
Music only !
10 août 2008 à 3:46:15

Citation : -ed-

Citation : Lewis123

Donc en résumé, pourquoi certain ne veulent pas faire le saut en c++? Quesque le c++ a de mal?



Tu fais du C++ si tu décides de faire du C++. Point. C'est ton choix. Ca n'a rien à voir avec le C. On peut commencer par l'un ou par l'autre. J'ai pas assez de neurones pour faire du C++.

De toutes façons, c'est pas sur le forum C que tu auras des conseils valables sur le C++...



j'ai pas demander de conseils à ce que je sache. Je veux savoir pourquoi certaine personne ne font pas le saut en c++.

je rajoute, que non je n'ai pas depasser le maître, je dirais même que si un jour j'arrive à accomplir le 1/3 de ce que mateo a fait, je serait satisfait.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 5:16:31

La même chose que j'ai fait en C en 2 mois je l'ai fait en 3 jour en C++ et après 2 mois,elle est beaucoup plus évoluer.

Le C est super mais le C++ est encore mieu car il n'a que des qualités de plus.

Je vous fais remarquer qu'on peut toujours utiliser toutce qui a dans le C dans le C++.Moi je n'utilise pas les cout << "Bonjour!"<< endl;.J'utilise les printf("Bonjour!");.

Finalement,j'utilise le C++ que pour la POO et bientôt,les vectors et les autres choses qui ne sont pas dans le C et qui aide beaucoup.

PS:Je croit qu'une bonne partie du monde qui veulent pas apprendre le C++ se font des préjugés et ne veulent pas passer 1-2 semaines à lire le super tuto de M@téo.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 5:39:46

Je ne parle pas de ne pas apprendre le C++ (je fais du C++ et je trouve ça plus pratique) Juste que la question "pourquoi ne pas passer au C++" ou autrement dit "le C++ et la POO c'est 1000 fois mieux que le C" je trouve ça un peu trollesque. Un peu comme passer de windows à linux ou les débats entre vi et emacs... Pourquoi préférer les chats plutot que les chiens? C'est un peu pareil, y'en a qui préfèrent telle ou telle chose, c'est pas un truc universel. Pour autant, ça m'empêche pas de préférer les chats, d'être sous linux (sans cracher windows pour autant) et de privilégier le C++ en codant sous emacs... Mais je n'aime pas ce genre de débats qui tente d'imposer une règle parce qu'on la trouve meilleure, et qui au final n'aboutissent à rien de concret :-°

De plus, je trouve que dire (le C++ c'est mille fois plus pratique parce qu'on peut faire des cout <<, et qu'on fait du C que depuis quelques mois (là encore ça me concerne aussi, je pense qu'il faut quelques années d'expérience pour maîtriser réellement un langage) bah... c'est un peu trop gros à mon goût ^^
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 5:48:23

@ Treziac : c'est toujours facile déformer une parole, mais la ya un peu d'abu, j'ai premièrement poser une question et je n'ai pas affirmer, j'ai dit que a première vue le c++ avait laire beaucoup plus puissant que le c, à cause de la POO, mais comme tu dis je suis pas vraiment bien placer pour affirmer quoi que ce soit.

Sinon, si tu aurais fait un minimum attention, quand j'ai fait alusion au cout, sétait pour répondre à MyGB qui disant que la syntaxe du c++ était plus difficile.

lewis
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 8:46:50

Citation : Lewis123

>Je veux savoir pourquoi certaine personne ne font pas le saut en c++.


C'est ta notion de "saut" qui est fausse. Tu as l'air de croire que le C mène vers le C++. C'est faux.

Le C et le C++ sont deux langages différents. On utilise l'un ou l'autre en fonction de ses besoins (l'usage de certaines bibliothèques, par exemple, comme QT, impose la connaissance de C++).

Personnellement je trouve le C++ trop complexe pour ce que j'ai à faire, c'est tout. Ca ne me manque pas, même si parfois je regrette qu'il n'y ai plus de 'C with classes' (il reste Objective-C si besoin est, mais la syntaxe est tordue...), car j'ai tendance à donner une orientation objet à mon code C.

http://mapage.noos.fr/emdel/clib.htm

Mais je m'en sors à coup de générateur automatique de code... écrit en C !

Ce qui me plait dans le C, c'est que c'est un 'petit' langage, dont j'arrive à cerner les tenants et les aboutissants. Certes, il y a pas mal de subtilités, mais j'y arrive à peu près.

Le C++ et 20 fois plus complexe, et fait appel à des notions qui me dépassent, à des mots compliqués qui sonnent bien dans les salons, mais qui sont vides de sens pour moi, et surtout, j'aime pas le coté 'enfant dans le dos'... On ne sait jamais ce qui se cache derrière un innocent opérateur. On a l'impression que le code est invalidable, ce qui ne me convient pas du tout, étant habitué à coder des applications extrêmement sûres (telecom 24/7). D'ailleurs cette histoire de Garbage Collector me parait ingérable. Qui décide de libérer la mémoire ? Quand ? Sur quel critères ? Mystère. En C, c'est moi, et j'ai construit des outils qui le prouve (CLIB/ED/SYSALLOC).

Bref, j'ai l'impression de ne rien maitriser du tout et ça, c'est insupportable.

Mais bon, y'en a qui aiment ça...

  • Partager sur Facebook
  • Partager sur Twitter
Music only !
10 août 2008 à 13:51:40

Merci pour ces explications ed.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 15:37:56

Citation : -ed-


Bref, j'ai l'impression de ne rien maitriser du tout et ça, c'est insupportable.



J'avoue qu'avec le C au moins ont à l'impression de controler un minimum l'ordinateur alors que le C++ fait bcp plus penser au visual basic de ce coté là! (->pour ceux qui connaissent pas c'est un language très très haut niveau, dans le sens où l'ont ne crée même pas les fenetres avec du code...)
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 15:44:38

Citation : xcxl

très très haut niveau, dans le sens où l'ont ne crée même pas les fenetres avec du code...)


Tu peux donner un exemple ?
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 15:52:48

Citation : -ed-

D'ailleurs cette histoire de Garbage Collector me parait ingérable. Qui décide de libérer la mémoire ? Quand ? Sur quel critères ? Mystère. En C, c'est moi, et j'ai construit des outils qui le prouve (CLIB/ED/SYSALLOC).


A ma connaissance, pas de Garbage Collector en C++ (C'est une des grosses différences avec Java); Comme en C c'est à la charge du programmeur de s'occuper de ça.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 15:59:45

Citation : freecircus

Citation : -ed-

D'ailleurs cette histoire de Garbage Collector me parait ingérable. Qui décide de libérer la mémoire ? Quand ? Sur quel critères ? Mystère. En C, c'est moi, et j'ai construit des outils qui le prouve (CLIB/ED/SYSALLOC).


A ma connaissance, pas de Garbage Collector en C++ (C'est une des grosses différences avec Java); Comme en C c'est à la charge du programmeur de s'occuper de ça.


+1 C'est la première fois que j'entend parler d'un GC pour C++.

Pour le Visual Basic osef c'est moche et vieux.

Citation : Pas de titre

Après j'ajouterais que la création d'un programme de base en C++ est plus long et fastidieux qu'avec le C (par là j'entends à la création de la classe, destructeur, constructeur et le reste...)


Lol ? C'est vrai que écrire un constructeur et un destructeur c'est hyyyyyyyper fastidieux :-° .
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 août 2008 à 16:06:57

Citation : noob4ever

Citation : freecircus

Citation : -ed-

D'ailleurs cette histoire de Garbage Collector me parait ingérable. Qui décide de libérer la mémoire ? Quand ? Sur quel critères ? Mystère. En C, c'est moi, et j'ai construit des outils qui le prouve (CLIB/ED/SYSALLOC).


A ma connaissance, pas de Garbage Collector en C++ (C'est une des grosses différences avec Java); Comme en C c'est à la charge du programmeur de s'occuper de ça.


+1 C'est la première fois que j'entend parler d'un GC pour C++.



Il existe bien des implementations (genre celle de Hans Boehm), mais de toutes facons, AMHA, un gc est une feature qui est trop ancrée dans le langage pour etre relégué à une lib contrib separée, meme le C++/CLI qui est GC donne une syntaxe absolument ignoble.

Pour le reste, Amen à Ed.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 août 2008 à 16:24:37

SirJulio >> Avec celui de Boehm, on obtientb une syntaxte pas trop moche avec un placement new.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2008 à 17:41:58

Citation : freecircus

Citation : -ed-

D'ailleurs cette histoire de Garbage Collector me parait ingérable. Qui décide de libérer la mémoire ? Quand ? Sur quel critères ? Mystère. En C, c'est moi, et j'ai construit des outils qui le prouve (CLIB/ED/SYSALLOC).


A ma connaissance, pas de Garbage Collector en C++ (C'est une des grosses différences avec Java); Comme en C c'est à la charge du programmeur de s'occuper de ça.


Argh, my fault... J'ai confondu avec Java... Je retire...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
10 août 2008 à 18:02:16

Oui, en C++ comme en C, tu geres ta mémoire.
La ou il faut faire attention, c'est aux appels de constructeurs/destructeurs implicites, qui sont parfois appelés plus souvent qu'on le pense :) (il faut bien comprendre comment ça marche, et le C++ n'a plus de mysteres)
  • Partager sur Facebook
  • Partager sur Twitter

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

10 août 2008 à 18:04:57

Citation : Fvirtman

La ou il faut faire attention, c'est aux appels de constructeurs/destructeurs implicites, qui sont parfois appelés plus souvent qu'on le pense :)


Voilà, c'est à ça que je pensais... C'est le diable...
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
10 août 2008 à 18:06:36

Ben disons que c'est une gymnastique a bien comprendre. Quand tu sais vraiment comment marche le C++, tu peux prévoir ce qu'il va se passer.

Apres, si tu ne maitrises pas (la faute du débutant), c'est qu'il fait des recopies de ses classe bien plus souvent qu'il le croit. Et quand la classe est baleze, les recopies, ça fait mal !
  • Partager sur Facebook
  • Partager sur Twitter

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

10 août 2008 à 18:52:55

Citation : xcxl

Après j'ajouterais que la création d'un programme de base en C++ est plus long et fastidieux qu'avec le C (par là j'entends à la création de la classe, destructeur, constructeur et le reste...)


Ce n'est pas nécessaire. On peut se contenter de prendre du C++ uniquement ce qui simplifie. A peu de choses près un code C est compilable en C++. Ce qui permet de faire du C en C++, en prenant par-ci par-là telle ou telle "avancée" du C++.
Certaines simplifient grandement la vie en rendant implicites certains détails. On aime ou pas. Cf les messages d'Emmanuel.

Le truc, est qu'il convient de connaitre un certain nombre recettes de cuisines pour éviter la survenue de problèmes subtils au fur et à mesure que l'on incorpore des éléments du langages. Objects ? -> comprendre entités vs valeurs, copies et responsabilités. Héritage ? -> comprendre le LSP. Fonctionnement en cas dégradé ? -> comprendre exceptions, RAII, atomicité, ...

Bien sûr, ce sont des concepts que l'on va plus ou moins retrouver en C. Mais sous une forme plus "primitive", dans le sens où il faut tout expliciter à la main (je fais en particulier allusion à la prise en compte des cas dégradés, point qui fait que les deux langages sont bien plus éloignés que ce l'on peut croire de prime abord).
  • 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 à 13:12:03

Comme ça a déjà été mensionné, je pense également que si beaucoup ne passe pas du C au C++ (je suis tout à fait d'accord avec -ed- comme quoi le C++ n'est en rien une suite logique du C et qu'il n'y a pas de raison en soit de passer du C au C++, mais les tuto du site sont hélas orientés ainsi) c'est tout simplement à cause de la réputation du C++ d'être un langage très compliqué.


La grande force du C++, c'est de bénéficier de toute la puissance d'un langage orienté objet (peut être même plus que le Java de par les possibilités d'héritage multiple par exemple). En plus de ça, le C++ offre un nombre de possibilités gigantesque, dont la redéfinition des opérateurs ou encore les exceptions qui permettent de changer radicalement sa façon de coder tout en donnant un code plus clair (qu'avec de if else imbriqués par exemple).

Donc en gros, pour un projet conséquent le C++ a un énorme avantage sur le C, le côté objet permettant par exemple de structurer son code d'une manière que je qualifirais (ça n'engage que moi) de plus naturelle, et en tout cas extrêmement clair (bien sûr tout celà est sous réserve de bien programmer, mais celà vaut pour chaque langage).

Les constructeurs et les destructeurs des classes permettent de gérer plus facilement la mémoire, chaque classe ayant la charge de libérer la mémoire qu'elle utilise lors de sa propre libération, si bien qu'il est beaucoup moins fréquent d'avoir des fuites de mémoires dans un projet en C++ qu'un projet en C où la libération de mémoire se fait un peu où on veut.



Donc connaitre le C++ est un très bon point pour tout ceux qui se destinent à devenir programmeur. Je précise tout de même qu'à l'heure actuelle, la programmation en C++ chez les professionnels est assez rare et en quelque sorte limité à une élite. Ca confirme qu'il peut être intéressant pour un programmeur de connaitre le C++, mais également qu'un programmeur peut très bien s'en passer.

De plus, le tuto pour apprendre le C++ sur ce site est hélas de qualité bien plus basse que les tuto sur le C. Il ne parle que de concepts basiques du C++ (pas d'exception par exemple) et seule la première partie est intéressante, puis celà devient un tuto de Qt qui n'a plus grand chose à voir avec l'apprentissage du langage.

Donc pour ceux qui voudront apprendre le C++, un livre où des cours sur d'autres sites seront nécessaires.
  • Partager sur Facebook
  • Partager sur Twitter
11 août 2008 à 13:25:11

Pour le C comme pour le C++ il faut toujours compléter avec d'autres cours. Les tutoriels sont là pour aider les gens à démarrer et je m'efforce qu'ils remplissent cet objectif.
Si j'ai écarté certaines notions, c'est soit parce que je ne les maîtrise pas assez encore, soit parce que j'ai considéré que ce n'était pas la peine pour une introduction et que je pouvais le réserver pour une future évolution du tuto à un niveau plus élevé. En attendant, j'ai écrit une annexe qui présente la NOTION d'exception à la fin du tutoriel de C++, et je redirige vers des cours pour compléter. Voilà ce que j'ai fait, car je ne peux pas tout faire.

Donc oui, c'est pas un scoop, les tutoriels ne parlent pas de tout et j'ai vraiment fait un choix à ce niveau. Pas de pointeur de fonction en C, pas d'exception en C++. On pourrait compléter la liste pendant un long moment sans jamais être satisfait du tutoriel qui ne sera JAMAIS aussi complet que vous le souhaiteriez (mes petites mains sont déjà assez usées avec tout ce qui a été écrit :-° ).
  • Partager sur Facebook
  • Partager sur Twitter

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