Cer ou não Cer, eis a questão
Afinal, qual é a melhor linguagem para criar jogos?

Ainda hoje, no início do terceiro milênio, em qualquer fórum ou lista de discussão sobre jogos que se preze, a maioria absoluta dos participantes é formada por pessoas que acreditam que jogos bons devem ser escritos em C. Essa crença na linguagem C é antiga e tem suas origens nos primórdios da computação acadêmica. Sob certos aspectos, C é de longe a linguagem mais marquetizada que se tem noticia na face da terra (e sem que nenhum fabricante de compilador gaste um centavo sequer com isso).

Para entender melhor precisamos voltar ao começo dos tempos, nas décadas de 70 e principalmente 80. Naqueles tempos, cada fabricante de computador tinha o seu próprio sistema e invariavelmente o sistema de um não se dava bem com o de outro. Não apenas porque cada um usava um processador diferente, mas principalmente porque os sistemas operacionais, bios e linguagens residentes não guardavam nenhuma semelhança ou compatibilidade entre si.

Normalmente os computadores vinham de fábrica com um sistema operacional básico e uma linguagem interpretada, gravados em eprom e portanto disponíveis para uso tão logo o botão de liga/desliga fosse ativado. Invariavelmente a linguagem residente era o basic (embora um ou outro fabricante maluco tenha optado pelo forth - que era considerada a linguagem ideal para escrever jogos).

Acontece que o basic sempre foi a pedra no sapato dos acadêmicos. Considerada meramente como "lixo" pela nata da programação, a linguagem tinha suas vantagens e desvantagens. A vantagem principal era a de que até um chipanzé é capaz de programar em basic, ao contrário do assembler, que exige um pensamento organizado e principalmente paciência, tornando-a a melhor de todas as linguagens herméticas (portanto mantendo a academia exatamente onde ela deve ficar, na manutenção do conhecimento). A grande desvantagem do basic era justamente o fato de ser interpretado e não compilado.

Um programa compilado executa exatamente o que o código manda executar. Um programa interpretado precisa antes ser traduzido para os zeros e uns que o processador compreende, acrescentando ao programa uma etapa que consome muito processamento e não traz nenhuma vantagem adicional, além do fato do programa poder ser alterado a qualquer momento. Neste esquema, todos os programas seriam em princípio open source (a grande vedete dos tempos modernos).

As demais linguagens tradicionais, como Cobol, Fortran, além das esquisitas como Ada, Prolog, Lisp, etc, ou estavam em processo de extinção ou simplesmente não saiam do círculo formado pelos seus criadores e entusiastas. Nem mesmo o Pascal, uma espécie de basic metido a aristocrata, conseguia vencer as resistências e o mundo seria dominado pelo basic se nada fosse feito. Principalmente porque já começavam a aparecer compiladores basic e, heresia de todas as heresias, um basic estruturado começava a ganhar terreno.

Então apareceu a linguagem C. Foi proposta como uma linguagem intermediária: não era tão escandalosamente restrita como o assembler e nem escancaradamente simples e direta como o basic, mas a meio caminho de ambas. Mantinha a velocidade do asssembler (claro, afinal toda linguagem compilada tem a velocidade do assembler) e era "portável" - era para rodar os fontes em qualquer máquina C (assim como o Java tenta ser hoje). De fato, o basic possuía contra si o fato de existirem inúmeros dialetos que as vezes nem entre eles havia compatibilidade.

O C manteve a mesma estrutura hermética das linguagens acadêmicas, ou seja, era uma linguagem para os estudiosos e não para usuários comuns, ou programadores de segunda linha (programador de fim de semana). Assim ela nasceu e assim ela permanece até hoje.

Além disso, a linguagem foi planejada para que os programadores escrevessem sistemas operacionais, compiladores, drivers, etc, de forma mais rápida e eficiente. Nunca foi proposto que ela substituísse as linguagens de alto nível, na criação de programas ou aplicativos.

Então por que o C está tão ligado à criação de jogos, quase que como se fosse impossível ser diferente? As razões estão também lá no começo dos tempos.

Na idade da pedra da computação, a exemplo de hoje, os jogos exigiam sempre o máximo potencial e o melhor aproveitamento dos recursos das máquinas disponíveis e o grande gargalo (ainda hoje é) era a parte de vídeo, ou gráfica.

Hoje em dia, soluciona-se isso gastando algumas centenas de dinheiros numa placa 3D de alto desempenho e pronto. Mas naqueles tempos antigos, os computadores não dispunham de tais facilidades e eles eram sempre do jeito que saiam de fábrica. Todos iguais. Produzir animações na tela do micro exigia então programação assembler complexa.

O aparecimento da linguagem C permitiu que os programadores se livrassem da incompatibilidade entre os processadores e mais: dotou-os de uma ferramenta portável (a palavra sob a qual o C foi criado). Assim, converter um jogo para os diversos micros da época era relativamente simples.

Passou a ser verdadeira então a afirmação de que, profissional e comercialmente, usar C para programar os jogos era a melhor opção. Com o tempo e com a evolução dos compiladores, aumento da performance dos equipamentos e principalmente com o surgimento de novas técnicas de animação, essa verdade tornou-se então questionável. Mas não se pode negar que ainda dispomos de uma vasta biblioteca de conhecimentos em C, sobre programação de jogos e que não devemos simplesmente desprezar por qualquer tipo de preconceito.

Hoje em dia, vale a regra: quem já domina ou tem uma estrutura calcada na programação usando C, deve permanecer nela. Quem ainda vai formar sua estrutura ou está começando agora, tem à sua disposição uma série de opções, tão boas quanto, podendo inclusive optar pelo C. Mas é preciso considerar um ponto: o C é de longe a pior escolha para um iniciante. Não apenas porque sua sintaxe é antiquada, mas porque ela se tornou improdutiva se levarmos em conta o tempo disponível que temos para programar (ainda que não se considere o trabalho como um produto comercial e portanto com prazos a cumprir).

Porém, nenhuma linguagem, nenhum sistema é capaz de responder sozinho pela criação e produção de um jogo, se desejarmos dar alguma complexidade a esse programa.

 
online