120 votes

Devrais-je apprendre le C avant d'apprendre le C ++?

J'ai visité une université CS département de la journée portes ouvertes aujourd'hui et dans les laboratoires tour nous nous sommes assis pour jouer avec un couple de dernière année des projets des étudiants de premier cycle. L'un était particulièrement bonne - une sorte de FPS astéroïdes jeu. J'ai décidé de prendre un coup d'oeil dans l' src annuaire pour trouver, il a été fait en C++ (la plupart des autres projets ont été Java 3D apps).

Je n'ai pas fait de C avant, mais j'ai regardé à travers du code C avant. De ce que j'ai vu dans le .rpc code dans ce jeu, il n'a pas l'air très différent.

Je suis intéressé par l'apprentissage, soit en C ou C++, mais sera probablement apprendre les autres plus tard. Est-il avantageux pour moi l'apprentissage de l'un avant l'autre, et si oui, lequel?

129voto

Brian R. Bondy Points 141769

Il n'est pas nécessaire d'apprendre le C avant le C++.

Ils sont des langues différentes. C'est une idée fausse commune que le C++ est en quelque sorte tributaire de C et pas totalement la langue spécifiée sur son propre.

Juste parce que C++ partage beaucoup de la même syntaxe et beaucoup de la même sémantique, ne signifie pas que vous devez apprendre C en premier.

Si vous apprendre le C++, vous aurez à apprendre, plus de C avec quelques différences entre les langues que vous apprendrez au fil du temps. En fait sa une chose très difficile d'écrire du C++ approprié parce que les intermédiaires, les programmeurs en C++ ont tendance à écrire des C/C++ au lieu de C++approprié. C'est vrai si vous avez commencé avec le C ou a commencé avec le C++.

Si vous savez C en premier, alors que c'est bien plus à l'apprentissage de C++. Vous allez commencer avec la connaissance d'une partie de la langue. Si vous ne savez pas C en premier, alors il n'y a pas point de focalisation sur une autre langue. Il ya beaucoup de bons livres et des tutoriels disponibles sur démarrer-vous de ne rien savoir et couvrira tout ce que vous apprenez à partir de C qui s'applique à C++.

Veuillez voir le raisonnement plus loin dans cette réponse.

81voto

cdonner Points 17403

J'adore cette question - c'est comme demander "que dois-je apprendre d'abord, du snowboard ou du ski"? Je pense que cela dépend de si vous voulez faire du snowboard ou le ski. Si vous voulez faire les deux, vous avez à apprendre à la fois.

Dans les deux sports, vous glisser vers le bas d'une colline, sur la neige à l'aide de dispositifs qui sont suffisamment similaires pour provoquer cette question. Cependant, ils sont également suffisamment différents pour que l'apprentissage ne vous aide pas beaucoup avec les autres. Même chose avec le C et le C++. Alors qu'elles semblent être les langues suffisamment similaire à la syntaxe, de l'état d'esprit que vous avez besoin pour écrire OO code vs code de procédure est suffisamment différente de sorte que vous avez à peu près depuis le début, quelle que soit la langue que vous apprenez seconde.

71voto

Dima Points 19888

J'ai appris C en premier, et j'ai pris un cours de structures de données utilisées C, avant que j'ai appris le C++. Cela a bien fonctionné pour moi. Une des structures de données de cours en C m'a donné une solide compréhension des pointeurs et gestion de la mémoire. Il a également mis en évidence les avantages du paradigme orienté objet, une fois que j'avais appris ce que c'était.

Sur le revers de la médaille, par l'apprentissage de C en premier, j'ai développé certaines habitudes qui d'abord m'a amené à écrire un mauvais code C++, tels que l'utilisation excessive de pointeurs (quand C++ références) et le préprocesseur.

C++ est vraiment très complexe de la langue avec beaucoup de fonctionnalités. Il n'est pas vraiment un sur-ensemble de C, si. Mais il s'agit plutôt d'un sous-ensemble de C++ composé de la procédure de base des constructions de programmation (boucles, des fi et des fonctions), qui est très similaire à C. Dans votre cas, je voudrais commencer par ça, et ensuite travailler mon chemin jusqu'à des notions plus avancées, telles que les classes et les modèles.

La chose la plus importante, à mon humble avis, est d'être exposés à différents paradigmes de programmation, comme procédural, orienté objet, fonctionnelle et logique, dès le début, avant que votre cerveau se fige dans une façon de voir le monde. D'ailleurs, je voudrais également vous recommandons fortement de vous apprendre un langage de programmation fonctionnel, comme le Régime. Il serait vraiment élargir vos horizons.

14voto

Adam Hawes Points 4153

Je pense que vous devriez apprendre le C en premier, parce que j'ai appris C en premier. C m'a donné une bonne maîtrise de la syntaxe et de pièges avec des choses comme des pointeurs, tous flux en C++.

Je pense que C++ le rend facile à emballer tous ces problèmes (besoin d'un tableau qui ne débordera pas lorsque vous utilisez l'opérateur [] et une louche d'index? Bien sûr, faire un tableau de classe qui effectue la vérification des limites), mais vous avez besoin de savoir ce qu'ils sont et de se faire mordre par eux avant de comprendre pourquoi les choses sont faites d'une certaine façon.

Quand tout est dit et fait, le cours C++ est généralement enseigné, c'est "C++ c'est du C avec des objets, voici le C des trucs et voici comment tout cela OO ça marche", de sorte que vous êtes susceptible d'apprendre les bases du C avant tout réel C++ si vous suivez la plupart des textes de toute façon.

12voto

dwelch Points 27195

C est un langage incontournable pour le génie logiciel. C ++, Java, python, ne sont pas. Vous devriez d'abord l'apprendre sans aucun doute.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X