J'ai visité une journée portes ouvertes du département CS de l'université aujourd'hui et lors de la tournée des laboratoires, nous nous sommes assis pour jouer avec quelques projets de dernière année d'étudiants de premier cycle. L'un était particulièrement bon - une sorte de jeu d'astéroïdes FPS. J'ai décidé de jeter un œil dans le src
répertoire pour constater que cela avait été fait en C ++ (la plupart des autres projets étaient des applications Java 3D).
Je n'ai jamais fait de C avant mais j'ai regardé du code C avant. D'après ce que j'ai vu dans le code .cpp de ce jeu, cela n'avait pas l'air très différent.
Je suis intéressé par l'apprentissage du C ou du C ++, mais j'apprendrai probablement l'autre plus tard. Y a-t-il un avantage à apprendre l'un avant l'autre et si oui, lequel?
Réponses:
Il n'est pas nécessaire d'apprendre le C avant d'apprendre le C ++.
Ce sont des langues différentes . C'est une idée fausse courante que C ++ dépend en quelque sorte de C et non d'un langage entièrement spécifié en soi.
Ce n'est pas parce que C ++ partage beaucoup de la même syntaxe et beaucoup de la même sémantique que vous devez d'abord apprendre le C.
Si vous apprenez C ++, vous apprendrez éventuellement la plupart de C avec quelques différences entre les langages que vous apprendrez au fil du temps. En fait, il est très difficile d'écrire du C ++ correct car les programmeurs C ++ intermédiaires ont tendance à écrire en C / C ++. C'est vrai que vous ayez ou non commencé avec C ou C ++.
Si vous connaissez d'abord C, c'est un avantage supplémentaire pour apprendre le C ++. Vous commencerez par connaître une partie de la langue. Si vous ne connaissez pas C d'abord, il est inutile de vous concentrer sur une autre langue. Il existe de nombreux bons livres et tutoriels disponibles qui vous permettent de ne rien savoir et qui couvriront tout ce que vous apprendriez de C qui s'applique également au C ++.
Veuillez consulter le raisonnement supplémentaire dans cette réponse .
la source
J'adore cette question - c'est comme demander "que dois-je apprendre en premier, le snowboard ou le ski"? Je pense que cela dépend si vous voulez faire du snowboard ou du ski. Si vous voulez faire les deux, vous devez apprendre les deux.
Dans les deux sports, vous dévalez une colline sur la neige en utilisant des dispositifs suffisamment similaires pour provoquer cette question. Cependant, ils sont également suffisamment différents pour que l'apprentissage de l'un ne vous aide pas beaucoup avec l'autre. Même chose avec C et C ++. Bien qu'ils semblent être des langages suffisamment similaires en termes de syntaxe, l'état d'esprit dont vous avez besoin pour écrire du code OO par rapport au code procédural est suffisamment différent pour que vous deviez pratiquement commencer par le début, quelle que soit la langue que vous apprenez en second.
la source
J'ai d'abord appris le C, et j'ai suivi un cours sur les structures de données utilisant le C, avant d'apprendre le C ++. Cela a bien fonctionné pour moi. Un cours sur les structures de données en C m'a donné une solide compréhension des pointeurs et de la gestion de la mémoire. Cela a également mis en évidence les avantages du paradigme orienté objet, une fois que j'ai appris ce que c'était.
D'un autre côté, en apprenant d'abord le C, j'ai développé des habitudes qui m'ont initialement amené à écrire du mauvais code C ++, comme une utilisation excessive des pointeurs (alors que les références C ++ feraient) et du préprocesseur.
C ++ est vraiment un langage très complexe avec de nombreuses fonctionnalités. Ce n'est pas vraiment un sur-ensemble de C, cependant. Il existe plutôt un sous-ensemble de C ++ composé des constructions de programmation procédurale de base (boucles, ifs et fonctions), qui est très similaire à C.Dans votre cas, je commencerais par cela, puis je progresserais vers des concepts plus avancés comme des classes et des modèles.
La chose la plus importante, à mon humble avis, est d'être exposé à différents paradigmes de programmation, comme procédural, orienté objet, fonctionnel et logique, dès le début, avant que votre cerveau ne se fige dans une seule façon de regarder le monde. Incidemment, je vous recommande également fortement d'apprendre un langage de programmation fonctionnel, comme Scheme. Cela élargirait vraiment vos horizons.
la source
Si vous décidez d'apprendre les deux (et comme d'autres personnes l'ont mentionné, il n'est pas nécessaire explicitement d'apprendre les deux), apprenez d'abord C. Passer du C au C ++ ressemble à une progression naturelle; aller dans l'autre sens, c'est comme attacher délibérément une main derrière le dos. :-)
la source
Je pense que vous devriez d'abord apprendre C, car j'ai appris C d'abord. C m'a donné une bonne compréhension de la syntaxe et des pièges avec des choses comme des pointeurs, qui se retrouvent tous dans C ++.
Je pense que C ++ permet de résumer facilement tous ces pièges (besoin d'un tableau qui ne débordera pas lorsque vous utilisez l'opérateur [] et un index douteux? Bien sûr, créez une classe de tableau qui vérifie les limites) mais vous devez savoir quoi ils le sont et se font mordre par eux avant que vous ne compreniez pourquoi les choses se font de certaines manières.
En fin de compte, la façon dont le C ++ est généralement enseigné est "C ++ est C avec des objets, voici les trucs C et voici comment tous ces trucs OO fonctionnent", donc vous êtes susceptible d'apprendre le C de base avant tout C ++ réel si vous suivez la plupart des textes de toute façon.
la source
Je ne suis pas d'accord avec la majorité ici. Je pense que vous devriez apprendre le C avant d'apprendre le C ++. Ce n'est certainement pas nécessaire, mais je pense que cela rend l'apprentissage du C ++ beaucoup plus facile. C est au cœur du C ++. Tout ce que vous apprenez sur C est applicable au C ++, mais C est beaucoup plus petit et plus facile à apprendre.
Prenez K&R et lisez cela. Il est court et vous donnera un sens suffisant de la langue. Une fois que vous avez les bases des pointeurs et des appels de fonctions, vous pouvez passer un peu plus facilement au C ++.
la source
static
, des modèles (et les erreurs de modèle ridiculement intimidantes que les compilateurs émettent), etc.Au cours du processus d'apprentissage du C ++, vous apprendrez également la majeure partie du C. Mais gardez à l'esprit que beaucoup de code C ++ n'est pas valide C. C ++ a été conçu pour être compatible avec le code C, donc je dirais d'abord apprendre C ++. Brian a écrit une excellente réponse à ce sujet.
la source
Comme les réponses à de nombreuses autres questions de la vie, cela dépend. Cela dépend de vos intérêts et objectifs en matière de programmation. Si vous voulez programmer des applications de bureau, peut-être avec une interface graphique, alors C ++ (et POO) est probablement une meilleure solution. Si vous êtes intéressé par la programmation matérielle sur autre chose qu'un chipset x86, C est souvent un meilleur choix, généralement pour sa vitesse. Si vous souhaitez créer un nouveau lecteur multimédia ou écrire une application professionnelle, je choisirais C ++. Si vous voulez faire des simulations scientifiques de collisions de galaxies ou de dynamique des fluides, voyez la puissance de C.
la source
restrict
spécificateur, C n'a pas d'autre construction syntaxique / sémantique liée aux performances que C ++, pourquoi pensez-vous exactement que le code C ++, avec sa syntaxe plus riche et par exemple la méta-programmation, devrait produire un code plus lent? Connaissez-vous même les modèles d'expression?restrict
qui cependant tous les principaux compilateurs C ++ fournissent une extension). Et pensez-vous vraiment que, étant donné le même code, il y aura une différence de performances entre C ++ et C, étant donné le même compilateur? [...]L'apprentissage de C vous oblige à réfléchir davantage à certains problèmes tels que la gestion de la mémoire explicite et implicite ou les tailles de stockage des types de données de base au moment où vous écrivez votre code.
Une fois que vous avez atteint un point où vous vous sentez à l'aise avec les fonctionnalités et les dysfonctionnements de C , vous aurez probablement moins de difficulté à apprendre et à écrire en C ++.
Il est tout à fait possible que le code C ++ que vous avez vu n'ait pas l'air très différent du C standard, mais cela pourrait bien être dû au fait qu'il n'était pas orienté objet et n'utilisait pas d'exceptions, d'orientation objet, de modèles ou d'autres fonctionnalités avancées.
la source
Je pense qu'apprendre d'abord C est une bonne idée.
Il y a une raison pour laquelle les cours comp sci utilisent toujours C.
À mon avis, c'est pour éviter tout «surpeuplement» de l'objet de l'obligation d'exiger la POO.
Je pense que la programmation procédurale est le moyen le plus naturel d'apprendre d'abord la programmation. Je pense que c'est vrai parce qu'en fin de compte, c'est ce que vous avez: des lignes de code qui s'exécutent les unes après les autres.
De nombreux textes poussent aujourd'hui à une approche «objets d'abord» et commencent à parler de voitures et de changements de vitesse avant d'introduire des tableaux.
la source
Non.
Il est généralement plus utile d'apprendre le C ++ car il est plus proche des langages basés sur OO les plus modernes, comme Eiffel ou C #.
Si votre objectif est d'apprendre le C ++, commencez par apprendre le C ++ moderne et standard. Laissez les mallocs de côté.
Mais Steve Rowe a raison ...
la source
Ayant observé des gens, qui ont d'abord appris Java, se débattent avec les concepts de pointeurs et de gestion de la mémoire en C ++, je dirais qu'apprendre d'abord C est une bonne idée, afin de saisir ces deux concepts, isolés des complexités des autres C ++ fonctionnalités.
la source
Mes deux centimes:
Je suggère d'apprendre d'abord C, car:
la source
je pense que c est un langage de programmation vraiment sympa, il est compact et assez facile à apprendre. mais si vous voulez seulement apprendre le C ++, commencez par C ++. mais je vous suggère d'apprendre les deux. et si vous voulez faire cela; je pense qu'il vaut mieux commencer par c. comme dit précédemment: c'est petit et assez facile à apprendre. pourrait être une belle avancée vers un langage de programmation plus complexe comme le c ++. (puisque c vous donne quelques notions de base)
bonne chance.
la source