Pesquisa de site

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 (como print e string.len.)

  • palavras e delimitador: Argumentos necessários para a execução da função. Na instrução print('hello'), a palavra hello é um argumento.

  • counter: Uma variável definida como 1.

  • for: um loop usando a função string.gmatch enquanto itera sobre as palavras que você inseriu na função e procura por delimitador que você inseriu.

  • count=count +1: Para cada delimitador encontrado, o valor de count é redefinido para seu valor atual mais 1.

  • end: uma palavra-chave que encerra o loop for.

  • return count: Esta função gera (ou retorna) o conteúdo da variável count.

  • 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.

Artigos relacionados: