Lu-a-Bá - O bê-a-bá de Lua para a comunidade lusófona

Documento: “Uma introdução à programação em Lua”

Mini-curso preparado e apresentado por um dos autores da linguagem nas Jornadas de Atualização em Informática – 2009, evento que ocorreu na Universidade Federal do Rio Grande do Sul (UFRGS).

Público-alvo

Este documento será útil para quem deseja aprender a programar em Lua, e já possui algum conhecimento prévio em programação, com outros ambientes de desenvolvimento.

Estrutura

Dentro do programa, este mini-curso foi o terceiro, e foi dividido em 8 seções:

Resumo

A seção 3.1 explica algumas características da linguagem que a tornam dinâmica, e comenta também sua concepção como linguagem “de script”.

O que são scripts?

A seção 3.2 menciona formas de obtenção de uma distribuição de Lua em diferentes sistemas operacionais, e também maneiras de executar o código Lua utilizando o interpretador da distribuição padrão, alertando também para o fato de que em muitos casos, os programas Lua são embutidos em outras aplicações, e nestes casos dependerão do modo como o programa hospedeiro carrega e executa os trechos de código Lua.

Depois disso, a seção 3.3 mostra, por meio de exemplos, alguns conceitos-chave da linguagem, relativos a tipos de dados, operadores, funções e estruturas de controle, testes lógicos e algumas convenções da linguagem.

Em seguida, a seção 3.4 apresenta mais alguns exemplos que enfatizam características importantes das funções na linguagem Lua, como o fato de serem valores de primeira classe, terem possivelmente múltiplos retornos, escopo léxico, e as possibilidades que se abrem para uma abordagem funcional, utilizando funções de alta ordem e encadeamentos de chamadas.

A seção 3.5 apresenta o conceito de tabelas, alguns exemplos de uso e sua importância para construção de módulos, bem como a possibilidade de uso para orientação a objetos, com auxílio do mecanismo de delegação (este por sua vez baseado no conceito de metatabelas e metamétodos, porém não muito explorados no documento).

Depois disso, a seção 3.6 fala sobre o conceito de co-rotinas, como elas são implementadas em Lua, e demonstra a sua versatilidade com alguns exemplos de uso focados nas transferências de controle entre múltiplos trechos de código.

A seção 3.7 comenta o modo como Lua foi concebida desde o início para ser uma biblioteca portátil, e mostra duas perspectivas de uso da API C, uma na qual Lua é embutida em um programa C, e outra na qual é estendida com o registro de funções implementadas em C.

Por fim, a seção 3.8 faz um importante e acertado alerta sobre pontos que merecem uma discussão mais aprofundada, o que requer o tratamento de vários novos conceitos, algo que exigiria mais tempo do que o mini-curso dispunha.

Comentários

Como parte de um mini-curso, este documento sintetiza ao máximo o seu conteúdo, focando nos conceitos-chave da linguagem Lua e suas diferenças com outras linguagens.

Conceitos como iteração, recursividade, testes lógicos, abstração de problemas, estruturas de dados, paradigmas de programação são assuntos tidos como já conhecidos pelo leitor, e nesse sentido alguns exemplos triviais são apresentados apenas para explicar conceitos específicos da linguagem Lua.

Esses exemplos, porém, são seguidos de exemplos mais realistas, abordando problemas como tabelas de prefixos, desenhos de polígonos, pertinência em regiões geométricas, dentre outros cenários, utilizando os conceitos recém-apresentados. Além disso, a explicação sobre implementação de orientação a objetos em Lua só fará sentido para quem já tem familiaridade com este paradigma.

Dentre os principais conceitos de Lua abordados podemos destacar as funções, que embora sejam comuns na programação, possuem várias particularidades em Lua, as tabelas, que são uma estrutura (de fato a única em Lua) altamente versátil e pervasiva na linguagem, e co-rotinas, que oferecem um alto grau de controle e fluxos de execução cooperativos.

O final do documento explora mais a natureza “satelital” da linguagem, mostrando que na prática ela é uma biblioteca implementada em C, feita para ser embutida em ou estendida com código escrito em outras linguagens (geralmente em C), utilizando a API C.

Pontos de atenção

Conteúdo relacionado