LUA – Linguagem de Programação

Provavelmente se o leitor ouvir alguém falar em LUA, irá logo pensar no planeta satélite que o astronauta Neil Armstrong teve o privilégio de pisar pela primeira vez. No entanto neste artigo iremos falar de algo bem diferente, mais ao alcance de uma pessoa comum…

História e Características

A LUA foi desenvolvida em língua portuguesa por uma equipa de programadores do departamento Tecgraf da Universidade Católica do Rio de Janeiro, em código open-source. O objectivo inicial foi a gestão de um projecto industrial da Petrobras.

Graças à sua portabilidade, facilidade de aprendizagem, rapidez e eficiência, rapidamente cresceu para outras áreas de programação, estando actualmente a fazer parte de aplicações informáticas de grande porte.

A LUA é uma linguagem de programação procedural do género de Pascal, C, Python, PHP, Cobol, entre outras. Por este facto qualquer programador terá uma curva de aprendizagem curta e rápida. No entanto, a maior vantagem da LUA é talvez a sua enorme portabilidade que lhe permite interacção com qualquer outra linguagem de programação ou sistema operativo.

Com a sua sintaxe simples, qualquer script é de desenvolvimento rápido, e com um menor tempo de processamento, talvez tenha sido esta característica que cativou a grande empresa de jogos para PC Lucas Arts.

Quem não se lembra do grande título de jogo Escape from Monkey Island na década de 90. Provavelmente o que o leitor não sabe é que LUA foi utilizada nesse jogo para o desenvolvimento da programação responsável pelo controlo da personagem principal, todos os cálculos necessários à movimentação das personagens eram realizados através de scripts em LUA.

Com a entrada no mundo dos jogos, a rapidez e portabilidade da linguagem despertou a atenção de outras entidades. Os Estados Unidos da América foi a próxima conquista, tendo inúmeras empresas do parque industrial de Silicon Valley optado pela LUA para desenvolver grande parte do seu software.

Posteriormente a afirmação final de LUA é consolidada com a interacção dos sistemas do programa espacial da NASA e com alguns dos projectos internos .NET da Microsoft.

A evolução de LUA

Com um crescimento bastante acentuado, cada vez mais programadores tiveram a curiosidade de ler e se informar o porquê de tanto se ouvir falar em LUA. Rapidamente os grupos de debate da comunidade foram aumentando e os projectos novos surgiam a uma rapidez alucinante. Por tudo isto a evolução de LUA teria de passar por algo que se tornou indispensável no nosso dia-a-dia… a internet. Capaz de desenvolver websites completos através da biblioteca CGI/LUA e LuaSQL. Imagine o que será desenvolver um website completamente em CGI/LUA (equivalente para a LUA, tal como o IIS é para o ASP) com recurso a LuaSQL.

Com o backend compilado em ANSI C ou LUA pré-compilado, se um dia decidir trocar o servidor de Windows para Solaris por exemplo, não será necessário desenvolver a plataforma toda de novo, basta recompilar o código C e configurar o novo webserver.

A programação

Como este artigo não pretende demonstrar a totalidade da linguagem de programação LUA, mas sim abordar as principais características que tornam esta linguagem única, recomenda-se a leitura do manual em http://www.lua.org.

Tal como existe no Java a Java Virtual Machine, também LUA tem algo parecido, que tem o nome de Ambiente Global Único.  Este ambiente guarda todas as variáveis globais e definições de funções. É automaticamente activado quando o interpretador é inicializado, e está activo durante toda a execução do script. O Ambiente Global Único é manipulado apenas por código escrito em LUA ou por bibliotecas em C, que utilizem funções da interface C-Lua.

Variáveis

Tal como acontece em PHP ou Python as variáveis globais não precisam de ser declaradas, basta utilizar algo do género:

a = 2.3;

É importante referir que as variáveis globais não têm tipos de dados definidos, apenas o conteúdo define o tipo de variável, existindo sete tipos básicos: nil, number, string, function, cfunction, userdata e table.

Atribuição múltipla de variáveis

De forma a maximizar o código, com a LUA podemos fazer atribuições múltiplas de variáveis:

n, i = “Olá, Mundo” , 2;

Ficando desta forma a variável n com a string Olá, Mundo e a variável i com o valor 2. Troca de valores entre atribuições múltiplas é possível com a atribuição múltipla com troca de valores entre variáveis:

a, b = b, a;

Fazendo com que a receba o valor anteriormente armazenado por b e que b, receba o valor anteriormente armazenada por a, sem necessidade de variáveis temporárias. Imagine o que será os velhos algoritmos de bubblesort para ordenação de dados com esta vantagem.