Sou desenvolvedor de software, experiente em C # (5 anos de experiência), juntamente com alguns outros idiomas.
Meu "emprego dos sonhos" está trabalhando em videogames como desenvolvedor.
A maioria dos trabalhos requer conhecimento de C ++, que atualmente não tenho (exceto alguns princípios básicos).
Eu olhei em volta e a maioria das grandes empresas de jogos exige algo em 3-5 anos de experiência anterior com C ++.
Minha pergunta é: qual seria um bom caminho para chegar a esse nível de experiência exigido, vindo de C #?
Eu pensei em algumas maneiras possíveis de fazer isso:
Obtenha mais conhecimento sobre C ++ nos livros. Participe de projetos de código aberto escritos em C ++. Qual seria a melhor maneira de aprender C ++ e ter experiência em nível de trabalho, especialmente para a indústria de jogos?
fonte
Respostas:
Como desenvolvedor de jogos, minha principal preocupação em contratar um cara de C # seria a falta de conhecimento de baixo nível.
Portanto, considere um projeto em que seu trabalho acarreta otimização de baixo nível, como reorganizar o layout dos dados das classes ou reescrever o código para aproveitar as instruções do SIMD. Faça um jogo de código aberto em C ++, otimize-o e publique o aumento da taxa de quadros em seu currículo.
Se eu estivesse entrevistando você, eu me importaria menos com o C ++ em seu currículo e mais sobre se você pode responder às minhas perguntas de entrevista em nível C / C ++ / baixo. Vou examinar algumas perguntas padrão da entrevista com as quais você pode ter problemas (aviso: não sou especialista em C #):
fonte
O que Eric disse. Eu também adicionaria para evitar "novo" onde não é necessário. É muito comum em C #, mas é considerado uma má prática no C ++ 11 e também mais lento que a alocação de pilha e mais perigoso, porque você precisa desalocá-lo manualmente.
Eu também teria cuidado com livros antigos, eles ensinam práticas antigas. Pessoalmente, prefiro fóruns / sites confiáveis, stackoverflow / isocpp.
fonte
new
" não é realmente uma recomendação sensata. Você usanew
quando você tem ponteiros. Seclass Derived : Base
, então aBase var = Derived();
é ilegal, masBase *var = new Derived();
é legal. Então você precisa de indicadores para fazer com que o polimorfismo funcione muito, muito.Base var = Derived()
funcionaria , mas seria fatiado e, sem o seu conhecimento, as informações perdidasvar
. Para corrigir o problema de fatiar, você pode usar ponteiros.