Vale a pena aprender Lua?
Lua é uma linguagem divertida e robusta, com melhorias progressivas feitas a cada lançamento e uma base de desenvolvedores cada vez maior. Descubra todas as suas possibilidades.
Lua é uma linguagem de script usada para programação processual, programação funcional e até programação orientada a objetos. Ele usa uma sintaxe semelhante à C, mas é digitado dinamicamente, possui gerenciamento automático de memória e coleta de lixo e é executado interpretando bytecode com uma máquina virtual baseada em registro. Isso a torna uma ótima linguagem para iniciantes, mas também uma ferramenta poderosa para programadores experientes.
Lua foi um tanto eclipsada da visão pública por linguagens como Python e JavaScript, mas Lua tem diversas vantagens que a tornam popular em alguns dos principais projetos de software. Lua é facilmente incorporada em outras linguagens, o que significa que você pode incluir arquivos Lua na base de código de algo escrito (por exemplo) em Java e ele é executado como se fosse um código Java nativo. Parece mágica, mas é claro que existem projetos como o luaj trabalhando para tornar isso possível, e isso só é possível porque Lua foi projetada para isso. É em parte por causa dessa flexibilidade que você provavelmente encontrará Lua como a linguagem de script para videogames, aplicativos gráficos e muito mais.
Como qualquer coisa, leva tempo para ser aperfeiçoado, mas Lua é fácil (e divertida) de aprender. É uma linguagem consistente, amigável com mensagens de erro úteis e há muito suporte online. Pronto para começar?
Instalando Lua
No Linux, você pode instalar Lua usando o gerenciador de pacotes da sua distribuição. Por exemplo, no Fedora, CentOS, Mageia, OpenMandriva e distribuições semelhantes:
$ sudo dnf install lua
Em sistemas Debian e baseados em Debian:
$ sudo apt install lua
Para Mac, você pode usar MacPorts ou Homebrew.
$ sudo port install lua
Para Windows, instale Lua usando Chocolatey.
Para testar Lua em um interpretador interativo, digite lua
em um terminal.
Funções
Tal como acontece com muitas linguagens de programação, a sintaxe Lua geralmente envolve uma função ou palavra-chave integrada, seguida por um argumento. Por exemplo, a função print
exibe qualquer argumento que você fornecer a ela.
$ lua
Lua 5.4.2 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> print('hello')
hello
A biblioteca string
de Lua pode manipular palavras (chamadas de "strings" em programação). Por exemplo, para contar as letras em uma string, você usa a função len
do biblioteca de strings
:
> string.len('hello')
5
Variáveis
Uma variável permite criar um local especial na memória do seu computador para dados temporários. Você pode criar variáveis em Lua inventando um nome para sua variável e depois colocando alguns dados nela.
> foo = "hello world"
> print(foo)
hello world
> bar = 1+2
> print(bar)
3
Tabelas
Perdendo apenas para a popularidade das variáveis na programação está a popularidade dos arrays. A palavra "array" significa literalmente um arranjo, e isso é tudo que um array de programação é. É um arranjo específico de dados e, por existir um arranjo, um array tem a vantagem de ser estruturado. Um array é frequentemente usado para executar essencialmente o mesmo propósito que uma variável, exceto que um array pode impor uma ordem aos seus dados. Em Lua, um array é chamado de tabela
.
Criar uma tabela é como criar uma variável, exceto que você define seu conteúdo inicial com duas chaves ({}
):
> mytable = {}
Quando você adiciona dados a uma tabela, é muito parecido com criar uma variável, exceto que o nome da sua variável sempre começa com o nome da tabela e é separado por um ponto:
> mytable.foo = "hello world"
> mytable.bar = 1+2
> print(mytable.foo)
hello world
> print(mytable.bar)
3
Script com Lua
Executar Lua no terminal é ótimo para obter feedback instantâneo, mas é mais útil executar Lua como um script. Um script Lua é apenas um arquivo de texto contendo código Lua, que o comando Lua pode interpretar e executar.
A eterna questão, quando você está começando a aprender uma linguagem de programação, é como você deve saber o que escrever. Este artigo foi um bom começo, mas até agora você conhece apenas duas ou três funções Lua. A chave, claro, está na documentação. A linguagem Lua não é tão complexa e é bastante razoável consultar o site de documentação Lua para obter uma lista de palavras-chave e funções.
Aqui está um problema prático.
Suponha que você queira escrever um script Lua que conte palavras em uma frase. Tal como acontece com muitos desafios de programação, há muitas maneiras de fazer isso, mas digamos que a primeira função relevante que você encontra nos documentos de Lua é string.gmatch
, que pode procurar por um caractere específico em uma string. As palavras geralmente são separadas por um espaço vazio, então você decide que a contagem de espaços + 1 deve renderizar uma contagem razoavelmente precisa das palavras que estão separando.
Aqui está o código para essa função:
function wc(words,delimiter)
count=1
for w in string.gmatch(words, delimiter) do
count = count + 1
end
return count
end
Estes são os componentes desse código de exemplo:
function
: Uma palavra-chave que declara o início de uma função. Uma função personalizada funciona basicamente da mesma maneira que funções integradas (comoprint
estring.len
.)palavras
edelimitador
: Argumentos necessários para a execução da função. Na instruçãoprint('hello')
, a palavrahello
é um argumento.counter
: Uma variável definida como 1.for
: um loop usando a funçãostring.gmatch
enquanto itera sobre aspalavras
que você inseriu na função e procura pordelimitador
que você inseriu.count=count +1
: Para cadadelimitador
encontrado, o valor decount
é redefinido para seu valor atual mais 1.-
end
: uma palavra-chave que encerra o loopfor
. return count
: Esta função gera (ou retorna) o conteúdo da variávelcount
.end
: uma palavra-chave que encerra a função.
Agora que você criou sua própria função, você pode usá-la. Isso é algo importante a lembrar sobre uma função. Ele não funciona sozinho. Ele espera que você o chame em seu código.
Digite este código de exemplo em um arquivo de texto e salve-o como words.lua
:
function wc(words,delimiter)
count=1
for w in string.gmatch(words, delimiter) do
count = count + 1
end
return count
end
result = wc('zombie apocalypse', ' ')
print(result)
result = wc('ice cream sandwich', ' ')
print(result)
result = wc('can you find the bug? ', ' ')
print(result)
Você acabou de criar um script Lua. Você pode executá-lo com Lua. Você consegue encontrar o problema com este método de contar palavras?
$ lua ./words.lua
2
3
6
Você pode notar que a contagem está incorreta para a frase final porque há um espaço final no argumento. Lua detectou corretamente o espaço e o registrou em count
, mas a contagem de palavras está incorreta porque esse espaço específico não delimita uma palavra. Deixo para você resolver esse problema ou encontrar outras maneiras pelas quais esse método não seja o ideal. Há muita reflexão na programação. Às vezes é puramente acadêmico e outras vezes é uma questão de saber se um aplicativo funciona.
Aprendendo Lua
Lua é uma linguagem divertida e robusta, com melhorias progressivas feitas a cada lançamento e uma base de desenvolvedores cada vez maior. Você pode usar Lua como uma linguagem utilitária para scripts pessoais, ou para avançar em sua carreira, ou apenas como um experimento para aprender um novo idioma. Experimente e veja o que Lua traz para a mesa.