Executando verificação de segurança...
4

Qual linguagem de programação você deve usar

Opa pessoal, tudo bem?

Podem me chamar de Nigro, eu sou desenvolvedor faz 3 anos e decidi escrever isso hoje para discutirmos sobre um "problema" que todo mundo na área chega em algum momento: Qual linguagem de programação eu devo usar?

Vou ser 100% sincero com vocês, eu pessoalmente ainda sofro bastante desse problema, mas acho que tenho uma opinião minimamente concreta sobre isso.

A linguagem é uma ferramenta

  • Quando você precisa fixar um prego em materiais como a madeira, a melhor opção seria um martelo.
  • Quando você precisa apertar algum parafuso, a melhor opção é uma chave de fenda ou furadeira.

Você até consegue usar uma chave de fenda e bater com tudo no prego, ou usar o martelo para apertar o parafuso. Você usa a melhor ferramenta disponível para cada caso.

O que eu acho que programadores estudam

Na minha opinião um programador não aprende linguagens como Python ou C#, ele aprende a lógica. Você precisa usar uma ferramenta para um trabalho.
Hoje em dia tem várias opções, algumas mais fáceis e outras mais difíceis de aprender. Saiba pelo menos o básico que o resto vai que nem água. Aproveite que hoje em dia tem todas essas oportunidades e você não precisa escrever em assembly.

Essa linguagem é mais rápida que essa

Na maioria esmagadora dos casos, isso não vai importar em nada. Esses milissegundos de diferença não vão mudar nada. Você escrever um código bem feito em Python pode ser mais rápido que um código mal feito em C++. Aprenda a lógica e a estrutura, não as linguagens.

Considerações finais

Eu sei que eu disse que é melhor usar a melhor opção para cada ocasião, mas calma.

Eu imagino que ninguém queira trabalhar como desenvolvedor na rua com fome e desempregado, né?
Então use a linguagem que você mais gosta ou prefere.

Não adianta você usar a melhor opção se ela é difícil e você não sabe nada sobre ela, escolha alguma e vá até o final.

Exemplos:

  • Angry Birds foi feito com Lua, linguagem interpretada feita aqui no Brasil na PUC-Rio.
  • Project Zomboid foi feito com Java.
  • Minecraft foi feito com Java.
  • Apex Legends é programado em uma linguagem interpretada chamada Squirrel.
  • O código de Undertale é horrivel.
  • AWS, Cloudflare, etc usam Javascript em seu backend.

Qualquer pessoa que tente refazer o Minecraft em outra linguagem vai ter um jogo muito mais rápido e com um desempenho muito melhor. Você conhece algum "Minecraft mais rápido" famoso? Ou algum "Apex Legends que não seja pesado"? Alguma "AWS mais rápida"?

O que eu estou querendo dizer é: termine o seu projeto, quem vai usar são os clientes e eles não ligam para os 10ms de atraso, o uso alto de RAM ou o código espaguete. Faça algo bom.

[!] Isso é a minha opinião, vocês estão convidados para discutirem sobre isso no post :)

🎮 Tenho mais experiência em jogos, por isso dos exemplos.
🎆 Um feliz ano novo para todos vocês, bora aproveitar ao máximo 2024
Carregando publicação patrocinada...
2

Interessante post, mas deixa a deseja em algumas coisas, na minha opinião, as quais irei pontuar aqui:

  1. Como o @pedrohaveloso já falou em seu comentário, a própria Mojang refez o Minecraft em C++. Podemos argumentar quanto ao quesito bugs, já que com certeza essa versão os tem bem mais, mas definitivamente também possui mais desempenho, o que ainda é uma reclamação constante na edição original. Na sua reposta dada ao comentário, você disse que a versão Java continua sendo a queridinha de comunidade, mas isso é uma visão de dentro da sua bolha. Na realidade, a versão Bedrock é a mais jogada justamente pelo seu porte de C++ conseguir atingir várias plataformas além de PC. Por fim, a razão de parte da comunidade do PC ainda preferir a versão Java, é por ser um público mais antigo e que entende as diferenças entre os jogos, como por exemplo não precisar pagar por um mapa, skin ou mod na loja.
  2. Sua afirmação em relação à linguagem Squirrel me deixou bem intrigado, então fui dar uma olhada do que se tratava mais afundo. De fato a linguagem é usada no jogo, porém com dois detalhes importantes: (i) a engine do jogo é uma versão modificada da Source, que por sua vez é escrita em C++, o que certamente justifica melhor como um jogo daquele porte seja performático; (ii) a linguagem, apesar de ser interpretada, tem a proposta de "ser uma linguagem de script leve que se encaixe nos requerimentos de tamanho, uso de memória e requisitos de reposta em tempo real de aplicações como jogos" (Squirrel (programming language)), nesse caso ficando claro que não é uma linguagem de script qualquer, e sim uma com foco justamente para o que está sendo trata.
  3. Por favor, colocar um link de onde foi retirada tal informação quando estiver escrevendo alguma coisa.

Quanto ao resto do exemplos dados, não tenho proficiência para falar e também não tenho interesse de pesquisar, por isso não possuem comentários.

Claro, entendo seu ponto de apenas escolher uma linguagem, independente de qual, e fazer o trabalho, o que definitivamente é válido para quem programa por hobby ou é iniciante, e busco aqui somente elencar alguns pontos a serem analisados.

Por último, o que eu tenho a dizer ao que imagino que seja o público alvo do post (programador por hobby ou iniciante): se já possuem alguma visão de que carreira quer seguir na área de tecnologia, busque entender quais ferramentas e linguagens são utilizadas e as aprenda. Se você quer ir para área de embarcados, por exemplo, não ache que você conseguirá ficar muito tempo fazendo coisas em JavaScript e Python, e evitando programar tendo que gerenciar memória em C/C++/Assembly, porque não é sempre que você vai ter um hardware suficientemente poderoso para rodar um sistema operacional e interpretar seu código. Se quiser ir para a área de áudio ou gráfica, provavelmente terá que usar C ou C++. Se quiser ir para web front-end, tem que saber JS/TS e ponto. O mundo de programação é enorme e com certeza não consigo citar todas as possibilidades aqui, por isso: pesquisem, tenham foco e estudem constantemente.

1

Obrigado pela resposta!

Eu jogo Minecraft poucas vezes e sou um jogador mais antigo, por isso a preferência da versão Java, então concordo totalmente com o que você disse de ser minha visão na minha bolha.

Na parte dos exemplos com o Apex Legends eu dei uma resumida para o post não ficar tão grande. Eu aprendi a programar nos jogos da Source, e essa engine é uma gambiarra total. Eu não sei muita coisa dessa versão modificada usada no Apex e usei essa informação só para sustentar o meu ponto: Não tem necessidade nenhuma programar o jogo na engine em C++ se tem a possibilidade de usar o Squirrel que é uma forma mais fácil e mais rápida de se usar.

Tem alguns exemplos do uso de Squirrel no R5Reloaded (mod de Apex) no Github se você quiser dar uma olhada.

Agradeço novamente pela resposta e vou dar uma detalhada nas informações em meus futuros posts, esse foi meu primeiro :)

1

A performance do Minecraft Java poderia ser melhor...

[...] já que com certeza essa versão os tem bem mais, mas definitivamente também possui mais desempenho, o que ainda é uma reclamação constante na edição original.

Sem contar que, sejamos sinceros, o codigo do Minecraft Java é... digamos que poderia ser bem melhor.

A versão 1.20.2 em meu notebook roda a 10-15fps na média. Com optifine (que funcionava muito bem antigamente, mas hoje em dia o código está muito antigo) roda a 25-30fps na média. Entretanto, instalando alguns outros mods feitos pela comunidade, eu consigo rodar o Minecraft Java 1.20.2 a incríveis 80fps estáveis (que é uma diferença pra quem jogava a 15fps).

Muitos ainda usam o optifine por causa da sua facilidade. Você só instala e pronto, não precisa instalar outros 100. Mas ele definitivamente não é o melhor atualmente, no quesito performance.

O problema, muita das vezes, não é a linguagem, é o programador. O Minecraft Java é sim extremamente otimizado para um jogo de seu porte, mas poderia ser MUITO mais, e a comunidade prova isso. Ainda me questiono como um estúdio como a Mojang (e ainda da Microsoft), ser tão desleixado com seu público em relação a isso.

The downfall of Minecraft's performance
The Problem With Minecraft: Java Edition

Minecraft Vanilla vs Optifine

*Minecraft - the difference LazyDFU makes!
*Optifine dev on performance problems in Minecraft 1.8 -> Minecraft Forum

1

Certamente o Optifine foi deixado para trás. Sinceramente, não lembro a última vez que vi algum modpack que rodava com ele, mas também já faz mais de 1 ano que parei de olhar coisas de Minecraft com a frequência que fazia antigamente. Ainda assim, acho extremamente bizarro como uma empresa desse porte não tenha feito melhorias nesse quesito.

Eu entendo o fato de não quererem investir tanto na versão Java, já que a Bedrock claramente é o carro chefe agora, ao manter as atualizações, além de anuais, pífias. O que eu não entendo é como pode ser tão problemático, por exemplo, comprar os direitos de algum mod de performance e só colocar dentro do jogo vanilla. Talvez seja porque se melhorarem a versão Java, o público do PC perceba que essa versão é objetivamente melhor (pelo menos na minha opinião), e passem a usar ela, os fazendo perder dinheiro por vender menos na loja, mesmo que ainda os jogadores de console e portátil não possam fazer muito a respeito.

Edit: também gostaria de deixar claro que nunca joguei a versão Bedrock. Sou um ávido usuário de Linux e não consigo pensar em algum motivo grande o suficiente para me fazer trocar rodar a Java nativamente por me dar trabalho de configurar alguma maneira de rodar a Bedrock.

1

Edit: também gostaria de deixar claro que nunca joguei a versão Bedrock. Sou um ávido usuário de Linux e não consigo pensar em algum motivo grande o suficiente para me fazer trocar [...]

Eu também uso Linux e consegui uma forma de rodar o Minecraft Bedrock nele. Estou usando um launcher que consegue rodar instalando o .apk (x86 ou x86_64) ou direto da Play Store. Roda muito bem, e jogo mais nele do que na Java, por causa dos meus amigos.

https://github.com/minecraft-linux

1

Interessante seu artigo!
Não possuo vasto conhecimento em linguagens de programação mas estou estudando análise e projeto de algoritmos com Python na faculdade (Métodos de busca e ordenação como merge, quick, bubble sort e etc) e Java através de curso livre com a Loiane Groner.
Pretendo criar uma base em POO através do Java e depois talvez partir pro JavaScript com Nodejs por me parecer mais "hypado" no meio profissional pra java junior.

1

Sinceramente não existe linguaguem melhor que outra(embora tem umas que podiam ser melhores kk) cada uma tem seu objetivo é claro tecnicamente existem 2 ou 3 que cumprem o mesmo objetivo e uma é melhor da outra mas támbem tem que analisar se você quer grande perfomace com low-code, ou baixa perfomace com hight-code etc

1
0
1

Qualquer pessoa que tente refazer o Minecraft em outra linguagem vai ter um jogo muito mais rápido e com um desempenho muito melhor.

A própria Mojang/Microsoft fez: o Bedrock Edition, construído em C++.

Se comparado com a versão Java, no computador, é absurdamente mais performático.

1
1

Eu só queria um mine em outra linguagem. Tenho um PC gamer com umas peças bem parrudas, e ainda o mine pega picos de 100% de CPU ao inicializar, e se estabelece entre 60% e 80% em uso... Assustador.

1