33 votes

C ++ comme première langue

J'apprends le C ++ en auto-apprentissage depuis environ 4 mois maintenant. Je l'apprécie et je pense que je vais assez bien. Cependant, une réponse à une de mes questions m'a fait penser que je pouvais me préparer à une chute.

Alors, que pensent les gens du C ++ comme première langue à apprendre? Et est-ce que ça vaut la peine de continuer maintenant que j'ai pris un bon départ?

78voto

DevSolar Points 18897

Je ne comprends pas pourquoi les gens confondent encore "langue" avec "bibliothèque". (En se référant à la réponse.) Alors que faire si C++ n'est pas un "natif" concept de l'audio? Il y a beaucoup de bibliothèques, que vous pouvez facilement l'utiliser avec C++, et qui sont probablement mieux adaptés à vos besoins spécifiques que n'importe quel "fourre-tout" "standard library" audio API de traitement pourrait être.

</coup de gueule>

C++ est une langue difficile. Il ya d'autres qui sont plus faciles à apprendre. Je n'aurais jamais argumenter à ce sujet.

Mais le C++ est facilement l'un des plus puissants de langues à travers. Il peut être très efficace, et très élégant, à la fois. Bien sûr, rien ne vous empêche de faire une amende gros gâchis de tout, soit.

Si je recommande de C++ dans un premier langage de programmation? En fait, je ne sais pas du tout mieux. D'autres pourraient vous protéger contre faire des erreurs, et de faire un premier succès (par exemple, votre première application GUI) plus facile. Mais si vous construisez sur une base de C++, vous serez toujours du bon pied. Vous pourriez ne jamais avoir à choisir une autre langue à tous, en fait. Mais si vous voulez ou devez, vous trouverez qu'il est ridiculement facile.

Expérimenté C++ codeur peut faire par exemple Java à pleine vitesse dans une affaire de semaines. Dans l'autre sens? Beaucoup, beaucoup plus difficile.

39voto

tpdi Points 18427

Permettez-moi de le dire de cette manière:

Je l'ai pris et passé avec un de 94%, le Sun Java Certification sans jamais avoir compilé une ligne de Java (c'était il y a neuf ans). J'ai été en mesure de le faire, parce que je savais que C++ très bien.

Sur mon premier travail professionnel, j'ai été embauché en tant que testeur. Le deuxième jour, on m'a dit que je pouvais le programme à la place de test, si j'ai appris assez PowerBuilder pour être utile-dans deux semaines. Parce que je savais que C++ si bien, PowerBuilder était facile.

C++ est dur, mais si vous l'apprendre à bien lire de Stroustrup Le Langage de Programmation C++ , faire les exercices trop, la lecture de sa Conception et l'Évolution de C++, lire le C++ Faq et le Meyers livres et Herb Sutter livres, lire comp.lang.c++.modéré, à lire Coplien de l' Avancée de la Programmation en C++ de Styles et d'expressions idiomatiques n'importe quel langage OO vous souhaitez code -- si vous l'apprendre, tous les autres OO langue est facile.

L'apprentissage de C++ est une excellente préparation pour l'apprentissage du code. (Et vous deviendrez un juste programmeur C trop, mais lire K&R pour obtenir pour être un bon programmeur C.)

Oh. Et le C++ est vraiment amusant de programme, beaucoup moins verbeux que Java, et beaucoup plus de flexibilité. Vous êtes vraiment en charge, de ne pas l'IDE, ou la langue. Vous pouvez tirer sur vos propres pieds, mais vous serez en charge de le faire. Et lire Alexandrescu du livre une fois que vous savez modèles, il va étonner et de dumbfound et de vous faire plaisir.

C++ est amusant. Lire le "Curieusement Récurrents Pattern Template": il ressemble à ceci

template< class  T> struct base {};

struct derived: base< derived > {};

Oui, tu as bien fait: c'est une classe qui dérive à partir d'une base qui est basé sur un modèle sur le dérivant de la classe. Maintenant que sonne obscur et stupide, mais il y a beaucoup de bons usages pour elle, et l'autre jour, j'étais à battre ma tête parce que vous ne pouvez pas le faire en Java (parce que Java utilise le type d'effacement, pas des modèles, pour les génériques), mais si je pouvais avoir utilisé, je pourrais avoir épargné beaucoup, beaucoup de code répété dans beaucoup de classes.

Il y a beaucoup plus de choses en C++, et si vous vous limitez à Java ou .Net, vous ne serez jamais découvrir.

15voto

D.Shawley Points 30324

C++ n'est pas une langue facile à apprendre, comme noté par tout le monde, mais il ya quelques raisons pour qu'il fasse un endroit décent pour commencer:

  • il ne vous attachez pas à un paradigme de programmation (par exemple, Java et la programmation orientée objet), de sorte que vous pouvez expérimenter avec différentes techniques facilement
  • C++ n'ont pas les cloches et de sifflets, de sorte que vous pouvez vous concentrer sur la fabrication de blocs de construction si vous voulez savoir comment ils sont construits
  • puisque c'est une langue et non pas une plate-forme, vous pouvez choisir la ou les bibliothèques qui correspondent le mieux à la tâche à portée de main ou de votre choix de style de programmation (par exemple, le choix de quelque chose comme Poco pour un Javaesque sentir, ACE pour le graveleux début de style OO, etc.)
  • c'est un langage de programmation général, pas une plate-forme (a-à-dire deux fois)

Le truc, c'est l'apprentissage de la lire attentivement et correctement la première fois. Je sais que j'ai, comme beaucoup d'autres, ont lutté avec elle par l'apprentissage comme "C + objets" avant de vraiment le comprendre. C'est un dur de la langue à apprendre. Je recommande à la recherche d'un spécialiste en C++ mentor fixez vous-même ainsi que la lecture de beaucoup de "hautement recommandé" livres sur comment et comment ne pas l'écrire en C++. Éviter d'apprendre de mauvaises habitudes à l'avant.

Pour un départ de la liste de lecture dans aucun ordre particulier:

  • "Accelerated C++" par Koenig et Moo
  • "Effective C++/STL" de Scott Meyers
  • "Object-Oriented Construction" par Bertrand Meyer
  • "Expert de la Programmation en C", par Peter van der Linden
  • "STL Tutoriel et Guide de Référence" par Musser, Dergué, et Saini
  • "Le C++ Standard Library" par Josuttis

13voto

simon Points 5346

Beaucoup de soutien pour le c++ ici, mais je suis en désaccord. Chaque langue a ses points positifs et des inconvénients (certains parvenir à un meilleur équilibre que d'autres, bien sûr).

Cela étant dit, pour une première langue, je suis convaincu que la plupart des gens vont apprendre comment programmer plus efficacement avec une langue qui a) n'a pas une édition-compilation-exécution du cycle (ce qui est par nature plus lent pour vous en tant que programmeur b) a la collecte des ordures c) a la bonne exécution de l'introspection. Le meilleur de si il y a un interactive évaluateur ainsi, à déconner avec.

De développement (si pas d'exécution) est presque toujours plus rapide dans ces langues, il y a moins de choses à vous passionner, et il y a de meilleurs outils pour aider à comprendre ce qui s'est passé quand il a fait.

Ce qui n'est pas à dire que l'apprentissage les aléas de la gestion de la mémoire dans un langage tel que le c++ n'est pas quelque chose à faire, etc., etc., il n'est tout simplement pas l'endroit que vous voulez vraiment commencer.

Un autre problème avec le c++, c'est que pour l'ensemble de sa pratique de l'ampleur de celle-ci ajouté au fait qu'il a des pièces incompatibles qui peut conduire à des problèmes subtils préférable d'éviter en tant que débutant.

modifié: John D apporte le point dans un commentaire que certaines personnes qui apprennent d'abord sur un GC avais langue (qui ne se limite pas à "script" langues) ne jamais apprendre les pointeurs plus tard. C'est un leurre, si. Certaines personnes ne parviennent pas à apprendre toutes sortes de choses, pour toutes sortes de raisons. Je maintiens que s'inquiéter sur les pointeurs est une distraction lorsque vous êtes en train d'apprendre les bases. À un certain moment, vous pouvez bien besoin d'apprendre à propos du manuel de gestion de la mémoire, mais il n'est pas fondamentalement important de le faire au premier abord. Ou, plus précisément, les gains en évitant ce sont plus importants que les coûts.

Permettez-moi d'être clair, je ne dis pas que c++ est inférieur choix pour un premier langage, car il manque de la collecte des ordures. C'est juste une des nombreuses questions qui obtiennent de la manière d'apprendre les fondamentaux de la programmation bien. Le vrai problème, c'est qu'il est un grand complexe de la langue, avec des bizarreries dans tous les sens et même des incohérences internes (par exemple, les pointeurs et les exceptions ne jouent pas bien ensemble). Bien sûr, tout cela peut être géré correctement et vous pouvez apprendre les bonnes pratiques pour éviter d'être en difficulté.

Cependant, rien de tout cela fera beaucoup de sens pour un vrai néophyte au premier abord. De sorte que certains d'apprentissage, il sera à la fin "faire de cette façon, pas de cette façon". "pourquoi?" "parce que je l'ai dit --- tu ne comprends pas les détails encore". À peine un début de bon augure.

Le bigges gains pour l'apprentissage d'une première langue mais sont probablement en évitant une édition-compilation-exécution du cycle (de tout type) et d'avoir une bonne introspection.

11voto

Dan Points 3922

Le C ++ sera (beaucoup?) Plus accessible si vous apprenez le "C ++ moderne" plutôt que le "C plus quelques nouveautés". Par exemple, utilisez std::wstring et std::vector<> place des chaînes et des tableaux de style C.

Le C ++ accéléré déjà mentionné par Koenig et Moo est un livre qui fait exactement cela.

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