Qual linguagem de programação para o meu propósito em específico?

Não sou da área de TI – estou para me formar em agronomia –, mas sempre curti a ideia de criar programinhas. Já parei para estudar algumas linguagens como C, C++, Python e algumas linguagens web, mas nunca prossegui muito por conta de outras obrigações.

Tenho vontade de criar um RPG em modo texto complexo, o que pode ser feito através de várias linguagens, mas há algumas peculiaridades:

(1) - Esse é um projeto que me tomará muitos anos. A linguagem tem que ser “estável”

Desconsiderando o tempo que levarei para dominar a linguagem a um nível adequado para o que me proponho fazer, esse projeto pode me tomar um, dois, cinco ou até dez anos ou mais para chegar a versão 1.0, não sei ao certo até eu por a mão na massa e ver as dificuldades.

Sei que ninguém aqui tem bola de cristal, mas eu gostaria de saber quais linguagens cuja sintaxe seja mais à prova de mudanças. Por exemplo: do Python 2 ao Python 3 houve algumas mudanças, talvez não muitas, mas os softwares feitos na segunda versão dessa linguagem tiveram que ser rescritos; por outro lado, apesar de todas as atualizações do compilador e modos de escrita, imagino que um código em C++ escrito em 1999 pode ser compilado sem problemas num compilador de 2019. Me corrijam se eu estiver errado.

Em resumo, eu quero um mínimo de garantia de que poderei usar o mesmo código que escrevi hoje daqui a vinte anos, ou seja, um código escrito em 2020 poderá ser compilado/interpretado em 2040 sem muitas dificuldades.

(2) - Curto um pouquinho mais de performance

Sei que isso é bombagem de quem não é da área, mas gosto mais de programas compilados por causa da melhor performance, como C ou C++, embora eu poderia usar uma linguagem interpretativa como Python; mas tecnologias como Electron estão fora de cogitação.

Não quero dar a impressão que quero aproveitar bem cada byte do computador (não penso em programar em Assembly, por exemplo), mas quero fugir dos extremos.

(3) - Computação na nuvem (argh!)

Me parece que caminhamos para um mundo onde os computadores se tornarão meros terminais e todos os aplicativos serão na verdade sites da web e os documentos estarão o tempo todo na nuvem; essa me parece uma realidade bem possível e a acho abominável por N motivos (aqui um deles). Mas você pode contestar se é esse o futuro que teremos, mas por favor, não vamos fugir do foco do tópico.

Eu não quero construir meu jogo com base em tecnologias focadas na web (HTML, Javascript, PHP), mas eu quero que a linguagem que eu use seja compatível com o ambiente da nuvem (ou pretenda ser compatível no futuro). Eu explico: se a computação na nuvem dominar tudo, ainda vou querer que as pessoas tenham acesso ao meu jogo. Eu queria saber se há uma linguagem que faça ser possível o port para a web, tendo eu que reescrever apenas uma pequena parte do jogo para adaptá-lo aos navegadores.

Mas se você acha que o futuro não será bem assim como estou pensando, você pode ignorar esta questão da computação na nuvem e se focar nos pontos (1) e (2).

Observação: não sou contra guardar arquivos pessoais na internet, eu mesmo faço isso com meus documentos na minha conta do GDrive. Mas faço isso como backup, não como armazenamento principal. Mas não vamos sair do foco do tópico.





Sobre meu jogo. Como eu havia dito, será um RPG em modo texto (de forma que não me preocuparei com sprites/modelos 3D, sons, sistemas de colisão, etc), rodado no terminal mesmo. O diferencial é que pretendo dar ao jogador liberdade absoluta (sei lá, o jogador pode queimar uma casa cheia de pessoas, andar nu na praça, etc) e o ambiente e pessoas ao redor respondem a essas atitudes (pessoas comentarão se você estiver vestido inadequadamente, um incêndio pode destruir uma floresta e alterar a biodiversidade).

É um projeto complexo e por isso que já coloquei na minha cabeça que isso pode me tomar uns bons anos.





Acredito que a linguagem C seria a mais resiliente, pois o kerneis dos sistema operacionais são escritos nessa linguagem assim como vários softwares importantes, de forma que ela continuará a ser suportada durante muitas décadas. Sem contar que tenho esperança que poderemos ainda compilar programas em computadores. Se bem que a falta de suporte a orientação a objetos na linguagem C é um problema pra quem quer fazer um RPG.

Mas quero ver a opinião de vocês.

1 curtida

Você tá pensando em fazer algo como o Bandersnatch para o jogo? Você vai ter que ser muito bom de roteiro kkk.

Roteiro é minha última preocupação. rsrsrs A dificuldade maior será com as várias mecânicas do jogo, vou ter que pensar bem no design da programação.

1 curtida

cara eu acho que c/c++ seria bom para o caso como você descreveu. Gostei mto do projeto se quiser colocar ele open souce chama ai que a gnt ajuda a codar (pelo menos eu interessei)

1 curtida

Escreve em bash, usando muito o dialog.

Daria pra fazer até um servidor SSH que o cara se conecta e já começa o jogo!

Bash tá aí há uns 30 anos e não vejo ele deixar de ser usado num futuro próximo. Pra começar ainda saiu um tutorial do debxp no youtube com umas 14horas de aula pra quem está começando do ZERO!

2 curtidas

É a mesma resposta clichê de sempre, qualquer linguagem funciona, mesmo com esses pontos, linguagens em geral são bem estáveis (Python2 foi deprecado anos depois de Python3 ser lançado) e mudanças não acontecem do dia pra noite, performance num RPG de texto é deprezível e computação na nuvem não funciona com um port

Nos ultimos anos OOP tem sido deixada de lado em jogos em favor de ECS/Data Oriented Design

C é uma linguagem que vai te fazer chorar, ela é estranha, velha e te dá muito mais liberdades do que vc deveria ter

Fora isso, um projeto que vai te tomar 10 anos é uma coisa que vc definitivamente deveria repensar, não é uma parada humanamente ou economicamente viável, mas boa sorte ¯_(ツ)_/¯

3 curtidas

Recomendo lua ela cumpre:

Lua tem um ciclo de desenvolvimento ultra estável, o que significa que a linguagem não quebra, e a sintaxe consequentemente não muda
só é incrementada por ser escrita em ANSI C você poderá compilar a linguagem para qualquer processador binário do futuro (não garanto computadores quânticos kkkk)

Lua é absurdamente rápida leve e performatica você pode obter uma performance próxima a de uma linguagem compiladada se gerar um bytecode

Lua também permite isso, não tão seamless mas você pode programar em lua online por exemplo

1 curtida

Progamo em Python,Sh,C++ dos que mais recomendo é Sh por que é super leve e tem o dialog ,
Me interessei pelo seu projeto se quiser ajuda para codar , porque nao criamos um server no discord?

Agradeço a todos pela atenção. Vou avaliar as sugestões e o que me agrada. Muito obrigado.


Sempre coloco meus trabalhos em licenças livres (como a Creative Commons), você pode ter certeza que usarei uma licença como GPL ou MIT.


Esse seria o shell script? AInda estou pesquisando, mas é possível criar um código completamente multiplataforma com ele, isto é, o mesmíssimo código pode ser compilado/interpretado sem alterações no Linux, Windows e MacOS?


Já dei uma estudada numas linguagens de programação antes, mas nunca fui a fundo. Vou dar uma (re)estudada na linguagem que eu escolher primeiro, depois farei uma versão alfa e então trarei aqui pra vocês verem. Me lembrarei de marcá-los no tópico.

1 curtida

Sim. Shell script roda em macOS e Linux. Se você embutir/instruir para instalar o WSL, Cygwin ou MinGW no download, dá pra rodar no Windows.

Só uma ressalva: alguns comandos importantes do shell script (como sed e grep) tem um comportamento levemente diferente no BSD/macOS em relação ao GNU/Linux. Exemplo.

Para garantir que não vai haver diferenças, é importante que você teste o jogo numa máquina virtual de FreeBSD (os resultados de lá vão ser os mesmos do macOS) ou arrume um jeito de embutir uma única versão desses comandos no jogo.

1 curtida

Basicamente sim, mas há particulares de cada sistema que devem ser tratadas especialmente em cada um deles (como acesso a discos e diretórios de sistema, por exemplo). Porém acho que para um RPG em texto isso não será problema. As linguagens de shell scripting são poderosas pois podem invocar qualquer outro programa no computador e trabalhar as saídas desse programa, então os programas que forem usados devem estar disponíveis nos sistemas operacionais.

Por exemplo: Se você quer usar aleatoriedade no seu programa para saber se o golpe foi defendido ou não. Você decide então usar o comando shuf . Quando o usuário Windows for usar o RPG, esse comando deve estar disponível.

As alternativas para windows geralmente fornecem o ecossistema básico de programas (como o cygwin ou wsl), mas se você utilizar algum programa específico precisará fornecê-lo com o jogo.

2 curtidas

Meu conselho: vai de JAVA.

Java é uma linguagem extremamente tipada, estável e multiplataforma. Acredito que irá atender a todos os requisitos.

Java também é a linguagem mais bem documentada de toda a internet, pra você que ta aprendendo já é um ponto a mais. Tem como fazer tudo com Java meu irmão, vai na fé, boa sorte no teu projeto.

2 curtidas

Muito obrigado pelas respostas.

1 curtida