il est préférable de choisir c++ comme un langage de programmation, car il est orienté objet mais il faut que vous connaissez le c tout d'abord.
il est préférable de choisir c++ comme un langage de programmation, car il est orienté objet mais il faut que vous connaissez le c tout d'abord.
Le problème du choix des outils à utiliser reste une question personelle. L'outil doit être adapté aux objectif et surtout être maitrisé par son utilisateur.
Alors, C ou C++ ?
Il n'y a que l'expérimentation personelle qui permettra de faire le choix de continuer plus vers l'un ou vers l'autre mais à la base il faudra bien essayer les deux pour se forger une idée.
Le processus du choix d'un language de programmation passe aussi par le développement de sa conaissance générale sur les systèmes que l'on utilise. Certains outils sont clairement plus spécialisés que d'autres, le développement Web ne se fait pas avec des outils utilisés en développement système.
Il y a cependant une base essentielle commune qui passe par la connaissance avancée de l'algorithmie et des principes de base du calcul numérique. Il faut de plus avoir une idée des différences entre les techniques de programmation procédurales et évènementielles ainsi que de savoir ce qu'est un object au sens informatique du terme. J'en oublie sans doutes un peu mais c'est avec tout ceci que l'on sais ce vers quoi il faut concentrer ses efforts.
Le C restera de toute facon un passage plus ou moins obligé, la difficulté étant plus sur sa difficulté de lecture qui impose de beaucoup documenter si l'on souhaite partager son code.
Comme je ne fais rien comme les autresJ'utilise majoritairement du Pascal Object en utilisant le couple Free-Pascal/Lazarus. J'y ai trouvé un IDE libre qui me permet de faire du RAD sur Windows/Linux tout en me permettant de me relire des années plus tard ... Le language est suffisament puissant pour faire du calcul numérique parrallèle et des accés systèmes. Mes programmes sont généralement des petits projects (30.000 lignes de code écrits par moi au maximum) pour applications industrielles.
Mais bien sur chacun a ses préférences et pour moi ce n'est ni le C ni le C++![]()
[Désolé pour le déterrage. EDIT: SVP ne ressassons pas les vielles questions. Voici à la place, de nouveaux éléments dans le cadre d'une comparaison des deux langages.]
Voici quelques présentations, dans le thème de ce long troll, qui ont été données lors du code::dive 2015 (série de confs en Pologne).
Tout d'abord les conférences de Dan Saks, un avocat de longue date pour employer le C++ en embarqué. Il y traite de mindset, c'est à dire, d'états d'esprit, de philosophie, et d'a priori. Il explique que les avocats du C++ ne savent pas parler aux développeurs C et en particulier à ceux qui font de l'embarqué. En particulier il a soulevé le quiproquo sur l'investigation : le développeur C++ met en avant un type (qui en plus n'est pas forcément le plus adapté) que le développeur C trouve inexploitable pour débugguer les soucis. A la place il aurait pu mettre en avant que le nouveau type est là pour intercepter les soucis au plus tôt (en compilation), afin de réduire drastiquement les besoins de debuggage.
Dans ses conférences, il donne des exemples où le C++ apporte de la sécurité grâce à son typage moins laxiste, et ce sans dégrader les performances.
- Sonner Rather that Later:
- Representating Memory Mapped Devices as Objects:
Enfin, il y a aussi la conférence de Bartosz Szurgot:
Pour diverses architectures, il présente un ensemble de flags, et de codes C et leur équivalents C++. Il démontre qu'il est possible d'avoir des exécutables de même taille (voire de taille moindre parfois mais il dit ne pas savoir pourquoi -- dans les cas qu'il présente) et qui sont aussi rapides en C++. Voire des binaires produits à partir de code C++ qui consomment moins de cycles que les équivalents C sur certains processeurs.
Pour être tout à fait franc, je trouve le dernier exemple qu'il présente avec des macros totalement abusé vu que j'aurai plutôt employé des fonctions inlines en C. Maintenant, je dois avouer ne plus écrire de code générique en C.
- C++ vs. C: the embedded perspective:
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
en 2 mots comme il a été écrit maintes fois certainement il vaut mieux commencer par le langage C pour apprendre.
Parce que le langage C est procédural , pas de "surcouche objet" et maintenant les langages fonctionnels ça existe ( comme le F#)
Ensuite le langage C++ a fait suite au langage C,historiquement, mais c'est un langage qui a des méchanismes permettant plus de conceptualisation évoluée , bref ça va au-delà des simples struct{} du C.
Le C++ permet la synergie avec des outils de modélisations comme les concepteurs UML,les méthodologies et les design patterns ce qui est plus difficile avec le C.
En termes très simples et pour raccourcir si tu veux faire un logiciel de compta ou un jeu tu peux concevoir et conceptualiser des classes C++, faire de l'héritage etc..avec UML , faire de l'ingénierie inverse c.a.d. qu'on prend un fichier .cpp et l'outil de conceptualisation ressort un diagramme de classe.
Et puis il y aussi le génie des design patterns ce sont des modèles fonctionnels génériques qui peuvent raccourcir les temps de développement.
Zut! Je ne voulais pas relancer la discussion sur les questions qui ont 15ans.
Juste apporter d'autres éléments comparatifs entre les deux langages.
Et non, il ne vaut pas mieux commencer par le langage C. C'est justement tout le contraire que l'on dit. Ni par le C++, même s'il est bien plus abordable pour un débutant (cf les 20 dernières pages, merci). A l'exception de quelques langages comme CLOS, tous les langages OO sont aussi impératifs et procéduraux. En C++ de surcroit, il n'est pas nécessaire de faire de l'OO (alors que Java ou Eiffel en donnent l'illusion à cause du "pas de fonction libres").
Désolé.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
ok mais je pense que le but fondamental du C++ n'est pas du tout compris....( ça c'est comme faire maths sup et maths spé sans comprendre l'essence même des maths),le but fondamental du C++ comme Java c'est en vue de l'iindustrialisation d'un projet informatique...d'où l'intérêt d'utiliser UML notamment.
Bon si tu veux tu peux avoir ton point de vue, moi le point de vue que j'ai , qui est le plus pragmatique possible et non théorique,après presque 20ans d'expérience en SSII et diverses entreprises c'est qu'un projet informatique le principal est d'être mené à bien et surtout qu'il tourne bien.
C et C++ ont tout deux vocations à réaliser des projets industriels. Tout comme Java et bien d'autres.
Après, tous les langages peuvent servir à l'enseignement de la programmation, et c'est la question vieille de 14ans de l'OP. Mais ils ne sont pas les seuls. Python, Ada, Eiffel avaient leur avantages, maintenant on assiste à l’émergence de Python et même à une volonté d'industrialisation de ce dernier pour certains -- mais on est dans une mouvance qui va à l'opposé de celle du C++ où l'on voit de plus en plus de moyens donnés pour se faire taper dessus par le compilateur quand on écrit des bêtises (cf les articles de la cppcon 2015, ou les propositions pour le C++17, sur la PpC, les concepts, les types opaques, ...)
Bref. Tu as réagis sur l'aspect pédagogie/enseignement. Et là, le passage C -> C++ a des conséquences assez néfastes une fois justement arrivé en industrie. Je pourrais revenir sur les bonnes pratiques du C qui ne sont pas applicables au C++ à causes de exceptions, sur la pratique superficielle du C dans l'éducation (car il est compliqué de montrer des codes complètement corrects (un if toutes les 2 lignes) à des étudiants), et sur bien d'autres choses.
Ceci, c'est un tout petit élément du débat que l'on trouve dans les 20 dernières pages que je ne voulais pas relancer : "par quoi commencer ?".
A la place [Je me demande si je n'aurais pas mieux fait de proposer une "dépêche", racoleuse ou non], j'ai des ressources qui traitent de l'application industrielle, puisqu'on en parle, du C++ dans des secteurs que l'on réserve traditionnellement au C pour des raisons de
- "c'est plus rapide" ,
- "les binaires sont plus petits",
- "qui dit template dit code-bloatting"
- "il est plus facile de débugguer et suivre ce qu'il se passe",
- "on n'a pas besoin d'OO ou que sais-je encore", etc.
Ce à quoi ces ressources répondent:
- "tiens, avec la STL, j'arrive à aller plus vite avec ces options et sur ces plateformes embarquées ou non; ou alors, on ne voit même pas la différence"
- "tiens, avec la STL toujours, et ces mêmes options, la taille est la même, et j'ai même parfois un gain de 4o sans que je sache pourquoi"
- "tiens, la généricité template du C++ me permet de diviser sensiblement la taille de l'exécutable comparé au même code générique à coup de macros" ; ou encore: "il est possible de s'en servir sans augmenter la taille des binaires -- tout en ajoutant de la sécurité au code"
- "pourquoi débugguer quand on peut demander au compilateur de ne pas laisser passer des constructions qu'il peut détecter comme incorrectes ?"
- "C++ n'implique pas nécessairement OO"
Autant dire, rien de théorique ici.
Pour UML. Je suis bien la dernière personne à faire une fixation dessus. Cela va dépendre des applications. Sur une chaine de traitement d'images, l'intérêt est assez limité au delà de la représentation des flots de données, ou un éventuel cadre pour traiter et logguer les erreurs. Sur des applis où il y a de la concurrence et des échanges en particulier asynchrones, je ne sais vivre sans diagrammes de séquences.
Maintenant, dans le débat C VS C++... Ma foi. Il peut être employé sur les deux, il ne m'apparait comme pas nécessairement discriminant -- surtout dans le cadre du déterrage du débat trollesque sur le choix du premier des deux à voir en enseignement.
Dire que UML n'est pas adapté au C, c'est juste admettre que C ne dispose pas des sucres syntaxiques apportés par le C++ pour faire de l'OO. Rien n'empêche d'avoir une approche OO en C, voire d'utiliser le vieux COS qui permet des choses comme le double-dispatch que le modèle de OO du C++ et fils (Java, C#, ...) ne permet pas sans Design Patterns. De même, on peut avoir une approche 0% OO en Java (Il suffit de multiplier les méthodes statiques et les setters triviaux qui portent bien leur nom).
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Moi tous ce j'ai à a dire c'est que j'aime la programmation et surtout le c
J ai le langague C mais lui le C m aime pas car chaque fois j essaye j y arrive pas...meme mais on va faire un devoir sur le langague C....
Pars pour du C pour plusieurs raison
Tu veux faire de la programmation sous un kernel Linux donc, tu pourras apprendre le langage de programmation qui a permis l'apparition de cet os
On te dit de faire du C++ sauf que ce langage est certes plus facile à utiliser mais très difficile à maîtriser du la notion nettement plus important que le C.
Avec le C tu apprendras le langage beaucoup plus rapidement car il possède moins de notions sauf que tu aura une puissance pour certains ou un gigantesque problème : l'allocation dynamique / lib standard un peu faible
Moi je trouve que gérer la mémoire n'est pas un inconvénient ça t'apprendra la rigueur
Et pour la lib standard tu as deux choix coder toi même la principale structure de donnée ou utiliser la libc ou glib j'ai zapper le nom .
Tu as une excellente chaine youtube pour apprendre le C ces formation vidéo .
Le choix d'un langage de programmation qu'el qu'il soit depend en particulier au besoin individuel d'une personne ou une organisation
Effectivement comme beaucoup de messages l'expliquent, cela dépend :
- Des besoins pour lesquels vous voulez apprendre à programmer
- Des connaissances préalables que vous avez
- Des contraintes du projet
Le C peut emmener naturellement vers le C++ et le C++ découle du C donc l'un dans l'autre vous apprenez les deux de toutes façons![]()
j'ai bien essayé de comprendre le C puis c++,( au fait q je voulais vraiment maîtriser le langage procédural), même avec ce dont on peut se voir fort, cela réserve un témoignage que c'est un (2 in one) langage plus zigzague q j'jamais connu.
J'ai débuté la programmation avec le langage C c'était traumatisant je l'avoue, puis après avoir appris les bases et les intermédiaires du langage je suis passé au C++ que j'ai beaucoup aimé, c'était pour moi énormément plus simple que le C, j'ai du coup adopté le C++ comme mon langage principale.
Merci bien. Au fait suis nouveau dans le forum ; )
Sérieusement? On a je ne sais combien de pages qui expliquent la différence entre les deux langages. Que le C++ c'est beaucoup, mais alors beaucoup plus que du C avec des classes ou juste de la syntaxe en plus (A commencer par les exceptions changent profondément la donne sur les bonnes pratiques). Que le C est tout sauf un prérequis pour le C++, que limite c'est un frein pour aborder ce dernier correctement.
Bref. STP, lis les 150 messages qui ont été écrits.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Bonjour,
personnellement, je n’ai jamais su que j’allais faire de l’informatique, car déjà en classe de 4ème avec des amis j’apprenais à rendre les PlayStation One universelle et à réparer la nappe(cordon ou bus) des lecteurs CD.
Puis en classe de première S j’ai découvert une calculatrice HP 32SII sans notice. Pour faire 1+2 égale 3 c’était un calvaire. J’ai appris 1 mois après que c’était du Basic et j’ai réussi à l’utiliser et à automatiser le calcul de la moyenne des élèves pour aider le prof.
Après le Bac je me suis lancé dans l’informatique et la gestion. Le seul truc ou j’excellais (d’ailleurs j’avais recours à développez.com en ce temps pour des TD), c’était bien 🙂 l’algo
J’avais lu que le basic était l’un des langages d’initiation à la programmation jadis. En IG1 pour moi c’était PASCAL avec turbo pascal 7. En IG2 on nous a ajouter le C sans compiler pour tester (difficile et répugnant tous on a trouvé). Des années après j’ai découvert ARDUINO et mes motivations pour le C ont été déclenché.
Des années de plus j’ai monter une imprimante 3D en kit de zéro et j’ai vu encore que ce même ARDUINO est réapparu. cette fois ci j’ai augmenter ma bibliothèque 📚
+ pour l’algo : INFORMATIQUE Algorithmes en pascal et en C 2 édition de Yves Granjon (dunod)
+ le livre : C/C++/C# LA BIBLE DU PROGRAMMEUR 2 édition (Reynald Goulet) le C# n’était pas déjà une option pour moi mais cohabite dans ce livre avec les 2 C
+ système : conception de système d’exploitation le cas de Linux (eyrolles)
+ plus d’autres types de bouquin. Bien sûr il faut avoir 2 approches les lire rapidement de façon sommaire et revenir pour une étude approfondie.
TOUT ÇA POUR DIRE QUE LE CHOIX EST EN FONCTION DE CE QUE TU VEUX FAIRE.
Fais un langage ou tu ne te perds pas juste pour l’algo. . Maintenant si tu es têtu à faire du système ou de ça ton langage. Alors fais C puis C++. Moi je viens encore de lire sur open classroom C pour le système embarqué. Ça ne fait que revenir C proche de la machine C système C embarqué et C en 20heures puis C++ pour le compléter. C’est pour cela que c’est noter en couple C/C++. Fais une recherche rapide et choisi un langage pour ton algo puis attaque ton C. Ensuite C++ je te le répète. Mais tu feras les 2 pour finir.
PS: pourquoi les livres 📚. Eh beh c’est pour les utiliser comme référence et apprendre en douceur à chaque fois que quelque chose m’echappe.
Moi je pense que notre parcours ou ce qu’on cache en nous se dévoile seul. Le fait de faire de l’électronique en hobby m’a poussé naturellement vers le matériel. Le fait d’avoir découvert au hasard le BASIC m’a diriger vers la programmation. Le fait d’avoir reçu un initiation au sup de pascal puis en C m’a guider pour le choix de mes livres pour ne pas casser le rythme. Maintenant le commun des mortels doit accepter que ce qu’on apprend n’est pas toujours utile à la demande sur le marché autour de toi je précise d’où chez nous on demande plus le développement web. Mais tous ses systèmes resteront opérationnels car on a toujours besoin du C ou du Java ou autre pas encore mort 💀. . Il faut aussi penser 🤔 à s’orienter dans quelque chose qui aboutira à de réels projets. Apprendre un peu de tout n’est pas mal. Et se perfectionner dans ce qui servira.
Oui 👍 on d’accord là. Première étape algo la base couplé à un langage comme Pascal. Deuxième étape C jusqu’à ce que tu apprennes les bases ou jusqu’à ce que arrives à gérer beaucoup de choses avec ce C. Troisième étape C++ pour compléter ce C. Dernière étape les autres types de langage pour faire le tour et avoir des armes
Encore je partage son avis. Il faut apprendre les bases correctement si les profs avaient introduit C dès le départ je ne suis pas sûr que des étudiants allaient continuer. Moi je pense que pour quelqu’un qui veux même commencer par C il lui faut du temps, du courage et de la pédagogie (il y a de bons livres qui vont en douceur). Finis ses concepts en C : (les pointeurs, la récursivité, l'allocation mémoire, les structures de données) bien sûr tu pourras revenir pour t’approfondir en C quand tu veux ou quand c’est nécessaire. Ensuite apprends C++ toujours pour compléter ton C et je me répète pour que ça devienne un couple C/C++. Et en revenant souvent te forger en C/C++ pour ne pas oublier; tu auras des aptitudes particulières et tu seras vraiment aguerri (samouraï) tu auras pris ton avance par rapport aux autres sur LE MATÉRIEL. Enfin apprends tout ce que tu peux pour être opérationnel sur le marché.
Partager