20
<Linguagem de programação Lua> <Alberto, Danilo e Fernando>

Seminário: Lua

Embed Size (px)

Citation preview

Page 1: Seminário: Lua

<Linguagem de programação Lua>

<Alberto, Danilo e Fernando>

Page 2: Seminário: Lua

Introdução

O Que é Lua

•É uma linguagem de script e tem alguma similaridade com Perl, Python, Tcl.•Uma linguagem de descrição de dados (Anterior ao XML).•Uma linguagem de extensão.

•Ênfase em comunicação inter-linguagens.•Enfatiza desenvolvimento em múltiplas linguagens e plataformas.•É uma linguagem Brasileira. Única linguagem desenvolvida fora do eixo EUA/Europa/Japão a ser adotada mundialmente (Ruby é a única do Japão).•Participação na HOPL III, em 2007. 3ª Conferencia sobre Historia das Linguagens de Programação que acontece a cada 15 anos (1978, 1993 e 2007), poucas linguagens são escolhidas e isso foi um importante reconhecimento do impacto mundial da linguagem Lua.•

2Profa. MSc Ivna Valença

Page 3: Seminário: Lua

Introdução

Onde Lua foi e é Desenvolvida

•Desenvolvida na PUC – Rio desde 1993.

•Início modesto, para uso interno e expansão lenta e gradual.

•Comitê de três pessoas: Roberto Ierusalimschy, Luiz H. de

•Figueiredo, Waldemar Celes, desenvolvedores do TecGraf (Grupo de

Tecnologia em Computação Gráfica).

•Sua biblioteca foi programada em C/C++

•Atender demandas da Petrobras.

•Devido a sua eficiência passou a ser usada em outros ramos

(Desenvolvimento de jogos, controle de robôs, intercomunicação em sites

dinâmicos, entre outros).

•A distribuição de Lua é gratuita: Lua pode ser usada para quaisquer

propósitos, tanto acadêmicos quanto comerciais, sem nenhum custo.

3Profa. MSc Ivna Valença

Page 4: Seminário: Lua

Introdução

Do que eles precisavam?

•Uma “linguagem de configuração genérica”.•Facilmente acoplável e portátil.•O mais simples possível com sintaxe não intimidante, para usuários finais (engenheiros, geólogos etc...).

E onde Lua é Usada

•Todo tipo de aplicação.•Nicho em jogos (pesquisa informal feita pelo site gamedev.net (set. 2003) mostrou Lua como a linguagem mais usada para script em jogos.

4Profa. MSc Ivna Valença

Page 5: Seminário: Lua

Introdução

Importantes Aplicações

•Ginga: Middleware para o padrão brasileiro para TV digital. Ele é subdividido em três componentes principais interligados. Os sistemas são chamados de Ginga-J (para aplicações procedimentais Java), Ginga NCL (para aplicações declarativas NCL e NCLua [programa Lua para plataforma de TV digital]) e o Ginga –CC (o núcleo comum).•Hands: Uso no desenvolvimento de navegadores de conteúdos para micro de bolso;•Incor (Instituto do coração em São 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 criação de sua interface; •Intel: Empregada na ferramenta interna para layout de Chips (Processadores);

5Profa. MSc Ivna Valença

Page 6: Seminário: Lua

Introdução

Importantes Aplicações

•Robô Crazy Ivan: Lua é um dos componentes do seu cérebro, responsável, segundos fabricantes do robô, pela parte Lógica. Ivan ganhou o concurso de inteligência artificial da RoboCup 2000, concursos de robôs realizados na Dinamarca; •AXAF ( Advanced X-ray Astrophysics Facility): Terceiros dos grandes observatórios espaciais lançados pela NASA, tem a tarefa de simular os sinais recebidos do espaço, Lua é uma das linguagens utilizadas para tal;•NASA: Lua foi a linguagem usada no controle dos níveis de concentração de gases perigosos na preparação para o lançamento de ônibus espacial;•Petrobras: Principal usuária, utilizando principalmente em visualizações de perfis geológicos;•Adobe Photoshop Lightroom: Tratamento de imagem;

6Profa. MSc Ivna Valença

Page 7: Seminário: Lua

Linguagem Lua - Características

•Lua é Estabelecida e Robusta.–Lua é usada em muitas aplicações Industriais, com ênfase em sistemas embutidos e Jogos.–Linguagem de script mais usada em jogos.–Sólido manual de referencia e muitos livros sobre a linguagem.

•Lua é Rápida–Ótimo Desempenho.–Porções substanciais de aplicações grandes são escritas em Lua.

•Lua é Portátil–Lua é distribuída via pequeno pacote e compila sem modificações em todas as plataformas que tem um compilador C padrão.

7Profa. MSc Ivna Valença

Page 8: Seminário: Lua

Linguagem Lua - Características

•Lua é poderosa (e simples)–Meta-Mecanismos para a implementação de construções.

•Lua é Pequena–Incluir Lua em aplicacoes nao aumenta quase em nada seu tamanho.

•Lua é Livre–Softeware livre de codigo aberto.

•Lua tem Importancia Global–HOPL III, a 3a Conferência da ACM sobre a História das Linguagens de Programação – 2007.

8Profa. MSc Ivna Valença

Page 9: Seminário: Lua

Linguagem Lua - Tipos de Valores

•Tipo nil.–Valor indefinido, todas as variáveis não inicializadas assumem esse valor.

•Tipo boolean.–Representa os valores true ou false.

•Tipo number.–Representa os valores numéricos.

•Tipo string.–Cadeia de caracteres.–São Imutáveis.

9Profa. MSc Ivna Valença

Page 10: Seminário: Lua

Linguagem Lua - Tipos de Valores

•Tipo Function.–Tipo que representa Funções.–Em lua, Funções sao valores de primeira classe.

•Tipo userdata.–Usado para armazenar dados C em variáveis em Lua.

•Tipo thread.–Representa fluxos de execuções independentes, usados para implementar co-rotinas.

•Tipo Table.–Único mecanismo de estruturacao de dados em Lua.–Pode representar Arrays, simbolos, conjuntos, grafos, registros, etc…–Exceto nil.

10Profa. MSc Ivna Valença

Page 11: Seminário: Lua

Linguagem Lua - Variáveis

•Declarando Variáveis.–Para declarar uma variavel em Lua, basta escrever uma letra ou um sublinhado, e para atribuir um valor a ela, basta usar o operador de atribuicao =.

Ex:

•x = 1 -- x recebe 1•b, c = "bola", 3 -- b recebe o valor "bola" e c o valor 3•y -- o valor de y e nil•print (b, y) --> bola nil

•a, b, sobrei = 1, 2•print (a, b, sobrei) --> 1 2 nil

11Profa. MSc Ivna Valença

Page 12: Seminário: Lua

Linguagem Lua – Estruturas de Controles

•If.- A estrutura de controle basica de Lua e o if. Caso a condição do if seja

verdadeira, a parte then e executada, caso contrario, a parte else e executada. Ex:

local x = 44if x > 30 then

print ("maior que 30")elseif x > 20 then

print ("maior que 20")elseif x > 10 then

print ("maior que 10")else

print ("que x pequeno")end

12Profa. MSc Ivna Valença

Page 13: Seminário: Lua

Linguagem Lua – Estruturas de Controles

•While.

- Uma das estruturas de repeticao que Lua Possui, abaixo um exemplo:

local i = 0while i < 10 do

print (i)i = i + 1

end

13Profa. MSc Ivna Valença

Page 14: Seminário: Lua

Conclusão

Coleta de Lixo

Lua realiza gerenciamento automático da memória. Isto significa que você não precisa se preocupar com a alocação de memória para novos objetos nem com a liberação de memória quando os objetos não são mais necessários. Lua gerencia a memória automaticamente executando um coletor de lixo de tempos em tempos para coletar todos os objetos mortos (ou seja, objetos que não são mais acessíveis a partir de Lua). Toda memória usada por Lua está sujeita ao gerenciamento automático de memória: tabelas, userdata, funções, fluxos de execução, cadeias de caracteres, etc.

14Profa. MSc Ivna Valença

Page 15: Seminário: Lua

Ferramentas de desenvolvimento

•LuaDoc: uma ferramenta de documentação para código lua;•LuaEclipse: Uma IDE baseada em Eclipse para Lua;•LuaProfiler: Um medidor de tempos de execução para Lua;•LuaRocks: Um sistema de distribuição e gerenciamento de módulos Lua. Utilizados pela maioria dos projetos aqui apresentados;•RemDebug: Um depurador remoto para Lua;•Shake: Uma maquina de testes simples e transparente para Lua

15Profa. MSc Ivna Valença

Page 16: Seminário: Lua

Conclusão

16Profa. MSc Ivna Valença

Instalando o Plugin LuaEclipse

Page 17: Seminário: Lua

Conclusão

17Profa. MSc Ivna Valença

Page 18: Seminário: Lua

Conclusão

•É uma linguagem pouco conhecida;

•Vantajosa, quando se trata de linguagem de scripts, extensão e descrição de dados;

•Leve, eficiente, dinâmica, fácil, portátil, embutível, poderosa, livre, etc...

18Profa. MSc Ivna Valença

Page 19: Seminário: Lua

Referências

•Aplicações da linguagem Lua: http://www.lua.org/uses.html•Página oficial da Linguagem Lua: http://www.lua.org/•Livro online: http://www.lua.org/pil/•Manual do programador: http://www.lua.org/manual/5.1/•Lua chunks: http://www.lua.org/pil/1.1.html•Artigo que recebeu o primeiro prêmio (categoria tecnologia) no II Prêmio Compaq de Pesquisa e Desenvolvimento em Ciência da Computação em 1997: http://www.lua.org/spe.html•Página geral de papers sobre Lua: http://www.lua.org/papers.html

19Profa. MSc Ivna Valença

Page 20: Seminário: Lua

20Profa. MSc Ivna Valença