Je suis un étudiant en informatique, et en conséquence, j'ai appris le C ++ comme une meilleure version de C avec des cours. Je finis par essayer de réinventer la roue chaque fois qu'une solution à un problème complexe est nécessaire, pour trouver quelque temps après cela, une fonctionnalité de langage ou une routine de bibliothèque standard aurait potentiellement pu le faire pour moi.
Je suis tout à fait à l'aise avec mes idiomes char*
et *(int*)(someVoidPointer)
, mais récemment, après avoir apporté une contribution (mineure) à un projet open-source, je pense que ce n'est pas ce que l'on est censé penser lors de l'écriture de code C ++. C'est très différent de C.
Étant donné que je connais assez bien la programmation orientée objet et que je suis d'accord avec une courbe d'apprentissage abrupte, que suggéreriez-vous pour que je me mette à l'esprit sur la piste C ++ lorsque je code C ++?
Réponses:
Sur la base de vos commentaires, vous connaissez la syntaxe C ++.
Vous ne codez pas en C ++ mais ce qui est souvent référencé comme C avec des classes.
La balise C ++ sur stackoverflow est un bon point de départ, elle comprend une liste de lecture et une FAQ .
La seule vraie façon d'apprendre est d'écrire du code et de faire commenter un utilisateur expérimenté. Vous pouvez mettre votre code ici pour révision. Un bon exemple
Arrêtez de les utiliser, passez à std :: string.
Arrêtez de les utiliser (sauf pour interfacer avec le code C). L'utilisation du concept de foncteur offre plusieurs avantages (dont l'idée d'encapsuler l'état).
Oui. C et C ++ ont divergé en tant que langages. Bien que vous puissiez utiliser pratiquement la même syntaxe, ce qui est considéré comme un bon code C n'est généralement pas considéré comme un bon code C ++ (ou vice versa).
Vous avez les bases même.
Avec beaucoup de travail :-)
la source
Le livre Effective C ++ enseigne un certain nombre de choses intéressantes et vous amènera à apprécier les fonctionnalités de C ++. Il existe également une STL efficace - je ne l'ai pas lu, mais je suis sûr que ce serait une excellente lecture si vous ne connaissez pas la STD.
La chose importante à apprendre est que vous devez utiliser la langue et ne pas réinventer la roue en permanence . Vous avez déjà appris à les fabriquer, alors faites-vous plaisir (et aux autres!) Et utilisez les outils à leur plein potentiel.
En guise de remarque, vous rencontrerez beaucoup de gens qui demandent l'utilisation de la MST. C'est tout aussi mauvais état d'esprit que d'utiliser
char*
- parfois ce n'est pas l'outil correct et il y en a beaucoup d'autres. Dans le même sens, ne vous découragez pas de créer vos propres classes de conteneurs - si vous allez utiliserchar*
le meilleur endroit pour le faire, il est enveloppé en toute sécurité dans une classe.la source
Je peux recommander la récente prise de CONSTRUCTION donnée par Herb Sutter. Celui intitulé " Ecrire du code C ++ moderne: comment C ++ a évolué au fil des années ":
Ce n'est pas une mauvaise présentation, pas trop longue, a de bons pointeurs vers les nouvelles fonctionnalités de la dernière norme qui vous donneraient quelques conseils pour mettre à jour votre ancien style C / C ++.
En dehors de cela, vous devez apprendre la STL - ce n'est pas compliqué et il y a beaucoup de livres, par exemple, Effective STL, ou simplement google pour les didacticiels STL pour vous aider à démarrer.
la source
J'ai lu Accelerated C ++ par Andrew Koenig et Barbara Moo afin de m'aider à enseigner le C ++, après avoir travaillé avec C ++ pendant près d'une décennie. (En fait, je commençais à bricoler avec la méta-programmation de modèles à ce moment-là.) J'ai toujours trouvé que c'était une révélation, même si je ne pense pas que cela m'a appris de nouveaux faits sur le langage. 1
Ce que cela m'a appris, cependant, était de regarder et d'utiliser le C ++ comme langage de haut niveau. Ne pas bricoler avec des pointeurs bruts et
delete
et utiliser la bibliothèque standard autant que possible.J'ai le sentiment que c'est exactement ce que vous recherchez.
1 Ce n'est pas qu'il ne restait plus rien à m'apprendre à l'époque (il y en a encore beaucoup aujourd'hui, une décennie plus tard), mais il y a tellement de connaissances que vous pouvez insérer dans un livre d'introduction de 250 pages.
la source
Avant de répondre - une note: Idiomatic C ++ est une cible mobile. À mesure que la langue change, ses idiomes changent également. En fait, certaines fonctionnalités du langage sont destinées à nous permettre de supprimer le code idiomatique qui pourrait être simplifié ou amélioré avec une certaine prise en charge par le langage lui-même, ou au moins la bibliothèque standard. Gardez donc à l'esprit que toute source ne peut que vous informer sur ce qui était idiomatique au moment de la rédaction .
Cela dit, vous feriez bien de vérifier:
Le site codereview.SX
Le réseau StackExchange possède un site nommé codereview.stackexchange.com . Si vous avez écrit un morceau de code C ++ - une classe, une partie d'une bibliothèque, quelque chose de pas trop énorme - vous pouvez le poster là-bas et demander à la communauté de le réviser. Notez que le code doit être compilé et être fondamentalement fonctionnel - ce site n'est pas destiné au débogage.
Vous pouvez également y rechercher du code C ++, lié à ce sur quoi vous travaillez, et voir ce que les réviseurs mettent en évidence. Vous pouvez même essayer de réviser le code publié vous-même sans poster de réponse, puis de lire ce que les autres en ont pensé.
Présentations vidéo de conférence C ++
Chaque année, plusieurs conférences de développeurs axées sur le C ++ sont organisées:
et ce ne sont même pas les seuls ... de toute façon, chacun de ces messages vidéos de plusieurs / toutes les présentations. Ceux-ci vous en apprendront beaucoup , y compris un codage idiomatique et un principe avec lequel vous pourrez décider ce qui doit ou ne doit pas être idiomatique.
Parfois, vous pouvez même obtenir les diapositives des haut-parleurs.
la source
Eh bien, les projets open source sont un très bon début. Ne vous attendez pas à devenir un programmeur professionnel basé sur vos cours universitaires, ils ne sont pas destinés à cela (comme je l'ai écrit dans ma réponse ici ).
Vous semblez être au courant de la syntaxe, c'est bien. Maintenant, allez lire le code des autres et contribuez le vôtre pour les évaluations par les pairs. Vous apprendrez beaucoup en lisant le code et en essayant de le comprendre, en le déboguant et en le corrigeant, et bien sûr - en y ajoutant en respectant les conventions de codage qui existent déjà.
Les livres professionnels sont également une très bonne idée, comme mentionné, et parcourir les questions et réponses sur StackOverflow vous en apprendra beaucoup (cela m'apprend sûrement beaucoup et je me considère comme un professionnel C ++).
la source
La lecture de beaucoup de bon code C ++ sera probablement utile. Vous devez voir le code pour commencer à vous en faire une idée. Là encore, la plupart du code C ++ est incorrect.
la source