
As ferramentas de um programador
Depois desta postagem, na qual o Glauber discutiu as ferramentas utilizadas por artistas, é imprescindível abrir o mesmo tipo de discussão para programadores.
Acho que o tipo mais comum que nós, programadores da área, recebemos, é: “Por onde eu começo? O que é bom estudar? A linguaguem X é boa?”
Acho que a melhor analogia para tentar explicar isso é a do bom e velho ferreiro: o que é mais importante? O martelo ou o ferreiro em sí? Será que ele não poderia utilizar outra ferramenta para fazer o seu trabalho, caso ele perca o martelo?
Programação é mais ou menos isso. A priori, qualquer linguagem de programação não passa de um martelo. Não passa de uma ferramenta criada para te ajudar e para atender especificações de um hardware. Assim como um martelo, você não precisa ter experiência com uma linguagem de programação. Você precisa ter experiência com um tipo de linguagem, ou com os conceitos básicos que estão presentes em diversas destas.
Acho engraçado conhecer algumas pessoas um pouco mais velhas, que já programavam nos anos 90, e hoje em dia trabalham com software. Nesta década, foi onde apareceu o Java, com sua máquina virtual e sua promessa de rodar o mesmo código em qualquer lugar que tenha a máquina virtual. O Java já foi criado pensando que, algum dia, ele rodaria em aparelhos domésticos como uma geladeira. Quem viveu esta época e pegou a evolução java, pensa fortemente que Java é a linguaguem messiônica: Cciada pelo divino para resolver os problemas mundanos. Estas pessoas simplismente não entendem a idéia de usar qualquer outra linguagem de programação para resolver um problema. Elas pensam no que seu martelo podem fazer, e fazem. E, na verdade, eles fazem mesmo, porque os problemas são parecidos.
Agora, com jogos, temos que pensar em duas coisas: na realidade do mercado e no conhecimento de base.
Como conhecimento de base, é necessário saber um pouco, ou pelo menos saber que existe, de alguns paradigmas de computação. É preciso saber a diferença de uma linguagem de script para uma que não é. É preciso saber orientação a objetos, ponteiros e toda parte de estrutura de dados. E, qual a melhor linguagem pra aprender isso?
Difícil responder esta pergunta. Isso depende do seu tempo e da sua dedicação. Isso depende da sua faculdade. Pessoalmente, aprender C, para pegar uma base, foi excelente. Mas, logo tive que ir para uma linguagem de programação orientada a objetos. E sabe o que eu aprendi? Java. Se eu já fiz um jogo nesta linguaguem? Não. Vou fazer? Provavelmente não. Mas quando eu pego qualquer linguagem orientada a objetos, é tudo igual. O que muda é a interface da linguagem com o dispositivo. Como ela faz algumas coisas.
E, como realidade do mercado, temos que pensar como entrar neste. No Brasil, aprender actionscript, por exemplo, é útil. Muitas empresas fazem aplicações e jogos em Flash, então é bom aprender para ter uma base. As vezes, para pegar experiência, vale tudo: PHP, .NET, Ruby, ou qualquer linguaguem para web. Este mercado é enorme no Brasil. Até mesmo C#, para utilizar com unity é uma boa hoje em dia.
Basicamente: linguagem de programação é ferramenta. O que está por trás delas é o que você precisa saber. É tudo que foi citado, e, na verdade, muito mais. É padrões de projetos, é UML, é técnicas de refatoração, é conhecer basicamente matemática, é saber conviver e trabalhar em grupo. Sim, este último faz de você um programador excelente.
Há apenas um detalhe: o plano a longo prazo. As empresas lá fora usam C++ e linguagens de script proprietárias, como o UnrealScript. Então, se esta é a sua meta, trabalhar e conhecer C++ é necessário, e precisa ser um conhecimento profundo. Isso não significa que você precisa trabalhar de fato com ele, mas fazer tech-demos é um bom caminho a se começar.
Não se assuste. Ser programador é uma profissão que demora para se aprender, e está em constante evolução. Você não aprende a fazer software apenas em um ano, ou apenas com o que aprendeu na faculdade. Há diversos livros que se entitulam Aprenda a programar em 1 mês. Se você quer ser programador, pense o contrário. Aprenda a programar em 5 anos. Aprenda a programar em 15 anos. Esta já é uma área tão ampla que você tem o que aprender a cada dia.
Ah! E uma dica: aprenda inglês.
cateogories: Programação

Gilliard Lopes
August 27, 2010 at 11:13
Excelente post, Martin. Até nem tenho muito o que comentar porque concordo com tudo e não faltou muita coisa a dizer. O ponto mais importante é com certeza sobre o conhecimento de base. O programador precisa se preparar para trabalhar com qualquer linguagem, qualquer tecnologia, já que os padrões de mercado mudam bastante, e as diferentes plataformas exigem o uso de ferramentas variadas mesmo. O cara que tem a base tá pronto pro que der e vier, é só aprender a sintaxe na documentação.
Acho que os Java fanboys apareceram em massa um pouco mais tarde do que você mencionou. Comecei a programar em 98 e o pessoal da minha época também torce o nariz pro Java, pois ainda pegamos C e C++ na veia.
Outro ponto sobre a "melhor" linguagem pra aprender: é opinião pessoal, mas eu realmente acredito que começar com C e C++ é o melhor caminho. A sintaxe é mais obscura, os ponteiros vão te dar problemas, mas depois de um tempo dando cabeçada na parede você assimila os conceitos e acaba tendo um conhecimento bem profundo da máquina. Depois disso, transitar pra Java, C# (minha preferida entre as linguagens mais alto nível), PHP ou qualquer script vai ser muito fácil. O caminho contrário (aprender C depois de saber essas linguagens) é bem mais penoso.
E só pra reforçar: inglês afiado é IMPRESCINDÍVEL.
Parabéns pelo post.
Yuri
August 27, 2010 at 11:54
-Me ensina a programar?
-Te ensino a sintaxe.
Programação é uma coisa complexa de se aprender e realmente tem pouca diferença em qual linguagem o individuo começa, e a partir do momento em que a criatura pega fluência, a transição entre linguagens é questão de força de vontade.
Por exemplo eu comecei a programar de verdade em 2000 usando Lingo (aí vocês dizem WTF?!? Lingo… do Shockwave), passei para ActionScript e enfim em 2003 +- virei gente e meti as caras no C/C++.
Contudo o que o Gilliard postou é extremamente relevante. C e C++ não tem as facilidades de outras linguagens mais difundidas, como Java e C#. Se você precisa de alguma funcionalidade, então vai precisar programar (ou procurar uma lib OpenSource), muito diferente de dar um 'import' e resolver todos os problemas.
Para os JavaMan ponteiros dão medo, particularmente, acho que é a coisa mais divertida da face da Terra =D
Flavio Meibach
August 27, 2010 at 12:42
Sinceramente, com a experiência de programação de jogos que tenho, acho que o certo é começar com MEL script, depois melhorar as bases com um pouquinho de Squirrel pra só depois passar para um Javão robustão e C#. C++ é altamente super estimado.
Luiz Alvarez
August 27, 2010 at 13:13
Aprenda C++ em 21 dias:
http://www.acartoofar.co.uk/wp-content/uploads/20…
Martin
August 27, 2010 at 13:19
É possível aprender C++ em 21 dias? Talvez.
É possível fazer um software de verdade e entender exatamente o que utilizar quando se deparar com um problema. Fazer algo de verdade depois de 21 dias? jamais.
Essa tirinha não poderia ser melhor =D
Eduardo
August 27, 2010 at 15:52
Muito bom o post, como sempre.
Só um porém: "Não há tempo", com H, do verbo haver. :)
Marcos Stoppa
August 28, 2010 at 19:29
Concordo completamente com a afirmação de que uma linguagem é apenas uma ferramenta. Estou no início da minha carreira de desenvolvedor, mas procuro sempre buscar conhecimento em áreas que serão úteis independentemente da ferramenta, como UML, Design Patters e OO. Considero esse tipo de conhecimento muito mais importante do que as linguagens, pois são gerais, mais profundos, e te fazem refletir muito mais sobre todos os paradigmas.
Germano Assis
March 12, 2012 at 19:11
Peço desculpa antecipadas se parecer grosseiro e ou arrogante, saibam que em nenhum momento abaixo pretendo ser isso. Mas achei o conteúdo do tópico bem diferente do titulo proposto, e muito tendencioso ao discriminar java.
Não que o texto esteja ruim ou fora lógica, mas bem o texto estava concentrado nas LP e como titulo fala de ferramentas (no plural) seria de se esperar que dedicasse igual tempo na descrições de outras ferramentas que os programadores usam.
Concordo com Flavio Meibach C++ é superestimado, eu prefiro Java e C# para a maior parte dos meus problemas mas isso não significa que não use C, PHP ou que for quando é o caso. E uma dica que eu sempre dou a amigos programadores é não se fixem a uma linguagem, conheçam bem os recursos e limitações das que vocês usam e utilizem a LP que for mais conveniente para o problema (Não adianta usar C para desenvolver um site). E tem sempre que pesar entre a legibilidade, usabilidade e manutenção da LP em relação ao desempenho as vezes compensa usar uma LP como Java que dizem ser mais lenta e as vezes não, isso só se aprende com tempo e com conhecimento de mais de uma LP.
Achei também que poderia ter falado mais das linguagens de script como LUA qe é Brasileira e muito requisitada em estudios AAA e das diferentes funções dos programadores dentro das empresas de jogos e que tipos de ferramentas cada um utiliza.
Voltando ao assunto do tópico, acho que poderia ter falado das engines, bibliotecas e IDE´s que são ferramentas de apoio ao programador. Principalmente que uma boa IDE pode economizar um tempo danado e até em alguns casos auxiliar no aprendizado da LP em questão. Já me disseram que IDE´s deixam programadores burros, e essa mesma pessoa passou 3horas olhando código no VIM sem encontrar o erro até me passar o arquivo e só de abrir o tal código na minha IDE ela mostrou o erro que era de sintaxe e cabal.
Pois bem essa foi a minha contribuição espero não ter sido chato demais. Parabéns pelo post mas tente ficar mais atento para não estar se desviando muito do caminho.