Você está na página 1de 10

Linguagem de programao Lua

Juliano Monteiro, Matheus Marques, Vitor Garcia


Professor-Tutor Externo Maurcio Machado da Rosa
Centro Universitrio Leonardo da Vinci - UNIASSELVI
Analise e Desenvolvimento de Sistemas (ADS0023) Prtica do Mdulo II
15/04/2015

RESUMO
Neste trabalho apresentaremos um pouco sobre linguagem brasileira de programao LUA atravs
de uma abordagem simples e informativa contando um pouco sobre sua histria, evoluo,
aplicaes vantagens e desvantagens desta que uma linguagem de scripts amplamente usada nas
mais diversas reas. Noes gerais de histrico demonstram seu proposito e seus domnios de
aplicao e exemplificam a aceitao do trabalho perante os outros pases. Alm disso, detalhes
mais especficos sero exemplificados como sua versatilidade para a utilizao em software para
sistemas embarcados at grandes aplicativos como o Adobe Phosthop Lihgtroom. Atualmente LUA
uma das linguagens mais utilizadas atualmente para a programao em jogos e tambm faz parte
do padro GINGA para o Sistema Brasileiro de TV Digital. A linguagem de programao LUA
tem sua biblioteca escrita por inteiro em ANSI C sendo por isso muito utilizada em na rea de
segurana e tambm sendo uma linguagem de script embutida em ferramentas como Wireshark,
snort e nmap.
A linguagem de programao LUA uma ferramenta muito porttil o mesmo cdigo-fonte pode ser
compilado em qualquer plataforma. Em pouco tempo passou a ser uma das 20 linguagens mais
utilizada atualmente no mundo, com isso teve sua presena em empresas muito importantes como
Incor, Intel, Microsoft e NASA.

Palavras-chave: Programao. LUA.

1 INTRODUO

A linguagem de programao LUA tem conquistado os desenvolvedores de programas e


aplicaes aos poucos, graas a sua simplicidade, leveza e rapidez. A LUA uma linguagem de
programao de extenso projetada para ar suporte programao procedimental em geral e que
oferece facilidades para a descrio de dados.

A linguagem tambm oferece um bom suporte para a programao orientada a objetos,


programao funcional e programao orientada a dados. A LUA foi planejada para ser utilizada
por qualquer aplicao que necessite de uma linguagem de script leve e poderosa. Por ser uma
linguagem de extenso, LUA no possui a noo de um programa principal: ela somente funciona
embarcada em um programa cliente anfitrio, chamado de programa hospedeiro. Esse programa

2
hospedeiro pode invocar funes para executar um pedao de cdigo LUA, pode escrever e ler
variveis LUA e pode registrar funes C para serem chamadas pelo cdigo LUA.

2 DESENVOLVIMENTO

2.1 HISTRIA
Lua a nica linguagem de programao genuinamente brasileira que foi aceita no mundo
todo. Foi criada em 1993 por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar
Celes, desenvolvedores do TecGraf (Grupo de Tecnologia em Computao Grfica) da PUC-Rio, a
princpio, para ser usada em um projeto da Petrobras. Mas devido sua eficincia, clareza e
facilidade de aprendizado, passou a ser usada em diversos ramos da programao, como no
desenvolvimento de jogos, controle de robs, processamento de texto, entre outros. Tambm
freqentemente usada como uma linguagem de propsito geral. Verses da Lua antes da verso 5.0
foram liberadas sob uma licena similar licena BSD. A partir da verso 5.0, Lua foi licenciada
sob a licena MIT. Assemelha-se com Python, Ruby e Icon, entre outras. Lua tem sido usada em
vrias aplicaes, tanto comercial como no-comercial. A NASA at 2003 utilizava Lua para
controlar o armazenamento de gazes explosivo em nibus espaciais. E aqui mesmo no Brasil, o
instituto do corao, INCOR, radicalizou e desenvolveu todo seu sistema WEB para controle de
suas UTIs em Lua.

3
2.2 EVOLUO
1993: Lua 1.0, aconteceu a primeira discusso pblica sobre Lua, dada no VII
Simpsio Brasileiro de Engenharia de Software;
1994: Lua 1.1, esta foi a primeira verso liberada para o pblico;
1995: foi liberada a verso 2.2;
1996: liberada a verso 2.4;
1997: liberada a verso 3.0. Comea aplicaes para jogos;
1998: liberada a verso 3.1;
1999: liberada a verso 3.2.1 (com espelhos nos EUA e na Alemanha);
2000: liberada a verso 4.0 (com novos espelhos, no Japo e na Dinamarca);
2001: liberada a verso 4.1 (com novo espelho, agora a Rssia);
2002: liberada a verso 5.0(beta). Lua Biblioteca Design Workshop realizado na
Universidade de Harvard;
2003: Lua se destaca como a linguagem mais popular para criao de scripts de
jogos. lanado o livro Programming in Lua. Liberada a verso 5.0.1;
2004: Liberada a verso 5.1;
2005: liberada a verso 5.1;
2006: liberada a verso 5.1.1. Feita a traduo do livro Programming in Lua para o
alemo;

2.3 SOBRE A LINGUAGEM

Lua foi desenvolvida inicialmente para ser embutida em aplicaes escritas em outras
linguagens, de forma que pudesse estend-las. Pode ser usado para descrever dados, definir
configuraes e comportamentos do ncleo da aplicao escrito em outra linguagem. Lua tambm
fornece mecanismos para ser estendida. Com a evoluo da linguagem, Lua passou a ser vista
tambm como uma linguagem de script auto-suficiente e passou a ser usada para desenvolver
diversas aplicaes, mantendo as caractersticas de oferecer recursos poderosos para descrever
dados e ser facilmente extensvel.

A linguagem Lua utilizada hoje em pases como EUA, Japo, Dinamarca e Alemanha
entre outros na criao de scripts, aplicao de games como os da LucasArt Entertainment, controle
de robs e testes de equipamentos. Para a Web, a Lua tem sido muito til para a intercomunicao

4
de bases de dados em sites dinmicos. O cdigo da linguagem modular, podendo cada mdulo ser
eliminado no caso de a aplicao no precisar dele, o que deixa qualquer aplicao mais leve de se
carregar.

O maior atrativo para aquele que trabalhar com a linguagem a possibilidade de construir
um cdigo atravs de meta-mecanismos, sem precisar despejar o contedo da linguagem
propriamente dito, o que facilita a vida do programador e economiza tempo na concluso do
projeto.

A prtica de como a linguagem LUA pode ajudar o programador, digamos que todo um
trabalho que poderia ser feito anteriormente em ASP para rodar em servidores Windows seja feito
utilizando o servidor de pginas CGI/Lua (que para a linguagem Lua o que o IIS para o ASP)
para escrever as pginas dinmicas e o LuaSQL para o acesso aos bancos de dados. Os beck-ends
seriam compilados em ANSI C ou em

Lua pr-compilado. Se, um dia, for necessrio que os servidores Windows sejam trocados
por Solaris, todo o trabalho no teria que ser refeito para a nova plataforma, bastando apenas
recompilar o cdigo C e configurar o novo Web Server.

A principal diferena em trabalhar com Lua que esta pode ser integrada a outros
programas. O interesse das empresas por Lua ocorre porque essa linguagem de programao ocupa
pouco espao no HD do computador, mais rpida entre as chamadas linguagens de extenso - que
uma sub-diviso da linguagem de programao - e mais fcil de interagir com outros programas.
A linguagem Lua tem vrios derivados''. O principal deles o CGILua, que trabalha com
aplicaes WEB. O CGILua um programa escrito em C onde voc embute trechos escritos em
Lua. E o executvel do CGILua faz toda a comunicao desse trecho Lua com o protocolo http da
Internet. Ou seja, ele faz o papel do CGI. Lua, com seus arquivos de configurao, possibilita que,
ao mesmo tempo em que se cria a funcionalidade das pginas, elas estejam sendo diagramadas na
produo, e os textos, elaborados por um redator - tudo ao mesmo tempo.

Em particular, Lua oferece um mecanismo de co-rotinas assimtrico, de primeira classe e


com pilha. Co-rotinas, como implementadas por Lua, so bastante similares a linhas de execuo

5
(theads) cooperativas. Cada co-rotinas em Lua representa uma linha de execuo independente, com
sua prpria pilha de chamadas (Por isso classificada como stackful). Mas, ao contrrio de um
sistema multitheading convencional, no h preempo em um sistema de co-rotinas. Uma co-rotina
s interrompe sua execuo quando termina ou quando invoca explicitamente uma primitiva de
suspenso (yiald).

2.4 VANTAGENS
Rpida: Lua tem um timo desempenho comparado com outras linguagens de scripts
interpretadas, sendo a mais rpida entre todas;

Porttil: O mesmo trecho de cdigo pode ser compilado em vrias plataformas sem sofrer
alteraes. Lua roda em todos os tipos de Sistemas Operacionais;

Embutvel: Lua rpida e pequena podendo facilmente ser embutida nas mais diversas
aplicaes. Lua usada para estender programas escritos no s em C e C++, mas tambm em Java,
C#, Smalltalk, Fortran, Ada, Erlang, e mesmo outras linguagens de script, como Perl e Ruby;

Poderosa e Simples: embora Lua no seja uma linguagem puramente orientada a objetos, ela
fornece meta-mecanismos para a implementao de classes e herana. Os meta-mecanismos de Lua
trazem uma economia de conceitos e mantm a linguagem pequena, ao mesmo tempo que permitem
que a semntica seja estendida de maneiras no convencionais;

Pequena: Incluir Lua numa aplicao no aumenta quase nada o seu tamanho. O pacote de
Lua 5.1.4, contendo o cdigo fonte, documentao e exemplos, ocupa 860K descompactado;
Livre: Lua software livre de cdigo aberto, distribuda sob a licena MIT. Pode ser usada
para quaisquer fins sem burocracia, s fazer o download e us-la;
Importncia Global: O projeto e a evoluo de Lua foram apresentados em junho de 2007
na HOPL III, a 3a Conferncia da ACM sobre a Histria das Linguagens de Programao. Essa
conferncia ocorre a cada 15 anos (a primeira foi em 1978) e somente poucas linguagens so
apresentadas a cada vez. A escolha de Lua para a HOPL III um importante reconhecimento do seu
impacto mundial. Lua a nica linguagem de programao de impacto desenvolvida fora do

6
primeiro mundo, estando atualmente entre as 20 linguagens mais populares na Internet (segundo o
ndice TIOBE, em Maro/2011).

2.5 DESVANTAGNS
Mais demorado que C;

Vulnerabilidade: Foram identificadas e documentadas diversas vulnerabilidades de


programao insegura em Lua. Tais como injeo de comandos, condio de competio, corrupo
de arquivos e cdigo malicioso, script cruzado armazenado, referncia insegura a tabelas, injeo de
SQL e mal uso de criptografia (estas vulnerabilidades, em outras linguagens de programao, esto
amplamente documentas em catlogos conhecidos, como o OWASP Top 10 (2010) e o
CWE/SANS Top 25 (2010). No foi encontrada documentao de vulnerabilidades de programao
insegura em Lua e nem boas prticas de segurana de software em Lua).

2.6 APLICAES DESENVOLVIDAS


No mercado de softwares em geral:

Ginga NCL middleware padro brasileiro para TV Digital;

Wireshark analisador de protocolos;

Snort deteco de intrusos e proteo do sistema;

Adobe Lightroom gerenciador e organizador de imagens;

nmap rastreador de redes para segurana;

Eyeon s Digital Fusion ps-produo de filmes;

INPE biblioteca GIS;

Olivetty firmware para impressoras;

Omnitronix monitoramento remoto;

RealTimeLogic servidores Web;

APT-RPM, Conectiva padro para distribuies RPM;

Publique! gerenciador de contedo para web;

Sputnik wiki extensvel disponvel como software livre

Empresas diversas e importantes tambm aderiram linguagem, empregando-a em aplicaes das


mais variadas:

Hands: uso no desenvolvimento de navegadores de contedo para micros de bolso;

Incor (Instituto do Corao em So Paulo): utilizada no servidor do sistema que monitora


pacientes na UTI via Web;

CPC 4400: placa de switch para rede Ethernet, a linguagem foi usada na criao de sua
interface;

Intel: empregada na ferramenta interna para layout de chips (processadores);

Rob Crazy Ivan: Lua um dos componentes do seu crebro, responsvel, segundo
fabricantes do rob, pela parte lgica. Ivan ganhou o concurso de inteligncia artificial da
RoboCup 2000, concurso de robs realizado na Dinamarca;

AXAF (Advanced X-ray Astrophysics Facility): terceiro dos grandes observatrios espaciais
lanados pela NASA, tem a tarefa de simular em imagens os sinais recebidos do espao, Lua
uma das linguagens utilizadas para tal;

NASA: Lua foi linguagem usada no controle dos nveis de concentrao de gases
perigosos na preparao para o lanamento de nibus espacial.

Petrobras: principal usuria, utilizando principalmente em visualizaes de perfis


geolgicos.

2.7 APLICAES EM JOGOS


Lua atualmente a linguagem mais utilizada no desenvolvimento de aplicaes para jogos
(20% dos jogos so desenvolvidos com Lua, enquanto somente 7% usam Python, a segunda
linguagem de script mais citada na pesquisa [2003] realizada pela gamedev.net um importante site
para programadores de jogos). Devido ao seu pequeno tamanho, bom desempenho, portabilidade e
facilidade de integrao, Lua tem sido amplamente utilizada na indstria de jogos. Empresas como
LucasArts, BioWare, Microsoft, Relic Entertainment, Absolute Studios e Monkeystone Games
desenvolvem jogos usando Lua. Os principais jogos so:

Grim Fandango - LucasArts;

World WarCraft - Blizzard;

Sonic, the Hedgehdg SEGA;

FarCry UBISOFT;

The Sims2 EA;

Sim City 4 EA;

8
2.8 APLICAES NO SISTEMA BRASILEIRO DE TV DGITAL
A linguagem de programao Lua, a linguagem procedural do subsistema Ginga- NCL,
parte integrante do sistema Ginga. Conforme Barbosa e Soares (2008), o middleware Ginga uma
combinao de tecnologias padronizadas e inovaes brasileiras. Ele subdividido em trs
componentes principais interligados. Os subsistemas so chamados de Ginga-J (para aplicaes
procedimentais Java), Ginga- NCL (para aplicaes declarativas NCL e NCLua [ programa Lua
para plataforma de televiso digital ]) e o Ginga-CC (o ncleo comum). Alm disso, h diversas
APIs, pacotes de software e outros servios de mais baixo nvel, oferecidos ao middleware pelo
sistema operacional ou outros componentes.

2.9 APLICAES WEB


Um exemplo de aplicao da linguagem de programao Lua na WEB o projeto Kepler.
Kepler uma comunidade de desenvolvedores de software livre usando Lua como uma opo
vivel de desenvolvimento de aplicaes web, mantendo a caracterstica multi-plataforma de Lua.
Esse projeto desenvolveu uma arquitetura onde aplicaes para a Web podem ser escritas utilizando
uma API nica denominada CGILua. Seguindo a linha multi-plataforma, Kepler disponibiliza
disparadores de interpretadores Lua para as tecnologias web mais difundidas, entre elas: CGI,
Mdulos do Apache, mdulos no IIS (Internet Information Server), FastCGI e Servlet Java. Alm
dos disparadores para tecnologias amplamente difundidas, o Kepler tambm oferece um servidor
web escrito em Lua, chamado Xavante. Esse servidor tambm permite a execuo de scripts Lua,
entre eles os que usam a API CGILua. Lua foi classificada como sendo o mais rpido comparado
com Python, Perl, PHP e Ruby.

9
3 CONSIDERAES FINAIS
Aps o termino deste trabalho, conclui-se que a linguagem de programao Lua, apesar de
muitos ainda no conhecer, uma linguagem muito vantajosa quando se trata de uma linguagem de
scripts, de extenso. Principalmente na rea de jogos, onde ela est tendo um maior destaque
(embora seja usada para todo tipo de aplicao). Pois pequena (leve), rpida, dinmica, muito
poderosa.

REFERNCIAS
Publique! Site desenvolvido em Lua, Disponvel em http://www.fabricadigital.com.br
Acessado em 10/04/2015.
Gnter Heinrich Herweg Filho, TV Digital, Lua introduo Disponvel em
http://imasters.com.br Acessado em 10/04/2015.
Kepler Project, Comunidade de desenvolvedores de sites usando Lua, Disponvel em
http://keplerproject.org Acessado em 10/04/2015.

Site oficial da linguagem de programao Lua, Disponvel em http://www.lua.org Acessado


em 10/04/2015.
Leonardo Godinho da Cunha, Modelos de Concorrncia e Sandboxes Aplicados a Servidores
HTTP em Lua, Disponvel em http://www.maxwell.lambda.ele.puc-rio.br Acessado em
10/04/2015.
Linguagem de Programao Lua, Disponvel em http://www.oficinadanet.com.br Acessado
em 10/04/2015.
Ficha da Linguagem de Programao Lua, Disponvel em http://www.htmlstaff.org
Acessado em 10/04/2015.

10
As Facilidades da Programao Lua, Disponvel em http://www.portaldaprogramacao.com
Acessado em 10/04/2015.
Adriano Pecenin, Linguagem de Programao Lua, Disponvel em
http://quatroliberdades.blogspot.com Acessado em 10/04/2015.
Linguagem de Programao Lua, Disponvel em http://www.gamedev.com.br Acessado em
10/04/2015.