Je suis développeur de logiciels, expérimenté en C # (5 ans d'expérience) aux côtés de quelques autres langages.
Mon "job de rêve" travaille dans les jeux vidéo en tant que développeur.
La plupart des emplois nécessitent une connaissance de C ++, que je n'ai pas actuellement (à l'exception de certaines bases).
J'ai regardé autour de moi, et la plupart des grandes sociétés de jeux requièrent de 3 à 5 années d'expérience précédente avec C ++.
Ma question est - quelle serait une bonne voie pour atteindre ce niveau d'expérience requis, venant de C #?
J'ai pensé à quelques façons possibles de le faire:
Obtenez plus de connaissances sur C ++ à partir de livres. Participez à des projets open-source écrits en C ++. Quelle serait la meilleure façon d'apprendre le C ++ et d'avoir une expérience de travail avec lui, en particulier pour l'industrie du jeu?
la source
Réponses:
En tant que développeur de jeux, mon principal souci d'embaucher un gars C # serait un manque de connaissances de bas niveau.
Considérez donc un projet où votre travail implique une optimisation de bas niveau, comme la réorganisation de la disposition des données des classes ou la réécriture du code pour tirer parti des instructions SIMD. Prenez un jeu open-source C ++, optimisez-le et publiez l'augmentation de la fréquence d'images sur votre CV.
Si je vous interviewais, je me soucierais moins du C ++ sur votre CV et plus de savoir si vous pouvez répondre à mes questions d'entrevue C / C ++ / bas niveau. Je vais essayer quelques questions d'entrevue standard avec lesquelles vous pourriez avoir des problèmes (avertissement: je ne suis pas un expert C #):
la source
Ce qu'Eric a dit. J'ajouterais également pour éviter les "nouveaux" là où ce n'est pas forcément le cas. C'est très courant en C # mais considéré comme une mauvaise pratique en C ++ 11 et aussi plus lent que l'allocation de pile et plus dangereux car vous devez le désallouer manuellement.
Je serais aussi prudent avec les vieux livres, ils enseignent les vieilles pratiques. Personnellement, je préfère les forums / sites Web fiables, stackoverflow / isocpp.
la source
new
» n'est vraiment pas une recommandation sensée. Vous utiliseznew
lorsque vous avez des pointeurs. Siclass Derived : Base
, alors aBase var = Derived();
est illégal, maisBase *var = new Derived();
est légal. Vous avez donc besoin de pointeurs pour que le polymorphisme fonctionne correctement.Base var = Derived()
fonctionnerait , mais il serait découpé en tranches et, à votre insu, les informations perduesvar
. Pour résoudre le problème de découpage, vous pouvez utiliser des pointeurs.