C se tornou uma linguagem padrão para jogos e software gráfico há muito tempo. E havia um motivo real: trabalhar com gráficos em tempo real e física requer alto desempenho. Processar geometria, gerenciar buffers, cálculos matriciais - tudo isso leva tempo.
Mas e quanto à lógica de alto nível? Mecânica do jogo, interface do usuário, gerenciamento de armazenamento, solicitações de rede? Estabilidade e segurança são muito mais exigidas lá do que velocidade.
Podemos implementar funções que exigem desempenho em uma linguagem compilada, como C , e chamá-las de um programa escrito em uma linguagem dinâmica, como Python.
Mas, hoje já temos bibliotecas bem documentadas e fáceis de usar para Python (pygame, pyopengl, pyassimp, pybullet, numpy), que são implementadas principalmente em C/C e fornecem funções para cálculos pesados, ou física/gráficos em particular. Talvez nunca enfrentemos a necessidade de implementar essas bibliotecas por conta própria.
É geralmente aceito que linguagens coletadas como lixo, como Java ou C#, são mais lentas que C e realmente não atendem aos requisitos para cálculos pesados. Isto naturalmente não é verdade.
C pode superar Java ou C# em desempenho em 20-30% em alguns casos especiais, mas quando se trata de abstrações de tempo de execução, como envio de função dinâmica, interação de linguagens, tarefas assíncronas, gerenciamento de texto ou coleções abstratas, Java e C# apresentam eficiência muito maior que C .
Além disso, podemos executar nossos programas Python no mesmo tempo de execução com Java ou C#, usando Jython ou IronPython. Ele traz muitos benefícios, como memória compartilhada com coleta de lixo, sistema de tipos e acesso fácil a bibliotecas C# ou Java imediatamente. Em Java são implementadas linguagens dinâmicas interessantes como Clojure e Groovy, que têm acesso completo à Java Class Library e compartilham os benefícios mencionados anteriormente.
Hoje os computadores pessoais são muito mais rápidos do que há 15-20 anos. Porém, a maioria dos programas ou jogos de desktop não funcionam tão rápido quanto o esperado (apesar de ainda serem implementados principalmente em C/C). Hoje precisamos de bons algoritmos e abordagens eficazes muito mais do que apenas velocidade de linguagem. Função com complexidade constante em Python é mais preferível do que função com complexidade linear em C. Pintar 100 árvores por 15 linhas de código Python é mais preferível do que pintar 500 árvores por 300 linhas do código C.
Não importa muito qual linguagem você usa, quando você não tem nenhum jogo feito, certo?
Fazer jogos em C é muito mais exigente e exaustivo, do que fazer o mesmo em Python ou Ruby. Quando você faria 1 jogo com C , você faria 10 jogos com Python. Quando você faria 5 jogos com Python, seriam 0 jogos com C .
Vamos nos preocupar com jogos e diversão, caso contrário, qual é o sentido?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3