28 votes

Le C ++ vaut-il la peine d'investir du temps dans l'apprentissage?

Avec des langages comme C# qui peut essentiellement faire quoi que ce soit, j'ai trouvé un inconvénient qui pourrait ne pas être le cas dans l'avenir, et c'est le manque de beaucoup de open source 3ème partie les bibliothèques qui sont bien documentées à choisir. Toutefois, avec le C++, il y a beaucoup de bibliothèques à choisir, et c'est un grand pro pour moi. Une chose que je veux entrer dans la partie est de la programmation, mais XNA est trop lié à Windows et Microsoft. OGRE est fantastique pour moi, mais c'est une bibliothèque C++.

J'ai des connaissances de base en C++, mais je ne sais pas comment utiliser des pointeurs ou des savoir beaucoup au sujet de la STL. Je sais que C++ ne permet pas de tenir votre main comme C#, mais je suis prêt à investir du temps dans l'apprentissage si ça vaut le coup.

63voto

Brock Woolf Points 16128

C++ est un excellent langage pour apprendre, si vous avez le temps je vous conseille d'apprentissage pour ces raisons:

Il est encore largement utilisé.

C++ est la langue majoritairement utilisée pour la programmation de tous les ordinateurs et les consoles de jeux. Les systèmes de programmeurs toujours l'utiliser et il est encore utilisé dans certaines applications (plus de sont en C#, ces jours tout de même).

Les pointeurs!

Il va vous apprendre à utiliser des pointeurs. Les pointeurs peuvent vous sauver de la mémoire et améliorer la vitesse de votre programme, mais plus que tout, vous apprendrez un point de vue différent sur la façon d'écrire une application.

Gestion De La Mémoire

C# n'est pas de vous enseigner la façon de gérer la mémoire manuellement, c'est à dire:

Allouer de la mémoire en C++

MyClass *myObject = new MyClass();

Dealloc de la mémoire en C++

delete myObject;

Il va exploser dans votre visage

C'est une bonne chose vraiment (et probablement s'applique à mon point de vue sur les pointeurs). C++ peut être plus difficile à programmer, car vous avez besoin de gérer des pointeurs, la mémoire, l'écriture de modèles et de nombreuses autres raisons vraiment. Les messages d'erreur peuvent être assez mystérieux à la fois, mais tout cela fera de vous un beaucoup plus défensive programmeur et sachant que le C++ vous aidera à apprécier (ou pas) d'autres langues plus.

L'apprentissage de la STL peut être amusant. Je voudrais commencer par des vecteurs, listes, deques et itérateurs. Si jamais vous avez besoin de programmer un jeu / moteur de jeu comme l'OGRE et de courir sur un de ces, vous aurez certainement besoin d'apprendre comment cela fonctionne.

Il est multi Plate-forme

Lorsque l'offre d'emploi est pour vous un jour de travailler pour Nintendo, Sony ou Blizzard, rappelez-vous juste qu'ils écrivent des jeux en C++, C# parce que la Wii, la Playstation et le Mac ne fonctionne pas sur C#.

Je crois que l'apprentissage de C++ est quelque chose que chacun devrait faire si ils ont le temps, car il est un autre outil utile dans votre boîte à outils, vous allez probablement avoir besoin d'écrire dans votre carrière de toute façon, et la connaissance de l'un des plus populaires des langages de programmation ne fera de vous un meilleur programmeur.

16voto

JaredPar Points 333733

Ce n'est pas tellement que C# est titulaire de votre part en tant que C++ vous pousse hors de l'avion et dit "la mouche".

C++ est un très populaire de la langue pour une raison. Il fait le travail et est incroyablement souple. Il peut être utilisé pour pratiquement tout type d'application. Cependant, il n'est pas spécifiquement conçu pour de nombreux scénarios qui sont populaires aujourd'hui (comme les web apps).

Je pense que la meilleure approche est de comprendre ce que vous faites et ensuite choisir le meilleur langage pour résoudre ce problème. C++ peut être utilisé pour construire des applications web, mais je serais probablement choisir C#/VB.Net + MVC, car il est conçu pour résoudre ce problème.

Je pense qu'une partie de la raison pour laquelle vous voir plus la 3e partie de bibliothèques C++ est tout simplement que c'est une ancienne langue. Seul le temps permettra de dire à ce stade si.

11voto

Lance Roberts Points 11164

Déterminez ce que vous devez faire, puis apprenez la langue dont vous avez besoin pour le faire.

9voto

rlbond Points 24215

Si vous voulez vous lancer dans la programmation de jeux, C ++ est le langage qu'il vous faut. Presque toutes les sociétés de jeux utilisent exclusivement C et C ++. Prenez votre temps, cela peut prendre des années pour devenir très bon en C ++. Les pointeurs, STL (en particulier les algorithmes) et les modèles sont tous difficiles.

Lisez des livres pour commencer sur C ++. Lorsque vous êtes meilleur, lisez C ++ efficace et C ++ plus efficace.

6voto

Alex Martelli Points 330805

Bien que je n'ai jamais complètement ivre le C++ cool-aid (qui, il y a plusieurs années, peut avoir été la raison pour laquelle je n'étais pas engagé dans Taligent, en dépit d'interviewer il y a... ils AVAIENT bu, a déclaré cool-aid;-), j'ai une assez bonne maîtrise de la langue et une réticence de respect pour elle (en partie nourrie par amitié personnelle avec d'excellents C++ gourous comme Matt Austern).

Ces jours-ci, ma devise est "Python où je peux, C++ où je dois" -- et j'ai été assez heureux de l'appliquer pour la plupart de ma programmation (avec parfois des escapades vers le bas dans C ou très occasionnellement de l'assemblée, midways en D, ObjC, Java ou C#, et en [par exemple] bash, Haskell, Erlang, Boo, le Schéma, le Javascript, Scala, ... -- tous ceux qui sont occasionnels, d'aventures, de C++ et Python, quand tout est dit et fait, sont mon pain quotidien [et la plupart de la confiture de trop;-)]).

C++ est incroyablement compliqué et mieux appliquée comme un sous-ensemble par le biais de lignes directrices rigoureuses (ces jours-ci je suis plus familier avec google, bien sûr;-). Mais si la discipline appropriée est observée C++ a encore beaucoup à donner à vous, l'une des meilleures implémentations de programmation générique dans un courant dominant dans la plupart statiquement typé de la langue, de la bonne optimiseurs, une grande motivation pour traiter des "questions relatives à la propriété" (pour l'allocation/libération) que les ordures collectées langues (presque tous les autres;-) tendent à pousser sous le tapis (occasionnel chagrin lorsque les ressources ne sont pas SEULEMENT facilement-GC avais de la mémoire, ...).

Pour un soundbyte, on pourrait dire que le C++ est la pire de toutes les langues, à l'exception de toutes les autres langues qui ont été jugés de temps en temps...;-)

Edit: je viens de trouver un post à partir d'aujourd'hui (sur un marché boursier-agrégateur de blogs du site, de tous les lieux!-) qui fait un travail intéressant en montrant un peu de conséquences économiques du choix de C++ vs Java pour "deep côté serveur infrastructure du système de" projets -, il a aussi des liens intéressants pour une analyse similaire effectuée par l' Hypertable , les gens et les autres. Lecture recommandée pour quelqu'un qui partage les doutes exprimés à cette question (même si il serait également utile de consulter les liens sur les coûts , en termes de productivité du programmeur, la maintenance, le temps de marché, etc -- de choisir C++ vs un niveau supérieur de la langue [esp. un garbage collecté un comme Java et la plupart des autres langues modernes], de telles comparaisons sont souvent difficiles à trouver).

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