Pages : 1
#1 Le 02/10/2007, à 00:14
- Guardian08
C ou C++?
Lequel apprendre?
#2 Le 02/10/2007, à 00:38
- best_friend_fr
Re : C ou C++?
Salut
C'est tres similaire. Le seul truc, c'est que (trop) souvent, les cours de C++ suppose que tu connaisse un minimum de C.
Apres, ca depend de ce que tu veux faire. Si tu veux faire de l'oriente objet, C++ est clairement mieux. Sinon, tu peux commencer par le C, ca t'apprendra a gerer la memoire.
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#3 Le 02/10/2007, à 00:53
- titienne
Re : C ou C++?
va faire un toure sur le http://www.siteduzero.fr
Hors ligne
#4 Le 03/10/2007, à 21:57
- Trolleur
Re : C ou C++?
de toute facon, il faut savoir un minimum de c pour faire du c#, donc commence par apprendre le c. http://www.siteduzero.com/tuto-3-8-0-apprenez-a-programmer-en-c.html, je trouve que c'est un bon site.
Hors ligne
#5 Le 04/10/2007, à 00:54
- mfc_alpha
Re : C ou C++?
Le C, c'est un peu comme ca que programmait nos grand parent
Mais c'est super efficasse et vraiment utile site tu veut savoir ce que tu fait en programmant.
En plus pour apprendre le C++, il faut connaître le C comme le disent trolleur et best_friend.
Mais le C++ apporte de nouveau concept (enfin par rapport au C, parceque ca commence a datter tout ca!) donc la programmation orienté objet.
Ca permet de faire les choses differements et souvent plus simplement.
Et je te conseil aussi le site du zero!
Hors ligne
#6 Le 04/10/2007, à 02:40
- Link31
Re : C ou C++?
C'est tres similaire.
C'est la meilleure celle-là.
Mis à part l'objet, la principale différence entre le C et le C++ c'est le niveau. Le C est bas niveau, et le C++ est haut niveau. Ça signifie en gros que comparativement, il faudra beaucoup plus de code pour faire quelque chose en C que pour faire la même chose en C++. Mais l'avantage de programmer à un plus bas niveau, c'est qu'on a un contrôle total sur tout ce qu'il se passe. Non seulement on comprend beaucoup mieux le déroulement du programme, mais en plus on peut placer des optimisations ici et là qu'on n'aurait pas pu utiliser avec un langage de plus haut niveau.
C'est pour cela qu'on dit que le C est légèrement plus rapide que le C++, et qu'il est plus adapté à des traitements répétitifs (d'où le gain de performances). Mais tout dépend évidemment du type de programme, et, je le répète, le gain est bien souvent négligeable.
Si tu veux faire des petits programmes facilement, ou des algorithmes ultra-rapides comme de l'encodage vidéo, de la compression... le C est bien adapté. Si tu veux faire de l'électronique ou des drivers, le C est bien adapté aussi, puisqu'on contrôle jusqu'au moindre octet.
Mais si tu veux faire des programmes à interface graphique, des jeux 3D... la complexité devient telle que le C++ est beaucoup plus utile.
Bien évidemment, on peut quand même faire des interfaces graphiques en C (GTK) et des algorithmes en C++. C'était juste pour montrer l'utilité en général de chacun de ces langages.
Enfin, il y a un dernier détail, et non le moindre, qui peut orienter ton choix : le C est un langage facile à apprendre et facile à utiliser (du moins une fois qu'on a bien compris comment gérer la mémoire). Le C++ est beaucoup plus puissant, mais infiniment plus complexe...
Si tu veux commencer par le C++, sache que tu n'es pas du tout obligé de passer par le C. À vrai dire je ne sais pas quelle voie est la meilleure, mais on dit qu'apprendre le C avant le C++ fait prendre de mauvaises habitudes. D'un autre côté, connaître la syntaxe et des points délicats comme les pointeurs peut faciliter l'apprentissage du C++, et il y a bien assez de choses à apprendre pour ne pas en rajouter.
Dernière modification par Link31 (Le 04/10/2007, à 02:47)
Hors ligne
#7 Le 04/10/2007, à 02:54
- best_friend_fr
Re : C ou C++?
Mouais, je parlais au niveau utilisation. Clairement, le C++ est plus proche du C que du Python ou du CaML...
Maintenant, le C++ n'etait (j'insiste sur le passe) qu'une surcouche du C avant de devenir un langage a part entiere. Et je pense qu'on peut toujours compiler n'importe quel programme (correct) C en C++ (je ne suis pas sur au niveau du typeur, mais ca doit etre le seul limitant). En particulier, tu peux faire du bas niveau en C++.
Ensuite, les differences apportees le sont souvent par les bibliotheques exterieures qui utilisent ou non l'obje (et les autres differences comme les exceptions, les stream...)
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#8 Le 04/10/2007, à 21:12
- Guardian08
Re : C ou C++?
Je ne veux pas faire d'appli 3d juste des petits truc sympa en réseau ! Mon but n'est pas du tout ce qui touche aux jeux video ou autres!
#9 Le 04/10/2007, à 21:21
- AuraHxC
Re : C ou C++?
Pour le reseau, le C est très interessant.
Sinon C# c'est pas C++ et je suis d'accord pour dire que lorsqu'on connait le C c'est plus facile de se mettre au C++ enfin ca été mon cas.
Hors ligne
#10 Le 04/10/2007, à 23:37
- Link31
Re : C ou C++?
En particulier, tu peux faire du bas niveau en C++.
Mouais, si on n'est pas trop exigeant.
Parce qu'un new qui te fait quelques milliers d'opérations derrière ton dos, ce n'est pas toujours pratique pour du bas niveau.
Hors ligne
#11 Le 05/10/2007, à 01:18
- slapierre
Re : C ou C++?
Je ne vais pas en rajouter une couche, j'en ai fini avec les querelles! Je vais simplement dire qu'il faut faire la distinction entre la philosophie et les méthodes de développement, soit le fond et la forme.
Un *excellent* livre sur la programmation C, avec une approche orientée objet, qui met l'enphase sur l'encapsulation, un concept largement négligé par les programmeurs C (les "mauvais plis") dont parlait Link31 :
> Philippe Drix - Langage C norme ANSI: vers une approche orientée objet, Masson.
Je suggère : un peu de C pour le vocabulaire de base, puis un bon livre sur les patrons de conception. Ensuite, programmer en Java, C++ ou Python devient une question de connaître les "règles de grammaire" (que ceux qui ont suivi le cours sur les compilateurs hochent de la tête en guise d'approbation!)
---
Avez-vous remarqué une recrudescence des messages du type "comment compiler" & al. depuis que l'épinglé de Link31 est disparu?
Simon
"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton
Hors ligne
#12 Le 05/10/2007, à 06:40
- Guardian08
Re : C ou C++?
C'est puissant Python? Je ne connais pas du tout !
#13 Le 05/10/2007, à 09:16
- jujuz
Re : C ou C++?
C'est puissant Python? Je ne connais pas du tout !
si tu ne connais aucun langage, Python est très intéressant, si tu veux debuter dans la programmation je te le conseille.
et pour reprendre slapierre
d'un autre cote, le fait de commencer par le C te permet de devenir tres rigoureux, tu va tellement te prendre la tete sur les erreures du type "core dump", "segmentation fault", les pointeurs, les pointeurs de pointeurs(, ... ahaha llala nostalgie,) qu ensuite, faire du python, du Java du perl ou tous autre langages "de plus haut niveau" te paraîtra plus trivial.
++
Dernière modification par jujuz (Le 05/10/2007, à 09:30)
Hors ligne
#14 Le 05/10/2007, à 15:42
- Luc Hermitte
Re : C ou C++?
En plus pour apprendre le C++, il faut connaître le C comme le disent trolleur et best_friend.
Ce n'est pas ce que j'ai lu. De plus, c'est une idée reçue des plus fausses.
Le C est bas niveau, et le C++ est haut niveau.
C'est un raccourci moyennement exact.
Tous les langages traitent différents axes plus ou moins profondément. Alors que le C++ va aussi loin dans le bas niveau que le C, il va en revanche beaucoup plus loin dans le haut niveau.
le C est légèrement plus rapide que le C++
Une autre idée reçue. Utilise les constructions du C en C++ et tu iras aussi vite -- sauf mauvais compilo.
Utilise les constructions du C++, et tu pourras aller plus vite (ex qsort vs std::sort) comme plus lentement (ex stdio vs iostream) que les constructions équivalentes du C.
La force du C va résider sur sa (relative) simplicité. Dans l'embarqué, il est plus facile de trouver un bon compilo C qu'un bon compilo C++. Plus tous les problèmes d'absence d'ABI normalisée en C++.
Enfin, il y a un dernier détail, et non le moindre, qui peut orienter ton choix : le C est un langage facile à apprendre et facile à utiliser (du moins une fois qu'on a bien compris comment gérer la mémoire). Le C++ est beaucoup plus puissant, mais infiniment plus complexe...
Si tu veux commencer par le C++, sache que tu n'es pas du tout obligé de passer par le C. À vrai dire je ne sais pas quelle voie est la meilleure, mais on dit qu'apprendre le C avant le C++ fait prendre de mauvaises habitudes. D'un autre côté, connaître la syntaxe et des points délicats comme les pointeurs peut faciliter l'apprentissage du C++, et il y a bien assez de choses à apprendre pour ne pas en rajouter.
Tout est question d'ordre. On fait plus vite le tour du C, mais on est beaucoup plus vite productif en C++. Encore faut-il apprendre le C++ comme un langage à part entière, et non comme un C avec des objets. Le langage nous permet de retarder l'étude du point noir de l'apprentissage du C, à savoir les pointeurs dont on n'a pas véritablement besoin avant le polymorphisme (d'inclusion).
Je ne dis pas qu'il ne faut pas les voir. Juste qu'il faut les voir au moment opportun.
best_friend_fr a écrit :En particulier, tu peux faire du bas niveau en C++.
Mouais, si on n'est pas trop exigeant.
Parce qu'un new qui te fait quelques milliers d'opérations derrière ton dos, ce n'est pas toujours pratique pour du bas niveau.
On n'est pas obligés d'utiliser new sur les types POD en C++. Et combien même, on peut rediriger notre new.
le fait de commencer par le C te permet de devenir tres rigoureux, tu va tellement te prendre la tete sur les erreurs du type "core dump", "segmentation fault", les pointeurs, les pointeurs de pointeurs
Mouais, je suis tout sauf convaincu. Vu les codes que je croise régulièrement, et ceux usuellement pratiqués en cours/TD, cet argument me parait des plus naïfs tellement un code juste touchant aux I/O est vite complexe en C dès que l'on veut faire des choses pratiques à utiliser (p.ex. sans limitation du nombre de caractères de nos chaines). La glib (IIRC) est salvatrice, mais pas vraiment dans les canons de l'enseignement -- d'autant que l'on y perdrait l'intérêt d'apprendre le C.
#15 Le 05/10/2007, à 17:29
- slapierre
Re : C ou C++?
et pour reprendre slapierre
d'un autre cote, le fait de commencer par le C te permet de devenir tres rigoureux, tu va tellement te prendre la tete sur les erreures du type "core dump", "segmentation fault", les pointeurs, les pointeurs de pointeurs(, ... ahaha llala nostalgie,) qu ensuite, faire du python, du Java du perl ou tous autre langages "de plus haut niveau" te paraîtra plus trivial.
Je crois avoir été mal interprété : quand je parle de "mauvais plis", il s'agit de mauvaise méthodes de conception!
Les erreurs que tu mentionnes touchent les "méthodes" que je décrivais, et non la "philosophie de conception". Selon moi, ce type de problème ("core dump", ...) ne forme pas les gens à une plus grande rigueur dans l'élaboration d'un programme, mais à reconnaitre les différentes situations hasardeuses, et à appliquer des recettes, par exemple : l'allocation dynamique d'un tableau de pointeurs.
Le véritable problème du C, c'est le manque d'encapsulation, ce qui revient, en C++, à mettre tous les attributs d'une classe "public".
Simon
"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton
Hors ligne
#16 Le 05/10/2007, à 18:32
- Link31
Re : C ou C++?
Tous les langages traitent différents axes plus ou moins profondément. Alors que le C++ va aussi loin dans le bas niveau que le C, il va en revanche beaucoup plus loin dans le haut niveau.
Si tu fais du bas niveau en C++, ça équivaut à faire du C. La syntaxe est quasiment la même.
Une autre idée reçue. Utilise les constructions du C en C++ et tu iras aussi vite -- sauf mauvais compilo.
Utilise les constructions du C++, et tu pourras aller plus vite (ex qsort vs std::sort) comme plus lentement (ex stdio vs iostream) que les constructions équivalentes du C.
Je pense que j'ai passé le stade des idées reçues, aussi bien en C qu'en C++
Mais un code optimisé en C sur des types simples sera forcément plus rapide qu'un code optimisé en C++ tel que la STL, qui est de plus haut niveau et plus généraliste.
À ton avis, pourquoi Xine est écrit en C ? Tout simplement parce que tous les compilateurs C++ sont bien loin d'être aussi optimisés que les compilateurs C, y compris g++. Donc le C++ n'est pas aussi optimisé que le C, c'est un fait.
La force du C va résider sur sa (relative) simplicité. Dans l'embarqué, il est plus facile de trouver un bon compilo C qu'un bon compilo C++. Plus tous les problèmes d'absence d'ABI normalisée en C++.
C'est surtout qu'il faut trouver la place pour la bibliothèque standard C++. Il y a bien le projet uclibc++, mais il est toujours en développement.
Tout est question d'ordre. On fait plus vite le tour du C, mais on est beaucoup plus vite productif en C++
Pas "beaucoup plus vite productif", mais "beaucoup plus productif", lorsqu'on maîtrise bien le C++, ce qui est beaucoup (beaucoup) plus long que de maîtriser le C.
On n'est pas obligés d'utiliser new sur les types POD en C++. Et combien même, on peut rediriger notre new.
Si tu utilises des malloc, alors autant faire du C...
Hors ligne
#17 Le 05/10/2007, à 18:56
- hello_world
Re : C ou C++?
Hello,
en même temps, pourquoi ne pas apprendre directe du c# qui n'est sans doute pas plus compliqué que du c++ et qui permet d'arriver très rapidement à des programmes présentables grâce à monodevelop. Après il y aura bien sur des gens qui vont dire que c'est trop lent parce que c'est patati, et c'est pas éthique parce que patata... bref, il y a des désavantages et des avantages, mais c'est sans doute un pari sur l'avenir. Beaucoup d'applications de dernières générations (f-spot, banshee, tomboy, etc) sont écrit en c#.
Bref, essaye monodevelop, et si ça te plait, apprend le c# ;-)
++
Hors ligne
#18 Le 05/10/2007, à 19:22
- Luc Hermitte
Re : C ou C++?
Luc Hermitte a écrit :Tous les langages traitent différents axes plus ou moins profondément. Alors que le C++ va aussi loin dans le bas niveau que le C, il va en revanche beaucoup plus loin dans le haut niveau.
Si tu fais du bas niveau en C++, ça équivaut à faire du C. La syntaxe est quasiment la même.
Je ne critiquais que le "C plus bas niveau de le C++", qui ne veut pas dire grand chose et plus d'être faux vu qu'ils touchent aussi bas l'un comme l'autre.
Luc Hermitte a écrit :[...]Utilise les constructions du C en C++ et tu iras aussi vite -- sauf mauvais compilo.
Utilise les constructions du C++, et tu pourras aller plus vite (ex qsort vs std::sort) comme plus lentement (ex stdio vs iostream) que les constructions équivalentes du C.[...]
Mais un code optimisé en C sur des types simples sera forcément plus rapide qu'un code optimisé en C++ tel que la STL, qui est de plus haut niveau et plus généraliste.
Et pourtant, std::sort enfonce systématiquement (au détail des caches parfois) qsort sur ces types simples. Le fait que la SL soit à 99% inlinée fait sa petite différence. Bien sûr, on peut écrire (copier-coller powa') une version spécialisée de qsort pour les int ...
[...]parce que tous les compilateurs C++ sont bien loin d'être aussi optimisés que les compilateurs C, y compris g++. Donc le C++ n'est pas aussi optimisé que le C, c'est un fait.
(J'avoue ne pas avoir suivi les dernières évolutions, mais pour l'instant, je ne considère pas GCC comme une foudre de guerre non plus. Mais, bon on s'éloigne.)
Un fait ?
Ceci est un (/sont une collection de) fait(s) -> http://www.open-std.org/jtc1/sc22/wg21/docs/18015.html
B.Stroustrup y fait référence dans son point à la veille de la future norme -> http://www.research.att.com/~bs/hopl-almost-final.pdf
Il y a certes des surcoûts, mais pas toujours là où on les croit. C'est pour cela que je parle d'idées reçues. Car elles sont légions, et ce fil les entretient.
Luc Hermitte a écrit :Tout est question d'ordre. On fait plus vite le tour du C, mais on est beaucoup plus vite productif en C++
Pas "beaucoup plus vite productif", mais "beaucoup plus productif", lorsqu'on maîtrise bien le C++, ce qui est beaucoup (beaucoup) plus long que de maîtriser le C.
Ah!? Me serait-je mal exprimé? Au temps pour moi.
J'entends qu'on peut produire des programmes justes et servant à quelque chose bien plus rapidement relativement à au processus d'apprentissage. Je ne faisais pas référence au processus de developpement. Il est inutile de maitriser tous les arcanes du C++ pour savoir s'en servir en procédural (cf le bouquin de F.Glassborrow).
Luc Hermitte a écrit :On n'est pas obligés d'utiliser new sur les types POD en C++. Et combien même, on peut rediriger notre new.
Si tu utilises des malloc, alors autant faire du C...
Et pourquoi devrais-je renier généricité, et meta-prog ? Le C++ m'offre le meilleur des deux mondes. En fonction de contraintes locales à chaque traitement, je peux utiliser ce qui convient le mieux. Que cela vienne du C, ou que cela soit un ajout du C++.
Après, je reconnais bien volontier qu'il faut bien plus d'années pour maitriser le C++.
Au fait, pour en revenir à la question de l'OP. Dans la mesure où tu vises des applications réseaux, traditionnellement le C++ n'apporte rien à ce domaine vu que toutes les API réseaux s'interfacent avec du C (retour indirect aux pbs d'ABI, tout ça). Ce qui m'empêche pas que le domaine de ce que tu réalises (et qui exploite le réseau) puisse profiter d'un codage en C++.
Après, il existe des sur-couches portables en C++ qui sont plus ou moins conséquentes et abouties, et qui font abstraction de certains détails d'utilisation (ACE, boost.asio, poco, Qt, wxWidget, etc).
#19 Le 06/10/2007, à 23:20
- Guardian08
Re : C ou C++?
Je ne peut pas faire d'applis réseau en C++?
Pages : 1