Non, si tu veux apprendre le C, apprends le C, mais si tu veux apprendre le C++, apprend directement le C++. L'idée qu'il faudrait connaitre le C pour apprendre le C++ est une vieille lune qui avait du sens il y a 20 ans et qui n'en a plus aujourd'hui. Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.
C'est toujours bien de savoir ce qu'il se passe bas niveau quand tu utilises des trucs de plus haut niveau, tu comprendras plus facilement pourquoi tu as des erreurs, comment optimiser etc ..
@ads00: Bullshit, mais comme je sais que tu ne vas pas me croire sur parole, je vais me permettre de te demander de m'expliquer en détail ce qui se passe lorsque que je fais un malloc (épargne moi les conneries habituelles, genre l'OS me donne la mémoire que je lui ai demandé), et explique moi en quoi utiliser malloc m'aiderai à mieux comprendre le bas niveau qu'utiliser new. Explique moi aussi en quoi lire la taille d'une chaine de caractère via strlen m'en apprendrait plus sur le bas niveau que lire cette même taille en appellant la fonction length() de std::string?
Jte demande pas de me croire, mais j'ai déjà vu des gens écrire des trucs du genre : t[0.2] = 1;
Ou alors mettre ne pas mettre des pointeurs quand la taille d'un objet dans une classe n'est pas connue etc ..
Je viens de voir à l'instant quelqu'un qui ne comprend pas pourquoi il a des erreurs en mettant des données binaires dans un string, ça alors les données sont coupées ! Bizarre !
Sans se balancer des histoires de malloc ou de printf je dirais simplement que le C++ a une syntaxe à peu près identique au C, mais une façon radicalement différente d'aborder le sujet.
Donc NON, si tu veux apprendre le C++ il est complètement inutile d'apprendre le C.
Exactement, c'est pas parce que tu as appris le C que tu comprends ce qui se passe à bas niveau, ce serait même plutôt l'inverse, c'est parce que tu comprends ce qui se passe à bas niveau que tu es capables d'écrire du C qui tient la route.
Evitez d'apprendre le C avant le C++ si l'objectif est d'apprendre le C++. Les bonnes pratiques dans les deux langages n'ont rien à voir. Aujourd'hui on critique même énormément les cours de C++ qui commencent par enseigner le C qui est dans le C++.
Mais une question pour confirmer mes dires, la programmation objet on peut bien crée des petits logiciel avec ? ( Comme une application avec une barre de recherche google, ou autres bien sûr )
Mais je ne comprends pas la pertinence de la question, dans le cadre du C++. En effet, le C++ permet aussi de travailler en OO, comme de ne pas l'utiliser.
La POO n'est qu'une "façon" de programmer, ce n'est pas cela qui va limiter ce que tu peux créer avec. Cela va dépendre surtout du langage, bibliothèques, la documentation, etc.
Par exemple, faire une barre de recherche google sera très compliqué en C++, beaucoup moins en utilisant un framework comme Qt, encore moins en utilisant les outils Google ou d'autres langages (DART ? :D)
Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.
Plus difficile à maîtriser que le C++ ? J’ai des doutes…
Le C est un langage qui peut paraitre simple, mais qui n'a absolument rien de simple, c'est peut être le langage de programmation le plus difficile à maîtriser et je sais de quoi je parle, le C a été mon métier pendant plus de 10 ans.
Plus difficile à maîtriser que le C++ ? J’ai des doutes…
Je dirais que le plus symptomatique est la gestion des erreurs en C. En C, tu as l'obligation de couvrir tous les chemins d'exécution. En C++, les exceptions permettent de limiter cette gestion au strict nécessaire en se prenant bien moins la tête.
De même la gestion des ressources est complexe en C, en C++ le RAII te sauve la vie en te proposant d'exploiter le mécanisme de fonctionnement de la pile.
Enfin, le typage de C++ est suffisamment fort pour t'empêcher de faire de grosses boulettes que tu peux mettre des plombes à comprendre dans un programme C.
Certes, mais le c++ ajoute également tout une couche de concepts complexes et inexistants en C (je pense notamment à des utilisation poussées de l'OO, des templates et à la métaprogrammation en rêgle générale).
Personnellement, je suis arrivé sur le site au moment où le tuto de M@teo sur le C++ demandait d'avoir lu le tuto sur le C, j'ai donc appris le c avant le c++.
Pourquoi vouloir comparer le C et le C++? ce sont 2 langages différents, bien qu'avec des compatibilités et des syntaxes proches.
Enfin, pour répondre à ta question : si tu veut apprendre le c++, apprend le c++. Si tu veux apprendre le C, apprend le C, il n'y a pas de "prérequis" à l'apprentissage de tel ou tel langage, et ça vaut pour TOUS les langages (il est vrai que commencer par apprendre l'assembleur est un peu too much, car c'est de très bas niveau, mais c'est finalement possible, je me souviens d'un concours de prog où on m'a raconté qu'une année, un participant ne connaissait QUE l'assembleur, ça avais bien embêté les orgas d'ailleurs )
Merci de penser au pouce vert si les messages aident, et de mettre votre sujet en résolu si il est résolu !
D'accord, je vous remercie on peut également faire des BINDS à la fin de ce tutoriel ? Ou il faudra approfondir les connaissances ? ( Niveau Seconde Lycée )
Il arrive bien souvent que de "bonnes" habitudes en C deviennent de "mauvaises" habitudes en C++. Tu écriras :
type *var = malloc(n * sizeof(*var));
en C, tandis qu'en C++, c'est déconseillé. Il faudra plutôt faire :
type *var = new type(arg1, arg2...);
Justement non. Déjà tes codes ne font absolument pas la même chose : il y a un tableau dans un cas, et un objet construit avec 2 paramètres dans l'autre. Ils ne sont pas comparables.
Après, new ou malloc, ça ne change pas grand chose. L'habitude venant du C, et qui devient mauvaise en C++, est de croire que l'on peut impunément manipuler des ressources à mains nues dans un monde à exceptions.
Ce malloc ci, en C++, deviendra:
std::vector<type> var(n); // bon, là, c'est plus équivalent à un calloc
Quant au new:
// en C++11
std::unique_ptr<type> var(new type(arg1, arg2)); // std::auto_ptr<> ou boost::scoped_ptr<> en C++98/03
// ou, mieux, en C++14
auto var = std::make_unique<type>(arg1, arg2);
A savoir dans quel cas on va programmer en C et dans quel cas on va plutôt privilégier le C++
Si vous avez des exemples concrets.
Quand on veut grossièrement, avant le C était plus utilisé dans l'embarqué, maintenant il semble que plus grand chose ne s'oppose à l'usage du C++ dans le même domaine.
- Edité par LoupSolitaire 5 décembre 2013 à 21:13:57
× 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.
Discord NaN. Mon site.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Blond, bouclé, toujours le sourire aux lèvres...