Rien de tel que de bien connaitre le C++ pour apprécier à sa juste valeur le C ;-).
Je pensais aussi que C n'était qu'un sous ensemble du C++. Mais aujourd'hui, les deux languages ont bien des buts différents.
Salut
Les langages C et C++ sont des langages utilise beaucoup pour la programmation système mais quelle langage en choisi .C++
par ce que ce dernier contient C ,mais il est oriente objet
Si tu le fais, ça implique que, par transitivité, C++ = Objective-C. Ce n'est absolument pas le cas.
A noter qu'Il existe l'objective-c++ (mélange du code objective-c et C++)qui est cependant assez limité.Cela permet d'avoir des membres définis en C++ dans les classes objective-C et réciproquement et c'est à peu prêt tout ce qui est possible pour l'instant de faire. Cela est sorti en 2002 pour ne pas effrayer les déceloppeur et ainsi Apple ne faisait pas fuir ceux rebutés à l'idée de tout réecrire.
Si le choix entre C et C++ dépend de l'application à développer, il serait intéressant de donner quelques exemples.
En quoi vous développeriez un logiciel de messagerie instantané (MSN), un driver, un navigateur web, un logiciel comme Everest (connaitre les caractéristiques du PC), un jeu, un Tableur...
Sinon pour quelqu'un qui a fait un peu de programmation objet en Java et C# et qui souhaiterai se rapprocher de la programmation système dans un but simplement d'apprentissage? C pour faire autre chose que de l'OO? Est-ce que C et C++ sont de même niveau (on dit souvent que le C est juste au dessus de l'assembleur et le C++?
Est-il conseillé de commencer par le C pour faire du C++?
Merci









Mon choix dépendra plus des cibles que de l'application. (En gros, C++ si je peux, C si je dois).
Quel sens donnes-tu à programmation système ?Sinon pour quelqu'un qui a fait un peu de programmation objet en Java et C# et qui souhaiterai se rapprocher de la programmation système dans un but simplement d'apprentissage?
Un langage n'est pas à un niveau donné, il couvre un intervalle de niveaux. C++ est certainement des langages que je connais celui qui couvre l'intervalle de niveaux le plus large avec Ada. En gros du niveau du C au niveau maximal couvert par les langages non spécialisés. (Seuls ceux qui confondent les langages de haut niveau avec langage dynamique et disposant d'un GC ne vont pas être d'accord).C pour faire autre chose que de l'OO? Est-ce que C et C++ sont de même niveau
Et où est-ce qu'on met des langages comme BLISS ou BCPL? Faut pas avoir fait d'assembleur pour ne pas voir la couche d'abstraction que donne le C.(on dit souvent que le C est juste au dessus de l'assembleur)
Non. Si ton objectif est de faire du C, apprend le C, si c'est de faire du C++, apprend le C++. Si c'est de faire les deux, commence par le C++.Est-il conseillé de commencer par le C pour faire du C++?
(A ce niveau de discussion, C est un sous-ensemble de C++; ce n'est pas vrai dans le détail et du C idiomatique ne compilera généralement pas en C+).
Pourquoi C++ en premier choix?Mon choix dépendra plus des cibles que de l'application. (En gros, C++ si je peux, C si je dois).
Je vais peut-être me tromper mais je pense à la création d'un driver, création d'un OS (j'ai pas dit que je voulais en créer unQuel sens donnes-tu à programmation système ?)...
Donc il n'y a pas de programme qu'on peut faire en C et pas en C++ (en supposant que la cible de l'application supporte le C et le C++)?En gros du niveau du C au niveau maximal couvert par les langages non spécialisés.
La c'est mon ignorance qui a parlé, je ne connais pas ces langages. Ce que je voulais savoir c'est si le C++ est aussi "bas" (ou "haut" faites votre choix) niveau que le C?Et où est-ce qu'on met des langages comme BLISS ou BCPL? Faut pas avoir fait d'assembleur pour ne pas voir la couche d'abstraction que donne le C.
C'est la que je coince, mon objectif est d'en apprendre un des deux comme ils sont assez complexe, je vais surement mettre un bon moment avant de commencer à faire des trucs sympa, je préfère me limiter à un et l'apprendre bien mais lequel?Non. Si ton objectif est de faire du C, apprend le C, si c'est de faire du C++, apprend le C++. Si c'est de faire les deux, commence par le C++.
C : Pour apprendre autre chose que de l'objet et commencer à gratter les composants du PC tout en restant abordable, l'assembleur (on devrait pas dire langage d'assemblage?) c'est vraiment pas pour maintenant.
C++ : A l'air d'être beaucoup plus apprécié et utilisé pour créer des applications et donc peut-être un peu plus intéressant à long terme à connaitre. Mais peut-on la aussi s'approcher des composants comme en C?
Juste un bref panorama :
Il existe 3 types de langages communs :
- les langages impératifs (C, VBA, Pascal...)
- les langages objets (Java, C++, Objective-C...)
- les langages fonctionnels (Caml, Scheme...)
Si tu veux bien te former commence par le langage C pour comprendre rapidement la logique des structures de données et de la mémoire. Dans un deuxième temps, attaque toi à du C ou Java pour apprendre la conception objet qui est celle la plus utilisée pour des vrais projets de développement.
++
Je me demande si cette discussion pourra prendre fin un jour car les avis sont extrêmement opposés.
Qu'y a t-il de mal à apprendre le C pour mieux comprendre le fonctionnement de la machine et ensuite s'attaquer au fameux C++ langage orienté-objet, PLUS vaste et plus complexe comme si on avait carrément affaire à un nouveau langage ( pour éviter les pièges du genre sur-ensemble du C et consort)!
C'est surtout le RAII la différence. Le "petit" truc qui fait que la gestion des cas non nominaux n'a rien à voir d'un langage à l'autre. Et que la gestion de la mémoire en C++ peut facilement être à des parsecs de celle en C.
Mais bon, ce n'est pas comme si le sujet n'avait pas déjà été abordé dans les 20 dernières pages
[Je m'en tiens au sujet de la mémoire qui semblait être le contexte de votre échange]
C'est surtout qu'il y aura régulièrement des gens avec une vision partielle d'un ou des deux langages pour venir réveiller le troll.
C'est une question sérieuse ? C -> C++ ?
Relis le fil. La réponse a été donnée plusieurs fois.
Pour faire court: non. Un apprentissage du C met systématiquement de côté la partie difficile : écrire du code robuste. Le code scolaire enseigné est souvent simple et plein de failles, et du coup un faux sentiment de sécurité, voire de compréhension, et donc de mauvaises habitudes sont prises pour la suite. (hint: realloc ; test systématique des tous les codes de retour de fonctions ; ... Vous avez vu ça en cours ? Et non!)
La première étape c'est et ce sera toujours l'algo.
Bref, relisez TOUT le fil avant de repartir pour un tour !
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...
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
Personnellement, j'utilise masm, C, C++, VisualBasic, Lua, Python, Ruby, Lisp et dernièrement j'ai commencé à apprendre Fortran
Et bientôt, je ferai un planning pour apprendre C# et Java
Où est le problème ?
Quand on est programmeur on l'est point c'est tout. Et en fonction de nos besoins on utilise le programme le mieux adapté à note projet ou alors en mixer plusieurs.
Par exemple, j'utilise :
Ruby pour scripter Sketchup
Lisp pour scripter Autocad
Python pour scripter xStream
Lua pour scripter mes propres programmes développés en C/C++
VisualBasic pour scripter Excel, Word, Photoshop etc ..
masm/C/C++ pour créer mes propres .dll dont j'appelle les fonctions à partir d'autre langages quand il le faut !!
Alors, vous vous demandez encore quel langage est mieux que l'autre ?! Devenez polyglotte et le problème ne sera plus![]()
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...
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![]()
Partager