Lua é a linguagem de programação que Roberto Ierusalimschy projeta desde 1993, com Luiz Henrique de Figueiredo e Waldemar Celes, na PUC-Rio. Leve, embarcável e distribuída sob licença MIT, ela existe para entrar dentro de outros programas: jogos, ferramentas, middleware, módulos da Wikipédia. Não compete como substituta universal de Python. Compete como interpretador pequeno com interface clara em C.
O site oficial, lua.org, descreve a linguagem como poderosa, eficiente e portátil, com tipagem dinâmica, máquina virtual de registradores e coleta de lixo. O interpretador cabe em dezenas ou poucas centenas de kilobytes, conforme a plataforma. O pacote-fonte de uma versão recente ocupa da ordem de 390K compactado. Esse número importa: é o argumento de quem precisa de script sem inflar o binário hospedeiro.
Como a linguagem funciona na prática
Lua combina sintaxe procedural com uma estrutura de dados central, a tabela, que serve de array, dicionário, objeto e namespace. Funções são valores de primeira classe. Há corrotinas, closures e metatabelas para estender a semântica. Não há um sistema de classes nativo; herança e encapsulamento se constroem com esses mecanismos. A equipe chama isso de meta-mecanismos: em vez de entregar cada recurso pronto, entrega um jeito de o programador montar o recurso.
A implementação é uma biblioteca em C, no subconjunto comum a C e C++. O programa hospedeiro liga a biblioteca, empurra valores numa pilha e expõe funções nativas. Por isso Lua aparece em World of Warcraft, Angry Birds, Adobe Lightroom, no middleware Ginga de TV digital e nos módulos Scribunto da Wikipédia. O programador da aplicação escreve o núcleo em C ou C++; o conteúdo, a regra de jogo ou a extensão ficam em Lua.
- Linguagem de extensão criada em 1993 no Tecgraf da PUC-Rio.
- Licença MIT, código aberto, uso comercial permitido sem taxa.
- Manual de referência oficial em lua.org, mantido pelos três autores.
- Implementação pequena, portátil e pensada para ser embarcada via interface em C.
Versões, manual e comunidade
A linguagem teve versões sucessivas desde o início dos anos 1990. O manual de cada série — 5.1, 5.2, 5.3, 5.4 e seguintes — é a definição normativa, assinada por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes. Há também implementações independentes, como o LuaJIT, para quem precisa de compilação just-in-time. O núcleo de referência continua o código da PUC-Rio.
A comunidade se organiza em lista de discussão, workshops e no próprio site. Lua.org deixa claro que o nome se escreve Lua, não LUA, e que a linguagem hoje vive no LabLua, no Departamento de Informática da PUC-Rio, depois de ter nascido no Tecgraf. Comprar o livro oficial ou doar ao projeto são as formas públicas de apoiar a manutenção, já que o software em si não cobra licença.
Quando Lua é a escolha certa
Lua faz sentido quando o programa principal já existe e precisa de script interno: regras de jogo, filtros, configuração, plugins, lógica de interface. Faz menos sentido como primeira linguagem de um curso introdutório que espera ecossistema web enorme, embora seja ensinada em disciplinas de linguagens precisamente por ser pequena o bastante para se entender inteira.
Quem chega pela fama dos games encontra uma linguagem sóbria, com 21 palavras-chave e um núcleo que cabe na cabeça. Quem chega pela pesquisa de Roberto Ierusalimschy encontra o mesmo objeto: um desenho que recusa inchar para parecer moderna. O download, o manual e o histórico estão em lua.org. O livro do arquiteto-chefe aprofunda o uso. A linguagem, em si, continua gratuita.



