Estou programando há 3-4 anos e sinto que não posso mais ser chamado de iniciante, mas li algumas perguntas neste site e acho que WTF elas estão falando? Sinto-me da mesma maneira quando pego livros de programação hoje em dia.
Eu li vários livros de programação para iniciantes, alguns sobre C / C ++ e outros sobre jogos. Eu escrevi algumas coisas mais complexas, como AI muito básica, serial e interface TCP / IP.
Pretendo me tornar um programador de jogos, mas recentemente me interessei um pouco por sistemas embarcados depois de ter a chance de trabalhar neles (a interface serial).
Achei muito difícil encontrar materiais para continuar meu aprendizado depois de concluir a introdução e os livros para iniciantes, pois não existem livros C ++ intermediários que eu possa encontrar.
Que conselho você daria para crescer e aprimorar meus conhecimentos e habilidades? Recursos específicos seriam muito apreciados.
Respostas:
Se você está falando sobre C / C ++, definitivamente pode usar alguma experiência extra. A primeira dica que darei é que C e C ++ são linguagens completamente diferentes . O melhor recurso para aprender C ++ é o StackOverflow - existem muitas pessoas que possuem grandes quantidades de experiência e conhecimento.
A próxima coisa a fazer é iniciar um projeto importante, como tentar escrever um mecanismo de gráficos 3D em uma API de baixo nível como o DirectX, e quando seu design falhar miseravelmente como todos os primeiros projetos, você aprenderá algo sobre como não programar.
Você pode verificar este link no StackOverflow para obter uma grande lista de bons livros para aprender C ++.
fonte
Antes de tudo, aumente sua base teórica básica naquilo que você ainda não conhece. Estude a teoria e escreva alguns exemplos curtos.
Exemplo de base teórica básica inclui:
Em seguida, considere aprender uma linguagem adicional (por exemplo, Java ou C #). - Estudar idiomas adicionais ajuda a melhorar os prós e os contras de qualquer idioma que você esteja usando e a aprender as práticas recomendadas que você talvez não conheça.
Em seguida, escolha um novo domínio (programação na web, computação gráfica, processamento de imagem, visão computacional, acesso a dados, ...). Estude a teoria e escreva alguns exemplos curtos.
Em seguida, crie um grande exemplo, que encapsulou um aplicativo de várias camadas, manipulando o acesso a dados, a interface do usuário e um domínio específico que você escolheu. Coloque ênfase na arquitetura do aplicativo (verifique se as partes estão o mais frouxamente possível).
Felizmente, você aprenderá como aprender novas abordagens e tecnologias e integrá-las a uma boa arquitetura.
Especificamente para programação de jogos, recomendo escolher os seguintes domínios / tecnologias:
Editar:
Como aprender:
fonte
Usando C ++ (em combinação com C), suponha que você terá mais para aprender a entender o WTF sobre o qual eles estão falando. C ++ é várias linguagens, várias camadas de abstrações que vivem no mesmo local e leva muito tempo para explorar tudo uma vez e depois entender o que você acabou de ver.
Estive no seu caso e ainda estou aprendendo sobre esses idiomas. Também aprendo muito trabalhando em sistemas embarcados.
Aqui está o meu conselho:
Não assuma que você já sabe muito sobre programação. A maioria dos desenvolvedores amadurece em programação somente após mais de 10 anos de prática no mundo real, com diferentes contextos e tipos de projetos, plataformas etc.
Você está apenas começando sua jornada.
fonte
Com base nos seus interesses em programação e jogos incorporados, eu também recomendaria o seguinte - você pode ler as listas de livros das postagens acima para encontrar um bom material sobre todos esses assuntos. Um livro que achei essencial foi The C ++ Standard Library: Um Tutorial e Referência
Se você não estiver familiarizado com o básico do OOP - aprenda-o primeiro. Entenda os conceitos básicos de herança e encapsulamento. Saiba como as palavras-chave virtual, pública / protegida, privada e estática se comportam.
Fique à vontade usando ponteiros e referências (e geralmente prefira referências). Aprenda e use a construção smart_ptr <> para obter o gerenciamento de memória "automagical".
Aprenda a usar modelos C ++ - inicialmente apenas como tipos de dados de contêiner. Você descobrirá continuamente novas e mais poderosas técnicas que os modelos C ++ podem executar via metaprogramação.
Aprenda o STL: use string, iostream, exceções e classes de contêiner, e prefira-os aos tipos de dados char *, FILE * e char [] de nível inferior sempre que possível.
Comece a usar partes da biblioteca Boost - eu recomendaria que você aprendesse primeiro a biblioteca ASIO e Thread, de acordo com seus interesses. Essa é uma base de código C ++ multiplataforma muito poderosa, de código aberto, que permite escrever códigos de alta qualidade que também sejam portáteis. (Muitas adições ao padrão principal do C ++ foram originadas nas contribuições do Boost)
Diverta-se! Sério - escolha alguns projetos para codificar. Talvez conserte as placas do Arduino, se você gosta de projetos de programação incorporados.
Obtenha um pouco de experiência - se você usou apenas o Windows / Visual Studio C ++, tente escrever um código para Linux / g ++ ou OS X / XCode (você pode codificar C ++ no Mac ou pode realmente expandir seus horizontes e continuar para o Objective-C, para ver como outro ramo das línguas OOP aborda as coisas!)
fonte