Python vs lua

É fácil obter a diferença de sintaxe. Além disso, uma olhada no lua forge vs python PI fornece um bom entendimento da cobertura da biblioteca.

Muitos usam Lua como linguagem de script ou analisador de configuração (em vez de XML ou INI ou JSON) e é uma pena parar nesse nível.

A maior diferença é que Lua possui corotinas versus threads do Python.

O Python teve muitas tentativas para acertar esse conceito e sempre parece um pouco desajeitado. Por exemplo, Greenlet lib do Python e Gevent lib usando-o ou

Python sem pilha - Wikipedia

.

Uma boa maneira de descrever Lua é como nodejs sem retorno de chamada (

Inferno de retorno de chamada

) Se você usou a biblioteca distorcida do Python, conhece a dor (distorcida :).

Agora, existem muitos medicamentos javascript para "corrigir" o inferno de retorno de chamada e nenhum deles funciona. As mais recentes palavras-chave assíncronas e aguardam javascript corrigem apenas metade do problema de retorno de chamada-inferno.

Lua resolve isso de forma elegante usando corotinas.

O problema é que você está perdendo a camada de E / S em Lua que o nodejs possui fora da caixa (o uvlib).

Portanto, se você está procurando uma programação fácil, fique com o python.

Mas se você tiver algum problema importante a resolver e deseja investir muito do seu tempo,

Lua

é perfeito - para cortar sua própria solução específica.

Chopper (motocicleta) - Wikipedia

são a escolha de poucos selecionados;)

Aqui é lua

Isso é LuaJit

E isso é Python

O Python realmente evoluiu de uma 'linguagem de script' para uma 'linguagem de ferramentas': a riqueza de excelentes bibliotecas gratuitas no mundo Python faz com que seja uma escolha muito forte para muitas aplicações que envolvem muitas partes díspares conversando entre si: leitura arquivos xml e transmitindo-os para um banco de dados ou raspando páginas da Web em busca de dados e criando gráficos, por exemplo.

Lua ainda é principalmente uma linguagem de script: é leve, rápido e simples, uma excelente opção como linguagem incorporada em uma ferramenta ou mecanismo de jogo programável, mas não é tão útil para tarefas que exigem interface com vários tipos de dados ou muitas aplicações diferentes e ambientes de uma só vez.

Em geral, eu não faria um mecanismo de script de jogos em Python ou um serviço da Web em Lua. Ambos são possíveis, mas também não é um ótimo uso dos respectivos kits de ferramentas.

Lua é uma linguagem mais fácil que Python. É mais fácil aprender e possui tokens menos reservados (21) para Python (33) (Lua precisa apenas de cerca de 60% das palavras-chave para fazer o mesmo e mais). Para isso, vem uma estrutura de biblioteca enorme, complexa e complicada, sozinha, as muitas classes e tipos diferentes são tratados de maneira completamente diferente.

Temos contagens não intuitivas em Python, como

para i no intervalo (1,11) faça:

para contar de 1 a 10, temos esse terrível problema de "espaços em branco são códigos", não sei quem teve essa péssima idéia, isso está apenas gritando por confusão e eu não gosto disso como uma idéia idiota.

Não que isso seja teoricamente uma idéia idiota, eles já tiveram suas brigas ideológicas se o TAB devesse ser permitido e quanto espaço deveria ter, enquanto a base da biblioteca é feita de uma maneira ou de outra que você absolutamente não pode transferir nenhum código em qualquer outro lugar.

Tudo é total "verkopft" e a experiência de programação é simplesmente terrível. Quero dizer, eu estava no Python, trabalhei profissionalmente, ganhei dinheiro com os produtos que entreguei, mas desde que mudei para Lua, isso é muito melhor.

Na verdade, os produtos podem ser entregues como pacotes, o código é executado 30 vezes a velocidade sem consumir toda a RAM e CPU na máquina de destino e gerando muitos erros de incompatibilidade quando eu apenas quero vincular algumas bibliotecas.

Tudo isso não está acontecendo com Lua.

As soluções para os algoritmos ficam mais fáceis, preciso de menos código para fazer as mesmas coisas em Lua do que em Python (Python já é bom nisso, mas Lua está em um nível épico).

Já há pelo menos tudo o que eu precisava nas bibliotecas e o que dizem algumas das postagens mais antigas aqui, que você não pode executar coleções e tudo mais, que não há biblioteca regex, está tudo errado.

Você tem tudo e é melhor do que em Python. Por que melhor? Está super rápido.

Luajit é a linguagem de alto nível mais rápida que existe e, com todos os meus pequenos benchmarks sem importância, eu não consigo obter C em si. Por quê? Como muitas das bibliotecas Lua são realmente implementadas em C, algumas em Lua, mas muitas em C. C é altamente portátil e, de fato, a melhor linguagem portátil que eu conheço.

Você tem FFI e, com isso, uma interface direta no sistema, o que facilita a chamada de qualquer coisa, você nem precisa da maioria das bibliotecas de cola e ligação necessárias para trabalhar com o Python.

ffi local = require ("ffi")ffi.cdef [[int printf (const char * fmt, ...);]]ffi.C.printf ("Olá% s! \ n", "usuário")

Isso é realmente o mais fácil possível.

Se houver algo que Lua não possa fazer, existe o pacote Lunatic-Python, que é uma ponte entre os dois e você pode capturá-lo do Python e voltar depois para a linguagem melhor.

Para incluir Lua como uma linguagem incorporada em C são apenas quatro linhas de código, a necessidade de memória para todo o ambiente de tempo de execução é de aproximadamente 120kb de código compartilhado na memória.

Essa coisa é pequena, poderosa, flexível.

E não é apenas uma “Linguagem de Script”, essa coisa é uma linguagem de programação universal completa que é pelo menos tão poderosa quanto o Python, mas eu lhe digo, eu posso fazer coisas em Lua, que o Python nunca fará.

Lua é da melhor maneira possível o retorno do BASIC, o retorno para trazer o poder da programação de volta ao homem simples na rua. Democratizar o código e com esse poder. Permitir a alfabetização moderna a todos, do filho ao avô.

Eu não tenho idéia do motivo pelo qual o Python ficou tão grande. Isso não é uma comparação e a linguagem Python nunca deveria ter acontecido. A pergunta sobre qual desses dois idiomas é o mais fácil é muito, muito fácil de responder:

Lua

E não é só isso. Lua “only” possui um tipo de dados abstrato, a tabela, que na verdade é uma mistura de array, dicionário e conjunto, dependendo de como você o está usando. As tabelas são a maneira natural pela qual a CPU deseja dados e qual é a estrutura mais rápida que a CPU pode processar. Também é muito fácil aprender e depois que você entendeu uma coisa, você entendeu Lua e como lidar com isso.

Você pode fazer tudo com essas tabelas Lua porque elas são geniais. Você não precisa aprender conceitos abstratos como programação orientada a objetos; basta fazer o que quiser. Mas Lua permite implementar seus módulos assim.

Você tem todas as formas possíveis de escrever programas, imperativos, funcionais, orientados a objetos, predicativos. Mas Lua não o força a fazer isso. Isso permite que você faça isso.

Porque, como toda ferramenta, algumas são boas e necessárias algumas vezes, outras são idiotas às vezes. Não ser capaz de se livrar de um conceito por causa de dogmas é uma coisa ruim e limitar a aplicação dessa linguagem a problemas de software.

Lua nunca te limita. Você pode dizer a Lua para limitar você, mas você precisa dizer. E, principalmente, isso não é sensato de qualquer maneira. Lua é muito fácil de atravessar fronteiras para C e de C para Lua. Você tem acesso total de C a tudo o que está acontecendo no mecanismo Lua.

Portanto, você pode praticamente transpilar qualquer módulo Lua para C, compilá-lo como uma biblioteca de sistema compartilhável e reutilizá-lo.

Há uma disputa sobre os recursos das duas linguagens e Lua ganhou esse argumento de longe contra o Python:

Lua Versus Python

Mas de qualquer maneira.

Contador de palavras exclusivo para um arquivo em Python:

#! / usr / bin / env pypyimportação resys de importaçãor = {}para linha em sys.stdin: para w em re.findall ('\ w +', line.lower ()): r [w] = r [w] + 1 se w em r else 1soma = 0words = 0para k, v em ordenado (r.items (), key = lambda x: x [1]): print (k + ':' + str (v)) soma + = v palavras + = 1print ("Soma:" + str (soma) + "Palavras:" + str (palavras))

Em Lua, enquanto em Lua não precisamos de nenhuma biblioteca externa, mas criamos a função allword (). Certamente isso pode ser feito pelas bibliotecas, existem coleções e isso, mas eu queria mostrar da maneira pura. É bastante fácil e compreensível, mas um pouco mais neste exemplo. Você pode chamar algumas das soluções em Python de elegantes, mas eu as acho apenas pouco intuitivas e um pouco concisas. A função lambda não tem o poder da solução Lua funcional e eu talvez devesse ter escolhido uma das bibliotecas. Mas ei. Não há necessidade disso em Lua, na verdade não. Ainda não. Mas acho a coisa allwords () bastante fácil e, se você ignorar essa parte, o programa é muito melhor. Não precisei procurar nada disso.

É 5 vezes mais rápido que o PyPy, no entanto. Eu estava ligando com

./wordcount.lua

#! / usr / bin / env luajitfunção allwords () linha local = io.read () pos local = 1 função de retorno () enquanto a linha local s, e = string.find (linha, "% w +", pos) se s então pos = e + 1 retornar string.sub (linha, s, e) outro line = io.read () pos = 1 fim fim retorno nulo fimfimr = {}por palavra em allwords () palavra = palavra: inferior () se não r [palavra] então r [palavra] = 1 outro r [palavra] = r [palavra] +1 fimfimlist = {}para k, v em pares (r) da lista [# list + 1] = k endtable.sort (lista, função (a, b) retorna r [a]palavras = 0 soma = 0para k, v em ipairs (lista) faça palavras = palavras + 1 soma = soma + r [v] impressão (v, r [v]) fimprint ("Palavras", palavras, "Soma", soma)

Talvez você também deva ir para

Código Rosetta

e veja vários algoritmos e como eles são resolvidos no Python e no Lua lá. A maioria das soluções Lua é mais fácil de ler e tem um código mais curto.

Por exemplo, o problema das moedas (ingênuo) levou 6,52 segundos em PyPy e 0,2 segundos em Luajit, enquanto eu aumentava o número em dois graus de magnitude, para obter um valor mensurável. Isso é 32 vezes a velocidade de Lua…

Mas você pode ver os programas lá e compará-los. É muito melhor que o meu exemplo (mas eu gostava de me apresentar um): o código é quase idêntico. Apenas Lua afirma que é mais intuitivo, mais fácil de ler e mais compreensível.

Então: acho que Lua é a linguagem mais simples. Eles têm algumas coisas em comum, mas se você não gosta de espaços em branco, caracteres que você nem consegue ver como parte ativa do código, se preferir algumas funções reais em uma programação funcional em vez de apenas um cálculo lambda, se você prefira ver loops contando até 10 em vez de 11 se você quiser contar até 10 e se você preferir que os algoritmos sejam escritos em inglês próximo ao invés de r [w] + 1 se w em r else 1, provavelmente você preferirá Lua.

Linguagem fácil, problemas difíceis.

Não há nada errado em manter um idioma fácil. Eu realmente coço a cabeça por que tantos fabricantes de idiomas pensam diferente. Você sabe, se algo parece fácil, mas fazendo coisas difíceis, as pessoas tendem a gritar: "Isso é genial!"

E é assim que eu vejo isso também. É isso que queremos, o que precisamos.

A HLL está aqui, o único sentido disso é fazer as coisas mais rápido do que com uma linguagem de compilação, mais flexível, sem se preocupar com as dificuldades subjacentes. Contanto que nos safamos disso. A HLL está lá, para diminuir o limiar das pessoas que desejam programar, diminuir o nível educacional, levá-las a isso cedo e facilmente e tornar essa experiência divertida, desafiadora e recompensadora.

Não há outra coisa que um ser humano possa fazer que seja mais utilizado pela humanidade, que salve mais vidas, se repita repetidamente, código, que é conhecimento vivo, que conhecimento multiplicador e automatizado. Não é sem razão que o motor que impulsiona ou estrangula nossa economia e quanto mais pessoas entram na codificação, melhor o mundo que adquirimos.

Codificar como arte é algo que apenas uma fração muito pequena de pessoas estará fazendo. Quantas pessoas você conhece quem são realmente bons músicos e quem faz isso a vida inteira e não param quando estão fora da piscina de fornicação? Quando eles têm trinta anos ou mais?

Quantos continuam? Muito mais do que eu conheço programadores, mas está no mesmo nível. Podemos esquecer que a utopia de todo mundo será um artista. Artistas são fodidamente raros. E também podemos esquecer de ser um mundo cheio de programadores. Programadores são ainda mais raros. Conheço mais pessoas que escreveram um maldito livro do que pessoas que são codificadores e estou vivendo em um ambiente que peneira codificadores, que é rico em codificadores, porque eu mesmo sou um.

Python está olhando à primeira vista como uma linguagem fácil, mas não é. É uma linguagem de hackers altamente concisa para programadores qualificados e experientes, que são bem-educados em conceitos de programação mais altos, complexos e difíceis de entender e não leva da natureza a código bem legível e sustentável.

Existem linguagens piores por aí, como APL ou Malbolge ou Java. Mas existem outros mais fáceis também.

Lua seria um deles. Não que você não possa fazer coisas complexas e complicadas em Lua, você pode. Facilmente. E você também pode escrever códigos difíceis de entender, se não tomar cuidado. Mas, para uma mente tranquila, com baixa escolaridade, para uma criança ou apenas Joe comum, eu recomendaria Lua dez vezes sobre Python.

Ele terá mais sucesso, a linguagem retribui mais, é revolucionário, pois na época era o conceito do BASIC. Poder para as pessoas. E não quero dizer isso de uma maneira socialista, quero dizer isso de uma maneira justa e democrática. Democracia, isso significa que todo mundo tem a chance de ser um programador. Não que isso esteja em todos ou que teremos um exército real deles. Nós nunca iremos.

Mas toda criança aprende a tocar o gravador na escola ou em algum outro instrumento. E traz alguns ruídos, e algumas dessas coisas são realmente agradáveis ​​e bem feitas. Todo mundo tem o cérebro nele para se tornar um programador, mas apenas muito, muito poucos têm coração e vontade e aceitam o trabalho duro e a dedicação para aprender a tocar violino ou algo assim.

Mas todo mundo que tem deve ter a chance de aprender e deve ser uma primeira vez gratificante. Um tempo que sai dessa massa da humanidade, os poucos que realmente não apenas têm o potencial, mas também o desejo de fazê-lo, de aprendê-lo.

E se fizermos isso, devemos fornecer a eles um idioma que eles não precisam abandonar depois de um ano ou dois, mas algo que tem seu lugar, é um lugar real na infraestrutura. Eu odeio a linguagem da escola e considero-os um desperdício.

Um desperdício de potencial de programação, porque quantas pessoas eu sei que deixaram de ser programadores depois que nossos professores destruíram a vontade neles de se tornar um, torturando-os com abominações de linguagens altamente ideológicas, não têm um pouco de praticamente neles e são esquecidos após o término do curso?

Muitos. E não entendo por que os professores se orgulham disso. Haskell, só para culpar um. Pascal, para culpar um ao outro. Lisp, que não tem mais o direito de sobreviver da minha posição. E muito mais idiomas que corroem o pequeno potencial que temos.

Temos que ter cuidado com o pequeno potencial dos programadores. Eles são especiais. Nós precisamos deles. Temos que nutri-los e mantê-los. Em todos os lugares há uma escassez de programadores. Em todo lugar neste mundo.

Por quê?

Realmente, me diga, por quê? É tão difícil escrever um “Olá Mundo”? Não estamos ensinando todas as crianças a aprender programação na escola? Por que eu sou o único adulto da minha classe de ginásio, o único fazendo ainda duas coisas em sua vida. Primeiro tocando música. Segundo código fazendo. Éramos cerca de cem crianças na minha turma de 85. Um programador e de todas as crianças que estávamos no ensino fundamental, das trinta que estávamos na sala de aula, dois de nós fomos para o ginásio. E eu cresci em um ambiente muito especial, nós éramos os hackers do mundo na época.

Literalmente na minha classe estavam sentados os garotos que estavam fazendo o hack da NASA diretamente. E eu estava entre essas pessoas. Amigos deles. Eu não estava nessas máquinas Castor e Pollux, mas fiz coisas semelhantes nessa idade. Coisas que não eram proibidas naquele tempo, que não eram contra a lei.

Sou um dos 3000, talvez 10000, talvez 30000. Mas sou raro. Eu nunca me senti sendo "elite", mas que não há ninguém por perto fazendo remotamente o que eu faço e não conhecendo quem é. Isso me dá a impressão de que sou raro e com todos os outros codificadores. Nós precisamos mais deles. Mais do que precisamos de pessoas escrevendo livros e compartilhando conhecimento. Compartilhar conhecimento de maneira legível por máquina é um passo em frente ao escrever um livro. É uma interseção de interseção de interseção de interseção de talentos. É especial. Precisamos de mais ou deles, mais que estejam dispostos a compartilhar seus conhecimentos dessa maneira; livre.

Mas não sei se alguma das classes paralelas trouxe alguma coisa. Eu conhecia todos os programadores possíveis no próximo ano sob nós e no próximo e no próximo e no próximo, porque eu tinha amigos lá ou meu irmão mais novo. E de todas essas pessoas, eu sou o único que resta no código. E cada uma das pessoas no Gymnasium é 2 de 30.

E temos que fazer de tudo para tirar mais proveito deles. Código, isso é futuro.

Esta última parte aborda essa questão, mas a questão é importante, eu acho. "Qual idioma é mais fácil?" Eu acho que é melhor perguntar: "Qual idioma é mais divertido?", Porque isso trará as pessoas para o teclado.

Não é fácil, mas diversão e motivação. E aqui Lua é um vencedor claro.

Apenas faça alguns jogos, se for divertido para você. Jogar é a primeira unidade que temos. O segundo é o sexo. O terceiro é nutrição, segurança e assim por diante. O primeiro está tocando. Uma linguagem que é 30 vezes mais poderosa que o Python, mais fácil de escrever, dará um feedback mais positivo e é incorporada nos jogos, mas é uma ferramenta muito profissional, é disso que precisamos.

Peneirar o pequeno potencial que temos na humanidade. Esses talentos muito raros, mais raros que os artistas, mais escassos que os gênios. E somente eles podem codificar e manter isso. Na universidade, eles nos disseram que ciência da computação e engenharia de software eram apenas engenharia. Nada especial.

Errado! Protestei instantaneamente, porque pude ver que isso estava errado. Isso foi o mais errado possível. É mais que engenharia, é arte, muita arte nela e é o resultado de uma dedicação que ultrapassa a loucura, se você quer ser bom nisso. A maioria dos programadores experientes tem algumas peculiaridades de personalidade que eu conheço ou alguma condição mental. E eles não são assim, porque os computadores os tornaram assim. Eles são como Bobby Fischer, algo dentro os leva a essas máquinas como se ele fosse levado a esse jogo. Eles são como os gênios do Bletchley Park: uma espécie rara.

Algo muito difícil de encontrar e resolver, mais raro que o ouro. Mais difícil de produzir do que qualquer outra coisa e mais urgentemente necessária do que qualquer coisa neste mundo:

codificadores

Todo mundo tem o cérebro para se tornar um programador, como todo mundo tem os dedos para aprender a tocar violino. Mas quantos realmente acabam realmente fazendo isso? De todos aqueles com dedos que eu conheço. Vamos ver. Eu sou o único. De todas as pessoas. Pare. Eu ensinei meu amigo a tocar. OK. Isso conta. Ele é, a propósito, um dos outros codificadores que conheço. Ele aprendeu a tocar violino aos 45 anos. De todas as pessoas que eu pessoalmente conheço. Isso é coincidência? Eu disse não. Isso tem algo a ver um com o outro.

Eu sou dirigido. E precisamos encontrar essas pessoas motivadas. Você não pode fazê-los. Você pode peneirá-los como você pode peneirar ouro. E você os encontra, tornando-o divertido e fácil de fazer. Coloque-os em contato com o código. Torne isso fácil e divertido e não os afaste.

Portanto, precisamos de linguagens fáceis, linguagens que incentivem e injetem o espírito. E faça com que se sintam especiais. Nós realmente, realmente precisamos deles. Economicamente. Por fazer um mundo melhor. Funcionou para mim. Meu primeiro contato com uma linguagem de programação foi o BASIC.

Foi uma experiência maravilhosa. E isso me pegou e me tirou da areia. E precisamos mais dessa peneira positiva. Porque não podemos fazê-los. Não podemos fazer codificadores.