São muitas opções de linguagens
São muitas opções de linguagens

Série: Como escolher uma linguagem de programação para começar a estudar Desenvolvimento de Jogos em 2018? PARTE 2/3


Júlio Rodrigues ·

Dando continuidade à nossa série e já com os critérios estabelecidos iremos avaliar as linguagens Java, php e python.

Se você ainda não leu o nosso primeiro artigo onde falamos da linguagem C++ e elencamos os critérios que estão sendo usados para fazer tais avaliações você pode conferir agora.

Ranking das Linguagens

4ª php/python

Estou juntando as duas linguagens em uma só aqui pois elas tem função similar no desenvolvimento de um jogo, em geral essas duas linguagens, se tratando de jogos mais profissionais, são usadas exclusivamente no servidor ou para se criar ferramentas de auxílio no desenvolvimento, jamais no cliente.

Php é sem dúvidas no Brasil a linguagem mais usada para ser fazer todo tipo de aplicação web, desde blogs até sistemas de compra de passagens. Já python possui uma comunidade científica muito forte mas também existe um grande grupo de pessoas que a utiliza para se desenvolver sistemas web.

Particularmente eu considero python uma linguagem muito boa para se aprender a programar, ela está em um nível de abstração altíssimo onde você pode se preocupar quase que exclusivamente com lógica de programação. O que não ocorre em algumas outras linguagens onde o aluno tem que absorver uma sintaxe e estilos de uso que são mais voltados pro uso real do dia-a-dia.

Mas nem todo mundo gosta de aprender assim, tem pessoas que querem ver desde o primeiro dia algo concreto acontecendo. Pra essas pessoas a melhor alternativa seria o php pois com ela construímos websites e aplicações web. Claro, se você está aqui você e se interessa por php você quer fazer um jogo de navegador, não uma aplicação ou site qualquer.

Infelizmente php sofre do mal que mencionei, a sintaxe desta linguagem é estranha e com muito uso de caracteres esquisitos para pessoas de fora do mundo da programação.

Não se engane em achar que você não deve usar uma dessas duas linguagens para fazer o seu servidor, principalmente se você estiver construindo um jogo de turnos, ou um jogo que tem interatividade com outros jogadores mas esta é mais leve em termos de interatividade em tempo real, como em jogos sociais. Php e python são excelentes escolhas neste ramo.

Agora vamos aos critérios.


Repositório com bibliotecas úteis e modernas
Nota: 5 (0 a 5)

Neste ponto essas duas são brilhantes. As comunidades são bastante ativas, com bibliotecas gratuitas para todo o tipo de situação e muitas delas de excelente qualidade usada por gigantes da indústria. Ambas também possuem sistema de gerência dessas dependências muito bons.


Compatibilidade entre diversos sistemas operacionais e plataformas
Nota: 5 (0 a 5)

As duas linguagens rodam numa gama enorme de sistemas operacionais. E como estamos falando de servidor isso não faz tanta diferença mas a nota não tem como ser baixa.


Performance nua e crua
Nota: 2 (0 a 5)

Já quando estamos falando de eficiência dos usos computacionais, infelizmente elas deixam a desejar. Se ouve muitas histórias de horror sobre rewrites que são necessários de serem feitos de sistemas que usavam estas linguagens originalmente por conta de problemas de performance.

Muitos vão argumentar que são programadores ruins, etc. Mas a linguagem e sua cultura de desenvolvimento influenciam bastante no jeito que um programador médio vai desenvolver uma aplicação, e se você combina isso ao fato que sim, são linguagens um pouco mais gulosas com os recursos, é válido fazer a crítica sobre estes pontos.

O que você vai acabar tendo que fazer se o seu jogo tiver um fluxo muito grande de jogadores é trabalhar todo tipo de cache possível, o que ao meu ver, demonstra as fraquezas do modelo de programação usados por tais linguagens (não que exista muita saída em outras)

E como o nome do critério é performance "nua e crua" não podemos dar uma nota alta neste quesito de jeito algum.


Base de usuários
Nota: 5 (0 a 5)

São poucas as linguagens que possuem comunidades tão acolhedoras e prestativas. E como são linguagens antigas você vai encontrar todo tipo de dúvida já sanada.


Vagas de emprego
Nota: 5 (0 a 5)

Na minha experiência de mercado de trabalho nenhuma linguagem em termos de número de vagas supera php. Já vi uma certa quantidade de vagas também para python, muito menos do que php mas rola sim. Em termos de salário já não poderia afirmar que essas duas linguagens são as melhores opções.


Uso em um studio independente de jogos
Nota: 4 (0 a 5)

Como são linguagens fáceis de se construir um servidor web, e se estivermos falando de um jogo que necessita de interação com um servidor, seja para um save, seja para integrar com mais segurança com alguma rede social, principalmente o php por conta de sua facilidade de deploy, são bastante adequadas para tais aplicações.


Total preliminar
26 de 30

Um placar altíssimo. Se alguma linguagem de programação alcança uma pontuação tão alta ela poderia ser usada sem pensar duas vezes. Porém estas duas possuem uma limitação importante para quem está começando que será explicada logo adiante.


Total
18 de 30

Foi aplicado um desconto de 30% pois estas linguagens não podem ser usadas na aplicação cliente*1,2. Argumento que o desconto é razoável pois as próximas linguagens que serão apresentadas podem ser usadas tanto no cliente como no servidor mesmo que o uso na prática seja bem diferente em cada um desses tipos de aplicação.

Para quem está começando faz muita diferença conseguir reutilizar os conhecimentos ao máximo, por isso advogo que se existe uma ferramenta que pode ser usada em mais de uma situação, isso deve ser levado em consideração com grande peso.

*1: Vão dizer que você pode fazer jogos com pygame, etc. Mas não é o caso. Estamos aqui pensando em linguagens que podem criar produtos realmente rentáveis em alguma plataforma mainstream.

*2: Python é uma excelente linguagem de script usada por desenvolvedores mais avançados que querem criar ou melhorar suas ferramentas e também é usada por artistas técnicos para criação de plugin em alguns softwares de arte 3D. O desconto seria ainda maior se não existissem essas possibilidades.


3ª Java

Odiada por muitos, Java é uma linguagem que parece resistir ao teste do tempo. A primeira linguagem orientada à objeto de uso em larga escala pelo mercado de TI, Java já passou por diversas revisões e hoje é considerada uma linguagem que abarca muitos conceitos considerados modernos como expressões lambda, estilo funcional de programação através de streams e optionals, na próxima versão, Java 9, até um REPL será incluído.

Ela é odiada por ter sido extremamente burocrática nas suas primeiras versões, com o tempo foi ficando mais flexível e de uso conciso. É possível construir bibliotecas com abstrações muito ricas e intuitivas com a linguagem nos dias de hoje.

No mundo dos jogos a linguagem nunca fez muito sucesso por conta do seu modelo de uso da memória . Principalmente no passado, o tipo de exigência que um garbage collector faz é inaceitável. Mas o Android chegou para provar o contrário mostrando que é possível construir aplicações muito eficientes com a linguagem. É fato, entretanto, que eles tiveram que reimplementar a JVM e muitas coisas são feitas com C++, mas nem tantas coisas.

Sem mais delongas vamos aos critérios levando em consideração seu uso para jogos.


Repositório com bibliotecas úteis e modernas
Nota 5 (0 a 5)

Java também dá um show nesse quesito, e mesmo para jogos, com a chegada do Android, foram construídas muitas aplicações com um grande zelo dos recursos computacionais, algo muito desejado em um game.

Para quase tudo que você precisar que seja um problema bem definido, você deve encontrar alguma biblioteca que o faça, e muitas vezes o faça bem.


Compatibilidade entre diversos sistemas operacionais e plataformas
Nota 3 (0 a 5)

Aqui fica a desejar. Apesar deste ter sido o lema da linguagem desde a sua concepção que se mantém até hoje de uma certa forma, sabemos que não é bem assim. Nem toda plataforma possui uma boa implementação da JVM e algumas vezes a diferença de performance é tão gritante que retira a portabilidade do código do ponto de vista prático.

Quando queremos rodar código java numa plataforma mais controlada como iOS é preciso utilizar um transpilador ou uma ferramenta como a Multi-OS Engine que roda a ART VM numa máquina iOS.


Performance nua e crua
Nota 3 (0 a 5)

Muita gente vai dizer que esta nota está alta demais, mas a verdade é que por uma questão histórica da briga entre C++ e Java, onde o resultado é nítido, temos essa lenda de dizer que Java é uma linguagem lenta, o que não acredito ser verdade.

E em jogos, se o seu modelo de alocação de memória for respeitado, é possível sim obter um rendimento excelente com a linguagem. O que realmente pesa são alguns detalhes que passam despercebidos por muita gente mas que na hora que estamos lidando com a comunicação com GPUs e afins são a diferença entre uma aplicação vencedora e o fracasso.

E que diferenças seriam essas? Por exemplo, o sistema de tipos de Java é bastante rígido e definido, já C++ da liberdade ao compilador e o programador escolherem quais seriam os tamanhos mais adequados a um caractere, um número, etc. C++ escolhe a performance, Java busca a consistência. Um outro exemplo são os ponteiros, C++ permite liberdade total no acesso a uma posição da memória e vai além permitindo inclusive a aritmética de ponteiros, o que não passaria de um sonho para um programador Java.

Não obstante, Java também possui mecanismos nativos para uso direto de memória, não tão livres quanto em C++, mas com buffers de Java NIO é possível trabalhar fora da JVM. Em alguns casos isso se mostrará extremamente eficiente, o único porém é que estamos pisando em território não gerenciado e teremos que fazer como em C/C++ e gerenciar a memória nós mesmos.


Base de usuários
Nota 5 (0 a 5)

É excelente. Muito material, muita gente experiente e muita gente nova. Blogs para todos os níveis de técnica. Muitas perguntas já respondidas.


Vagas de emprego
Nota 3 (0 a 5)

Com a chegada do Android esta linguagem teve um aquecimento muito grande. É certo que se você está falando de Java para servidor o ferramental é tão diferente que a linguagem parece ser um mero detalhe, mas como é algo a menos para se aprender eu diria que conta.


Uso em um studio independente de jogos
Nota 3 (0 a 5)

Com ferramentas como libGDX você pode construir o seu jogo para as plataformas mais tradicionais: Windows, OSX, web, Android e iOS. Se você quiser saber como fazer isso leia o nosso livro sobre o assunto.

Além disso, você também pode fazer o lado servidor do seu jogo com Java, o que a torna híbrida.

É uma linguagem muito ensinada em faculdades e se podemos fazer todas as partes de um jogo com ela temos um bom motivo para começar com Java.

Porém temos que ser realistas, libGDX é muito legal mas é uma ferramenta de nicho, dificilmente se você abrir um estúdio você vai conseguir encontrar profissionais prontos para usar ou que até mesmo desejam aprender a biblioteca.

É um framework muito bom porém quando formos comparar com ferramentas mais robustas do naipe da Unity, UDK e Godot chega a ser injusta a comparação pois estas são engines e a libGDX é a fundamentação que uma possível engine feita sobre ela precisaria ter.


Total
22 de 30

Eu particularmente gosto muito de Java, porém tenho que separar o meu gosto da realidade, pensando no uso real de uma situação de competição de mercado temos que ser objetivos e por isso a linguagem só ocupa a terceira posição do ranking.

Nos próximos artigos você vai conferir a avaliação das linguagens:

  • C#
  • JavaScript

Lista apresentada em ordem alfabética para manter o clima de suspense. Não reflete necessariamente a ordem que será indicada pelo autor.


Perguntas/Queries relacionadas
  • melhor linguagem programação 2018 2017
  • linguagem iniciantes
  • linguagem programacao de jogos
  • linguagem desenvolvimento de jogos
  • vantagens desvantagens c++
  • Java vs C++
  • critérios de avaliação de linguagens
  • como comparar linguagens de programação
  • python para jogos
  • php para jogos
  • java para jogos
© Bladecast 2018. All rights reserved.