web-dev-qa-db-fra.com

Je suis un débutant. Puis-je commencer directement à apprendre le C ++ 11? ou je dois apprendre le vieux C ++?

Je suis débutant et n'ai que peu de connaissances en programmation.

Serait-il bon que j'apprenne directement le C++ à partir de livres qui couvrent le nouveau C++ 11 ou devrais-je étudier les anciens meilleurs livres C++?

Dois-je avoir peu de connaissances sur C++ avant d'apprendre C++ 11? ou je peux commencer directement à partir de là?

Cela causerait-il un problème si je partais directement de C++ 11? Si non, suggérez quelques livres sur C++ 11.

37
Dhananjay

Il existe de nombreuses améliorations de convivialité qui rendent C++ 11 plus compréhensible pour un débutant, en particulier celui qui a de l'expérience dans d'autres langues avec ces fonctionnalités. D'autres changements dans C++ 11 n'intéressent que les utilisateurs avancés, vous risquez donc d'être submergé si vous prenez un livre conçu pour enseigner principalement les différences. Assurez-vous que tout livre que vous obtenez est conçu pour les débutants complets en C++.

Cela étant dit, vous devrez probablement apprendre l'ancienne façon, car il y a beaucoup de code existant, et même le nouveau code C++ 11 contiendra l'ancienne façon de faire les choses si le programmeur le souhaite. J'écris du C++ pour gagner ma vie, et mon entreprise n'a même pas encore réussi à évaluer des compilateurs compatibles C++ 11, et encore moins à en utiliser un en production.

40
Karl Bielefeldt

Vous n'avez pas besoin d'utiliser l'ancien C++ pour commencer à utiliser C++ 11, il existe de nouvelles fonctionnalités dans C++ 11 mais son utilisation est facultative. Savoir utiliser les fonctionnalités C++ 11 pourrait être un avantage, ce ne serait certainement pas un inconvénient lorsque vous travaillez avec des bases de code héritées (antérieures à 11) une fois que vous connaissez les particularités des anciennes versions.

Learn C++ serait un bon endroit pour commencer à apprendre et Appendice B vous enseigner les fonctionnalités C++ 11 après avoir appris les bases.

Je peux voir pourquoi certaines personnes ont suggéré Java/CSharp, etc. comme des langages alternatifs plus faciles, mais j'ai appris un peu de C++ avant de passer à CSharp et je ne suis pas un pire programmeur à cause de cela, au contraire, les compétences en programmation vont beaucoup plus loin que le langage syntaxe/fonctionnalité et avec une base solide en C++, vous pouvez facilement apprendre tout autre langage impératif OOP.

10
Joel

Malgré de nombreuses améliorations dans C++11, C++ n'est toujours pas une langue facile. Java, bien qu'il ne soit pas aussi simple que certains le pensent, est toujours un langage plus facile avec de très bonnes performances (souvent presque aussi rapide que C++) et offre de meilleurs IDE (peut-être Visual C++ est aussi bon que l'actuel Java IDE mais pas de chance ici sur Linux), une bibliothèque standard beaucoup plus complète (le JDK), plus de bibliothèques (par exemple Hibernation , Ressort , [~ # ~] jee [~ # ~ ] , Lucene , etc.) et aucune fuite de mémoire (enfin, presque aucune - vous pouvez toujours créer une fuite de mémoire en Java mais il est plus difficile de le faire qu'en C++). Pour être juste, avec C++11, il est beaucoup plus facile d'éviter les poireaux mémoire.

C++ 11 a de nombreuses fonctionnalités intéressantes comme lambdas, mot-clé auto, déplacer la sémantique et bien plus encore. C'est certainement une bien meilleure langue que C++98 était. Voir cet aperçu par Herb Sutter sur les nouvelles fonctionnalités de C++11: Éléments de moderne C++ Style .

Pour résumer, je pense que tout le monde devrait apprendre au moins quelques C++. Si vous avez programmé dans Java, Scala, Ruby ou Python au cours de la dernière décennie et que vous n'avez jamais touché C ou C++, maintenant avec C++11 Je pense qu'il est temps d'apprendre C++11 et améliorez vos compétences en programmation.

Je n'utiliserai probablement pas C++ beaucoup de travail dans les années à venir et quand j'ai besoin d'un langage plus puissant que Java, j'irai probablement pour Scala, mais j'examinerai de plus près C++11 et essayez d'apprendre et de comprendre les nouvelles fonctionnalités, en particulier celles concernant le multithreading et la concurrence.

N'oubliez pas: il est toujours utile d'apprendre un nouveau langage de programmation même lorsque vous ne prévoyez pas de l'utiliser en production.

9
Jenny Casarino

C'est difficile à dire.

L'ancien C++ est plus un champ de mines, et c'est agréable d'apprendre à naviguer sur une telle bête. Cela vous fera également comprendre pourquoi les choses sont faites comme elles sont et quelles sont les implications des différentes constructions.

Là encore, l'ancien C++ n'est pas ce que vous voulez lorsque vous écrivez du code.

Mais, encore une fois, l'ancien C++ est ce que beaucoup d'industries vont produire pendant encore 20 ans.

J'adore C++ 11, mais il n'est utilisable que dans les startups pour l'instant. Pas dans les grandes bases de code héritées. Et passer directement à C++ 11 pourrait vous laisser des compétences non développées dans les parties méchantes de C++. Ce qui se retournera une fois que des fuites de construction C++ 11 avancées, ou des plantages, car elles sont utilisées d'une manière syntaxiquement correcte, mais logiquement incorrecte.

8
Coder

Respirez profondément et lisez ceci article par Peter Norvig.

L'avez-vous lu? Ok, si vous êtes débutant, vous devez commencer par petites étapes. -insérer la langue ici- peut venir plus tard, consultez Coursera ou dacity pour certains cours d'initiation à l'informatique pour débutants.

Après avoir terminé cela, je conseillerais lentement de vous frayer un chemin à travers Le langage de programmation C de K&R si vous êtes défini sur un 'C ' Langue.

Travailler sur les bases, le reste viendra avec le temps.

2
lwm

Les livres d'introduction récents sur C++ couvrent également de plus en plus C++ 11. J'ai lu Sam's Teach Yourself C++ après avoir travaillé avec des langages scriptés mais pas C/C++ pendant près de dix ans et je l'ai trouvé vraiment utile. Je suis très vite devenu familier avec les idées centrales du C++ (y compris beaucoup de STL) et conscient de nombreux détails différents en C++ 11.

Comme d'autres affiches l'ont mentionné, C++ 11 est à bien des égards plus facile que les anciennes normes avec des ajouts de style script comme auto, for(int &i : m_vector){} etc. Donc, si votre "petite connaissance" vient de des langages comme Python ou Matlab, vous trouverez C++ 11 un peu plus "naturel" que les standards précédents.

Je voudrais également souligner qu'à l'heure actuelle, la compatibilité du compilateur pour C++ 11 est ( presque ) complète, de sorte que le code "trop ​​à jour pour être compilé" n'est plus un problème.

Bref, faites-le.

1
mmdanziger

À mon époque, le C était considéré comme une condition préalable au C++, en particulier pour les débutants en programmation. Parce que vous devez comprendre ce que fait une langue et pourquoi elle a été conçue comme ça. C a des tas d'idées géniales et suffisantes de langage de programmation, qui ne seront jamais obsolètes. Je pense donc que c'est le meilleur départ.

Et après avoir eu un certain point de vue de base concernant les éléments de programmation, vous devrez peut-être choisir ce qui doit être fait lors du prochain mouvement, ce qui signifie, choisir une langue à apprendre aussi profondément que possible. Peu importe la profondeur que vous obtenez, il peut généralement décider de la profondeur que vous pouvez obtenir pour toutes les autres langues, ce qui signifie que, peu importe le nombre de langues que vous avez apprises, la plus profonde sera toujours la première que vous aurez creusée. Pour moi, j'ai effectué des recherches sur Java et fait moi-même quelques modèles de Java pour mieux comprendre ses fonctionnalités du noyau).

Après cela, vous pourrez peut-être apprendre tout ce que vous voulez, car vous avez une compréhension totale de la technologie du langage de programmation. J'ai commencé à apprendre C #, Go, Python even Scala et j'ai fait de nombreux projets pour le plaisir/le travail. Le dossier personnel est de 3 mois à compter du début de l'apprentissage d'une langue) pour devenir 1.0 chef d'un projet en développement.

Dans mon cas, cela fait plus de 15 ans depuis mon premier programme et je ne peux même pas me rappeler ce que c'est. Je crois que si vous travaillez assez dur, vous irez certainement mieux et plus vite que moi.

0
WinstonWu