LUA

O Artigo abaixo foi escrito por Günter Heinrich Herweg Filho. Do portal imaster , mas o localizei no site da ITV Produções.

Apesar de repetir algumas coisas já ditas nos posts anteriores, vale a pena ler este artigo, pois a linguagem lua é explicada detalhadamente, ratificando o conhecimento adquirido.

Lua: Introdução


Neste primeiro artigo irei apresentar a linguagem de programação Lua, a linguagem procedural do subsistema Ginga-NCL, parte integrante do sistema Ginga. Explanarei sobre suas características, sua origem, qual sua aplicação no meio de televisão, enfim, uma introdução dos principais conceitos. Inicialmente o foco será na linguagem pura e, gradativamente, será voltada para aplicações para televisão digital.
Lua é uma linguagem de programação em script, planejada para estender aplicações escritas nas mais diversas linguagens. Oferece bom suporte a programação funcional, programação orientada a dados e até programação orientada a objetos. Por sua natureza extensível, Lua funciona embarcada em um programa “hospedeiro” ou, também chamado programa principal, que pode chamar funções ou trechos de código Lua, ler e escrever em variáveis e ainda registrar funções da linguagem C a serem invocadas por Lua, pois esta é escrita em C.
Logo veremos que um NCLua (programa Lua para plataforma de televisão digital), é justamente isso, uma parte de um documento NCL.
Existem outras linguagens de script similares a Lua nos propósitos, como Perl, Tcl, Ruby, Forth, e Python. Porém, nenhuma outra linguagem oferece esse conjunto de características:• Extensibilidade: É fácil prover uma interface de comunicação de Lua com linguagens como C/C++, Fortran, Java, Smalltalk, Ada e outras linguagens de script.• Simplicidade: Lua é simples e pequena (leve).• Eficiência: Comparativos mostram que Lua esta entre as linguagens interpretadas mais rápidas.

• Portabilidade: Lua roda em TODAS plataformas existentes.

A biblioteca de Lua, ou seja, sua API, a máquina de execução, e o interpretador de linha de comando são softwares livre. A comunidade de programadores já é bem vasta principalmente no exterior onde a linguagem é mais popular e possui uma boa documentação como manuais, artigos e livros.

Surgimento.

A linguagem Lua teve seu inicio em 1993 quando seus criadores, Roberto Lerusalimschy, Luiz H. de Figueiredo e Waldemar Celes, juntaram suas idéias e esforços para a criação de uma linguagem ágil, portável, completa e, apesar disso, simples.
Foi projetada e desenvolvida no laboratório TecGraf e atualmente esta sob responsabilidade do LabLua, ambos na PUC-Rio (Pontifícia Universidade Católica do Rio de Janeiro).
Nos primeiros anos de existência, Lua era usada em projetos internos e sua evolução lenta e gradual, na medida em que se descobria o verdadeiro potencial da nova linguagem.

Mercado.

A comunidade internacional conhece Lua muito bem e já usufrui de seus benefícios a muito tempo.
Uma pesquisa informal feita pelo site gamedev.net de setembro de 2003 mostrou que Lua é a linguagem mais usada para script em jogos, cerca de 20% dos jogos são desenvolvidos com Lua, contra 7 % da segunda colocada, Python. Empresas como LucasArts, BioWare, Microsoft, Relic Entertainment, Absolute Studios eMonkeystone Games desenvolvem jogos usando Lua.
A ferramenta de gerenciamento de fotos digital da Adobe, o Lightroom tem mais de 40% de seu código escrito em Lua.
Podemos citar outras aplicações como firmware para impressoras, analisadores de protocolos,ferramentas de pós-produção de filmes e servidores Web.
Aqui no Brasil a linguagem faz parte do nosso sistema de televisão digital sendo usada para o desenvolvimento de aplicações interativas, sua engine será parte integrante do middleware Ginga.

Lua no Ginga.

Alguns conceitos importantes: As aplicações interativas para Ginga podem ser puras, onde somente uma linguagem é usada no desenvolvimento, ou híbridas, quando misturamos linguagens na aplicação. Vejamos os casos:
Podemos ter um documento NCL com código procedural (estendido) Lua, que chamamos NCLua. Neste caso, o programa principal é escrito em NCL e um de seus nós de conteúdo é um documento com código Lua, ou seja, um programa Lua que é invocado pelo programa NCL principal.
Um caso similar é quando temos um documento NCL com código procedural (também estendido) Java, que chamamos de NCLet.
Quando falamos de aplicações puras, podemos ter aplicações feitas somente em Java, que chamamos de Xlet, ou somente em NCL. Aplicações feitas somente em Lua não são permitidas, pois, como falei anteriormente, Lua precisa de um programa hospedeiro.
A arquitetura dos decodificadores full-seg prevê a máquina de execução Lua e a Máquina Virtual Java (JVM) como partes obrigatórias. Assim como NCL e Java como linguagens de programação obrigatórias. Isso quer dizer que a linguagem Lua junto de NCL e Java poderá ser usada em todas as aplicações interativas, pois a norma prevê suporte para que elas executem sem problemas.
Mas quando mudamos o foco para receptores one-seg, que são os dispositivos portáteis, como celulares, a linguagem Java passa a ser opcional, enquanto Lua é obrigatória. Em termos práticos isso quer dizer que se alguma empresa que desenvolve aplicativos para celular o fizer usando linguagem Java, corre o risco de algum receptor não aceitar a aplicação porque o fabricante do dispositivo decidiu não colocar a JVM no aparelho. Esse problema não acontece com aplicações feitas em Lua, pois a norma prevê que todos os aparelhos devem obrigatoriamente dar suporte a aplicações Lua.
As figuras abaixo resumem as arquiteturas. A primeira camada são os aplicativos, escritos em NCL, NCLua ou Java (Xlet) no caso de receptores fixos. Na segunda camada estão as máquinas de execução, e por último o sistema operacional.

lua_img1

Figura 1: Arquitetura com Ginga-J e Ginga-NCL obrigatoriamente presentes: full-seg.

lua_img2

Figura 2: Arquitetura de dispositivo one-seg opcionalmente sem a máquina virtual Java.
Nos próximos artigos irei explorar a linguagem com conceitos e exemplos.
Günter Heinrich Herweg Filho.

Em tempo: A medida em que os próximos artigos sobre este assunto forem lançados, publicarei aqui no blog.

0 Responses to “LUA”


  • No Comments

Leave a Reply



Get Adobe Flash playerPlugin by wpburn.com wordpress themes