Pergunta

Quando vejo Lua, a única coisa que eu já li é "ótimo para a incorporação", "fast", "leve" e mais frequentemente do que qualquer outra coisa: "World of Warcraft" ou em suma "WoW"

Por que é limitado a incorporar a coisa toda em outro aplicativo? Por que não escrever scripts de propósito geral como você faz com Python ou Perl?

Lua parece estar indo muito bem em aspectos como a velocidade e memória-uso (A linguagem afaik scripting mais rápido) então por que é que eu nunca ver Lua sendo usado como um "script-language Desktop" para automatizar tarefas? Por exemplo:

  • Mudar o nome de um monte de arquivos
  • Baixe alguns arquivos a partir da web
  • Webscraping

É a falta da biblioteca padrão?

Foi útil?

Solução

Apenas porque é "comercializado" (em algum sentido geral) como uma linguagem de propósito especial para os motores de script incorporado, não significa que ele é limitado a isso. Na verdade, WoW provavelmente poderia muito bem ter escolhido Python como sua linguagem de script incorporado.

Outras dicas

Lua é uma linguagem fresca, leve e extremamente rápido!

Mas a questão é: É desempenho tão importante para aqueles tarefas que você mencionou?

  • Mudar o nome de um monte de arquivos
  • Baixe alguns arquivos a partir da web
  • Webscraping

Você escreve esses programas uma vez, e executá-los uma vez, também talvez. Por que você se preocupa com o desempenho tanto para um programa run-uma vez?

Por exemplo:

  1. Custo 3 horas para escrever um programa C / C ++, para lidar com dados uma vez, o programa terá uma hora para ser executado.
  2. Custo de 30 minutos para escrever um programa Python para identificador dados uma vez, o programa terá 10 horas para ser executado.

Se você escolher a primeira, você economiza o tempo para executar o programa, mas você custar seu tempo para desenvolver o programa.

Por outro lado, se você escolher a segunda, você perder tempo para correr o programa, mas você pode fazer outras coisas quando o programa é corrida. Que tal jogar World of Warcraft, monstros matar com o bruxo? Coma minha D.O.T ! : P

É isso aí! Embora Lua não é tão difícil de escrever, tudo sobre Lua é projetado para ser efficient.And que é mais, há pequenos módulos para Lua, mas há tantos módulos para Python. Você não quer para a porta de uma biblioteca C para Lua apenas para uma-vez execução do programa, não é? Em vez disso, escolha Python e usar aqueles módulo para alcançar sua tarefa facilmente pode ser uma idéia melhor.

FYI: Na verdade, eu tentei usar Lua fazer webscraping, mas, finalmente, percebi que não tem que se importa tanto com desempenho de linguagem. O gargalo de webscraping é não sobre o desempenho da linguagem . O gargalo está no rede de I / O, HTML análise e multitarefa. Tudo o que tenho a fazer é certificar-se o programa funciona e encontrar o gargalo. Finalmente, eu escolhi Python em vez de Lua. Há tanta muitos excelentes módulos Python; Eu não tenho nenhuma razão para construir o meu próprio.

De acordo com a minha experiência sobre webscraping, eu escolhi Torcido para a rede de I / O e lxml para html parsing como o backend do meu programa webscraping. Eu escrevi um artigo para uma introdução a esta tecnologia.

a melhor opção para os dados de agarrar a partir de sites: Python + trançado + lxml

Hope isso é útil.

Lua tem menos bibliotecas do que Python. Mas não se esqueça de ter um olhar para LuaForge . Ele tem um monte de libs interessantes, como LuaCURL , wxLua ou getopt .

Em seguida, visite LuaRocks , o sistema de gerenciamento de pacotes para Lua. Com ele, você pode pesquisar e instalar mais maduro módulos Lua com dependências. Ela se sente como RubyGems ou aptidão .

O site lua-users.org tem um monte de recursos interessantes também, como tutoriais ou o Lua Wiki .

O que eu gosto sobre Lua não é a sua velocidade, é o mínimo linguagem núcleo, flexibilidade e extensibilidade.

Dito isso, eu provavelmente iria usar Python para as tarefas que você mentionned por causa da grande comunidade fazendo essas coisas em Python.

É provavelmente porque Lua foi concebido como uma linguagem de script e extensão. No site oficial é descrito como um poderoso, rápido, leve, linguagem de script embutido. Não há nada que você parar de escrever programas de uso geral para ele (se bem me lembro ele vem com um intérprete e compilador), mas os projetistas da linguagem pretendia que fosse usado principalmente como um idioma incorporado (daí ser leve e todos)

Esta é uma questão sociológica, e não uma questão de programação.

Eu uso Lua para execução de scripts de propósito geral quase que exclusivamente. Mas eu tinha que escrever algumas centenas de linhas de código para que Lua iria jogar melhor com o shell. Isto incluiu truques como

  • Citando uma corda por isso é visto como uma palavra pelo shell
  • Escrevendo uma função para capturar a saída de um comando como em $ shell (comando)
  • Escrevendo uma função para rastrear o sistema de arquivos usando a biblioteca POSIX Lua e expandir os padrões de shell englobamento

(Para aqueles que possam estar interessados, eu deixei o código na minha . Lua caixa drop , que também contém algumas outras coisas O material interessante é provavelmente em osutil em os.quote, os.runf, os.capture, e talvez os.execve O englobamento está em posixutil.lua ambos uso Luiz Henrique de Figueiredo de Lua Posix biblioteca .)

Para mim, o esforço extra vale a pena, porque eu posso lidar com sintaxe simples e estruturas de dados grandes. Para outros, uma conexão mais direta com o shell pode ser preferido.

Definitivamente uma falta de bibliotecas padrão. Também é menos conhecido do que Python, Perl ou Ruby.

Tem havido um esforço recente para criar um incluiu a instalação baterias para Lua no Windows. O resultado pode ser encontrada no Lua para o projeto do Windows em LuaForge. Ele inclui o intérprete e uma grande coleção de módulos extras permitindo que scripts e aplicativos úteis para ser escrito e usado fora da caixa.

Eu sei que várias distribuições Linux estão incluindo Lua e alguns módulos agora, e mais para vir.

Há também um par de bibliotecas de módulos propostas em discussão na lista de discussão, mas a comunidade ainda não tenha resolvido em um como o mecanismo de "oficial".

Eu uso Lua tanto como uma linguagem de script e, como o ciclo "principal" da minha aplicação típica, suportado por um ou mais DLLs que contêm código que foi melhor implementados em C ou bibliotecas existentes acondicionamento ou funções da API que são necessários por um determinado projeto. Usado com um kit de ferramentas GUI, como IUP ou (ligação a Lua para wxWindows) wxLua , Lua faz escrever pequeno para aplicações GUI de médio porte bastante agradável.

Eu acho que a resposta sobre ele ser uma coisa "marketing" é provavelmente correta, juntamente com a falta de um grande conjunto de bibliotecas para escolher. Gostaria de salientar um outro caso de isso: Ruby. Ruby está destinado a ser uma linguagem de propósito geral scripting. O problema é que desde que Ruby on Rails tem aumentado a ser tão popular, está se tornando difícil encontrar algo que não está relacionado com Rails. Temo Lua vai sofrer isso também, ser popular por causa de algumas coisas importantes a usá-lo, mas nunca capaz de se libertar desse estigma.

Falta de biblioteca padrão. Período. Mesmo listando todos os arquivos em um diretório exigem um não-padrão módulo .

Há boas razões para isso (mantendo a portabilidade ANSI estrita, não necessitando de POSIX), mas o resultado é que, para a programação geral, eu prefiro Python.

Lua é usado na luatex , uma extensão de TeX, como língua incorporado, e ganhou popularidade rapidamente entre os desenvolvedores TeX por causa disso. Ele é usado como uma linguagem de script para alguns utilitários no TeX distribuição ao vivo, seja só porque agora há um binário luatex, disponível em todas as plataformas, que também pode ser usado como um interpretador Lua (com alguns módulos vitais adicionados - slnunicode, luafilesystem, etc.) isso é muito importante para as instalações do Windows, que contavam com ferramentas adicionais de script Unix anteriores (ActivePerl, etc.) A linguagem macro ConTeXt utiliza scripts Lua amplamente hoje em dia.

Isso é reconhecidamente um campo muito especial :-) Mas completamente alheios a jogos!

Para Lua para ser fácil de incorporá-lo tem que ter algumas dependências e ser pequeno. Isso faz com que seja pouco adequada como uma linguagem de propósito geral scripting. Porque usá-lo como língua geral roteiro propósito exigiria um monte de bibliotecas padrão. Mas se Lua tinha um monte de bibliotecas padrão que seria mais difícil de incorporar (devido a dependências e consumo de memória.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top