Paper Lua

10
Linguagem de programação Lua Juliano Monteiro, Matheus Marques, Vitor Garcia Professor-Tutor Externo Maurício Machado da Rosa Centro Universitário Leonardo da Vinci - UNIASSELVI Analise e Desenvolvimento de Sistemas (ADS0023) Prática do Módulo II 15/04/2015 RESUMO Neste trabalho apresentaremos um pouco sobre linguagem brasileira de programação LUA através de uma abordagem simples e informativa contando um pouco sobre sua história, evolução, aplicações vantagens e desvantagens desta que é uma linguagem de scripts amplamente usada nas mais diversas áreas. Noções gerais de histórico demonstram seu proposito e seus domínios de aplicação e exemplificam a aceitação do trabalho perante os outros países. Além disso, detalhes mais específicos serão exemplificados como sua versatilidade para a utilização em software para sistemas embarcados até grandes aplicativos como o Adobe Phosthop Lihgtroom. Atualmente LUA é uma das linguagens mais utilizadas atualmente para a programação em jogos e também faz parte do padrão GINGA para o Sistema Brasileiro de TV Digital. A linguagem de programação LUA tem sua biblioteca escrita por inteiro em ANSI C sendo por isso muito utilizada em na área de segurança e também sendo uma linguagem de script embutida em ferramentas como Wireshark, snort e nmap. A linguagem de programação LUA é uma ferramenta muito portátil o mesmo código-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 presença em empresas muito importantes como Incor, Intel, Microsoft e NASA. Palavras-chave: Programação. LUA. 1 INTRODUÇÃO A linguagem de programação LUA tem conquistado os desenvolvedores de programas e aplicações aos poucos, graças a sua simplicidade, leveza e rapidez. A LUA é uma linguagem de programação de extensão projetada para ar suporte à programação procedimental em geral e que oferece facilidades para a descrição de dados. A linguagem também oferece um bom suporte para a programação orientada a objetos, programação funcional e programação orientada a dados. A LUA foi planejada para ser utilizada por qualquer aplicação que necessite de uma linguagem de script leve e poderosa. Por ser uma linguagem de extensão, LUA não possui a noção de um programa principal: ela somente funciona embarcada em um programa cliente anfitrião, chamado de programa hospedeiro. Esse programa

description

Linguagem de Programação Lua

Transcript of Paper Lua

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

  • 7

    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.