Por que Python e não Lua? [fechadas]


45

Por que o Python foi apoiado pelo Google e se tornou tão rapidamente popular e Lua não?

Você sabe por que Lua ficou em segundo plano?


3
Lua gosta de fingir que matrizes e dicionários são a mesma coisa e possui um getter de comprimento que pode não apenas retornar resultados errados, mas resultados não determinísticos. Não sei quais são as razões do Google, mas isso é motivo suficiente para eu não gostar.
precisa saber é o seguinte

4
Para mim, o Python é mais fácil de codificar, mais agradável e possui mais recursos. Alguns exemplos do topo da minha cabeça: os geradores são cidadãos de primeira classe em Python ( yield), e Lua exige uma configuração mais complicada. A indexação de lista do Python [::]é uma enorme vantagem. Python tem classes e herança legítimas. Lua é mais rápido, sim, mas eu realmente gosto de escrever código Go para uso em Python quando a velocidade é importante.
19716 Frank Bryce

Eu amo o LuaJIT, mas uma grande parte do meu amor por ele é a facilidade de incorporação, velocidade e pegada pequenina. Se eu tivesse que programar algo o dia inteiro, eu poderia me inclinar mais para o Python.

@FrankBryce você conseguiu isso de trás para frente. Os geradores do Python são um subconjunto das corotinas de Lua. Veja inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Respostas:


37

Eu realmente amo Lua, mas ele tem algumas limitações reais e, como outros mencionaram, derivam principalmente das origens de Lua como uma linguagem de arquivo de configuração e, posteriormente, como uma linguagem de script incorporada.

Por causa do objetivo de manter Lua pequena, existe apenas uma biblioteca padrão muito pequena , que possui apenas a funcionalidade básica.

Isso levou a uma cultura infeliz nos círculos de Lua, onde os desenvolvedores de Lua gostam de reimplementar a funcionalidade oferecida pelas próprias bibliotecas padrão de muitas outras linguagens, em vez de trabalharem coletivamente em um conjunto de bibliotecas principais universalmente aceito.

Coisas como multiencadeamento, expressões regulares, métodos de acesso a arquivos independentes de plataforma e até operações de bits (até 5.2) estão todas "não incluídas", pois tornariam Lua muito maior e mais lenta. Claro que você pode fazer com que as bibliotecas façam essas coisas - mas elas têm mantenedores independentes e níveis de qualidade.

Não me interpretem mal. Eu amo Lua pelas mesmas razões que acabei de listar.


54

Simples: Lua tem mais objetivos de "nicho" que Python .

Pensa-se que o Python seja útil como uma linguagem de programação geral. Portanto, é útil em muitos casos. Ele abrange muitos tipos conhecidos de aplicativos, mas não entra diretamente em concorrência com outros idiomas que podem ser direcionados a restrições específicas, mas a simplicidade de sua sintaxe.

Lua é totalmente direcionado para ser uma linguagem de script incorporada. Seu objetivo inicial, mesmo que seja usado em outros contextos atualmente, como construir sistemas; deve ser incorporado ao software e permitir fácil implementação de funções e estruturas de script específicas do domínio. É tão minimalista que pode até ser usado em hardware realmente restrito (usei Lua no NintendoDS), é leve, fácil de usar, RÁPIDO e é uma linguagem tão minimalista, mas pensada para ser estendida a muitos dialetos (importando paradigmas como orientação a objetos) estão disponíveis. É tão portátil (ANSI C) que você pode usá-lo em qualquer hardware incorporado com uma quantidade decente de memória para software incorporado moderno (se bem me lembro, o lua vm padrão é de cerca de 400ko e quase nunca cresce se você não criar objetos em loop ...)

Portanto, Lua é usado inicialmente no contexto em que você precisa incorporar uma linguagem de script ao seu aplicativo .

O Python é usado para ... quase qualquer coisa que não exija uma linguagem de mais nicho (você pode criar jogos de alto desempenho usando o Python, mas algum tipo de jogo com desempenho alto exige realmente evitar esse sistema).

Simplesmente o Python é usado em mais contextos que o Lua. Até onde eu sei, além do Android (que fornece suporte a Java e idioma nativo), o Google não é uma empresa de software embarcada, portanto não precisa realmente de Lua em todos os lugares, enquanto o Python é útil para tudo o que faz (web, sistema de compilação , comunicação, web e web).

O Python também é usado em muitos jogos para scripts incorporados, mas é pesado e mais lento que Lua. A sintaxe do Python o torna mais apropriado para grandes jogos que dependem muito de informações com script em sua estrutura de jogos (não tenho certeza se sou claro lá, mas acho que se você precisar de uma "linguagem completa real" para scripts, a incorporação de Python pode ser uma boa ideia, se o desempenho for bom para você). O Python não foi feito para ser incorporado, então tudo bem. Um equivalente do Python que visa ser incorporado no C ++ é o Falcon.

Para uma comparação extrema, algumas linguagens que visam a incorporação e tentam ter uma sintaxe mais completa que a Lua minimalista, e competem no desempenho: ChaiScript, AngelScript, Io ...

A propósito, eu já vi novos sistemas de compilação, como PreMake ou Bam, usar Lua como a linguagem dos arquivos de compilação. A idéia é que seja leve e bem conhecida dos desenvolvedores de jogos (criar sistemas no desenvolvimento de jogos é um grande problema). Talvez esse seja outro domínio em que Lua seja mais apreciada. É certamente mais amigável que a sintaxe do CMake ....


4
Eu acho que o alvo de Lua como uma linguagem incorporada é provavelmente um dos principais contribuintes. Mesmo assim, acredito que a "popularidade" de uma linguagem tenha menos a ver com o design ou a capacidade real da linguagem em si e mais uma questão de "hora certa, lugar certo" (veja PHP, por exemplo).
Dean Harding

Bem, acho que um idioma direcionado a um objetivo específico naturalmente atrai usuários específicos, tornando seu público mais restritivo do que qualquer idioma de uso geral. Ter uma audiência menor do que os idiomas de uso geral afeta diretamente o número de pessoas que jamais falarão sobre isso. Fora isso, alvos específicos significam recursos específicos. Portanto, não é bom para todas as situações. Aqui, por exemplo, lua sozinha não é uma linguagem de programação de gui muito boa. Requer algumas adições para ser realmente útil.
Klaim

Dito isto, concordo plenamente: se o php não fosse usado para um campo tão amplamente usado como o desenvolvimento de sites, não estaria em todo lugar agora.
Klaim

Lua é usada principalmente como linguagem incorporada, mas é uma linguagem de programação de uso geral, por exemplo, você pode criar um script CGI com mod_lua. Eu poderia mudar minha pergunta para por que lua ficou como um idioma incorporado?
21711 Benjamin

Porque é sua origem. Você pode usá-lo como uma linguagem de uso geral sim, como também pode usar php para uso geral. Você também pode usar o Perl para fazer o mesmo. Mas suas origens fazem suas orientações. Novamente, seu objetivo inicial os torna menos úteis que outros idiomas para idiomas de uso geral. Lua não possui uma linguagem de recursos para ser fácil de usar com o sistema GUI, por exemplo, como orientação a objetos (que você pode adicionar facilmente, mas não é nativo). Veja a diferença entre um idioma criado originalmente para uma finalidade específica e um geral. Todos eles têm restrições de qualquer maneira.
Klaim

4

Você pode fazer tudo com Lua, ele é criado como uma linguagem de script para estender programas? Sim, mas está longe de ser limitado a ele, há muitas bibliotecas para Lua e, com as ferramentas certas (FFI ou tolua de LuaJIT), você pode até usar uma biblioteca C / C ++ nele. A razão pela qual o Python é mais usado no meu ponto de vista é apenas a idade, o Python é usado como primeira língua em muitas faculdades e escolas, há mais pessoas que conhecem Python do que Lua e é muito mais fácil encontrar uma boa biblioteca para Python. do que para Lua, porque a linguagem é mais madura. Além disso, eu não sei muito sobre Python, mas, tanto quanto eu sei, é fácil esconder seu código do usuário final, o que em Lua, não é tão fácil assim, estou certo?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.