SlideShare una empresa de Scribd logo
1 de 20
<Linguagem de programação Lua>
    <Alberto, Danilo e Fernando>
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.
 •



                                  Profa. MSc Ivna Valença                          2
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.



                                Profa. MSc Ivna Valença                    3
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.




                                    Profa. MSc Ivna Valença                           4
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);




                                    Profa. MSc Ivna Valença                               5
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;




                                     Profa. MSc Ivna Valença                             6
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.




                                   Profa. MSc Ivna Valença                          7
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.




                                   Profa. MSc Ivna Valença                   8
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.




                                    Profa. MSc Ivna Valença                        9
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.



                                   Profa. MSc Ivna Valença                       10
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




                                     Profa. MSc Ivna Valença                           11
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 = 44
           if 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

                                    Profa. MSc Ivna Valença                       12
Linguagem Lua – Estruturas de Controles

•While.

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

          local i = 0
            while i < 10 do
              print (i)
              i=i+1
            end




                                 Profa. MSc Ivna Valença                  13
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.



                             Profa. MSc Ivna Valença                 14
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




                            Profa. MSc Ivna Valença                 15
Conclusão

            Instalando o Plugin LuaEclipse




                      Profa. MSc Ivna Valença   16
Conclusão




            Profa. MSc Ivna Valença   17
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
 ...




                                Profa. MSc Ivna Valença                    18
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




                                   Profa. MSc Ivna Valença                         19
Profa. MSc Ivna Valença   20

Más contenido relacionado

La actualidad más candente

Packaging design & innovation in foods and beverages
Packaging design & innovation in foods and beveragesPackaging design & innovation in foods and beverages
Packaging design & innovation in foods and beveragesinewtrition
 
Pag unawa sa kaisapan ng may akda ng Ibong Adarna
Pag unawa sa kaisapan ng may akda ng Ibong AdarnaPag unawa sa kaisapan ng may akda ng Ibong Adarna
Pag unawa sa kaisapan ng may akda ng Ibong AdarnaJulieAnnAnteligandoM
 
caregiving tools and equipment
caregiving tools and equipmentcaregiving tools and equipment
caregiving tools and equipmentLove Joy Amargo
 
Quality of a fresh eggs
Quality of a fresh eggsQuality of a fresh eggs
Quality of a fresh eggsjaserLopez
 
Portfolio-assessment.pptx
Portfolio-assessment.pptxPortfolio-assessment.pptx
Portfolio-assessment.pptxErikSon3
 
Dokyumentaryong pangpelikula
Dokyumentaryong pangpelikulaDokyumentaryong pangpelikula
Dokyumentaryong pangpelikulateng113
 

La actualidad más candente (9)

Anggulo at kuha ng kamera
Anggulo at kuha ng kameraAnggulo at kuha ng kamera
Anggulo at kuha ng kamera
 
Packaging design & innovation in foods and beverages
Packaging design & innovation in foods and beveragesPackaging design & innovation in foods and beverages
Packaging design & innovation in foods and beverages
 
Pag unawa sa kaisapan ng may akda ng Ibong Adarna
Pag unawa sa kaisapan ng may akda ng Ibong AdarnaPag unawa sa kaisapan ng may akda ng Ibong Adarna
Pag unawa sa kaisapan ng may akda ng Ibong Adarna
 
caregiving tools and equipment
caregiving tools and equipmentcaregiving tools and equipment
caregiving tools and equipment
 
Quality of a fresh eggs
Quality of a fresh eggsQuality of a fresh eggs
Quality of a fresh eggs
 
Portfolio-assessment.pptx
Portfolio-assessment.pptxPortfolio-assessment.pptx
Portfolio-assessment.pptx
 
selecting poultry
selecting poultryselecting poultry
selecting poultry
 
Filipino 8.pptx
Filipino 8.pptxFilipino 8.pptx
Filipino 8.pptx
 
Dokyumentaryong pangpelikula
Dokyumentaryong pangpelikulaDokyumentaryong pangpelikula
Dokyumentaryong pangpelikula
 

Destacado

Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScriptIvna Valença
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaSérgio Souza Costa
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
A Evolução de Lua (Pycon Brasil 2008)
A Evolução de Lua (Pycon Brasil  2008)A Evolução de Lua (Pycon Brasil  2008)
A Evolução de Lua (Pycon Brasil 2008)guest55e576
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem luaRafael Sanches
 
Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Thiago Oliveira
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programaçãoLCCIMETRO
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasFelipe J. R. Vieira
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programáticoLCCIMETRO
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 

Destacado (20)

Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScript
 
Seminário: C
Seminário: CSeminário: C
Seminário: C
 
Seminário: COBOL
Seminário: COBOLSeminário: COBOL
Seminário: COBOL
 
Phyton
PhytonPhyton
Phyton
 
Seminário: C#
Seminário: C#Seminário: C#
Seminário: C#
 
Seminário: Lisp
Seminário: LispSeminário: Lisp
Seminário: Lisp
 
Ruby
RubyRuby
Ruby
 
Seminário: C++
Seminário: C++Seminário: C++
Seminário: C++
 
Pascal
PascalPascal
Pascal
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo Lua
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
A Evolução de Lua (Pycon Brasil 2008)
A Evolução de Lua (Pycon Brasil  2008)A Evolução de Lua (Pycon Brasil  2008)
A Evolução de Lua (Pycon Brasil 2008)
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem lua
 
Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051
 
Seminário: Delphi
Seminário: DelphiSeminário: Delphi
Seminário: Delphi
 
Pascal
PascalPascal
Pascal
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programação
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programático
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 

Similar a Seminário: Lua

silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo JavaTI Infnet
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLAlessandro Almeida
 
Curso Corona SDK - Módulo 2
Curso Corona SDK - Módulo 2Curso Corona SDK - Módulo 2
Curso Corona SDK - Módulo 2Luiz Duarte
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionaisRobson Ferreira
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
Arquitectura De Um Linux
Arquitectura De Um LinuxArquitectura De Um Linux
Arquitectura De Um LinuxSAPO Sessions
 
software tipos.ppt
software tipos.pptsoftware tipos.ppt
software tipos.pptLinaKelly3
 
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdf
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdfSO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdf
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdfHigru
 

Similar a Seminário: Lua (20)

silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Ruby
RubyRuby
Ruby
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Engenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UMLEngenharia de Software II - Atividade: Diagramas da UML
Engenharia de Software II - Atividade: Diagramas da UML
 
Curso Corona SDK - Módulo 2
Curso Corona SDK - Módulo 2Curso Corona SDK - Módulo 2
Curso Corona SDK - Módulo 2
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Arquitectura De Um Linux
Arquitectura De Um LinuxArquitectura De Um Linux
Arquitectura De Um Linux
 
software tipos.ppt
software tipos.pptsoftware tipos.ppt
software tipos.ppt
 
INATEL - Matlab introdução
INATEL - Matlab introduçãoINATEL - Matlab introdução
INATEL - Matlab introdução
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Introducao java
Introducao javaIntroducao java
Introducao java
 
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdf
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdfSO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdf
SO - Unifap 2022-1 - Aula 1 - 08-08-2022.pdf
 

Seminário: Lua

  • 1. <Linguagem de programação Lua> <Alberto, Danilo e Fernando>
  • 2. 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. • Profa. MSc Ivna Valença 2
  • 3. 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. Profa. MSc Ivna Valença 3
  • 4. 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. Profa. MSc Ivna Valença 4
  • 5. 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); Profa. MSc Ivna Valença 5
  • 6. 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; Profa. MSc Ivna Valença 6
  • 7. 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. Profa. MSc Ivna Valença 7
  • 8. 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. Profa. MSc Ivna Valença 8
  • 9. 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. Profa. MSc Ivna Valença 9
  • 10. 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. Profa. MSc Ivna Valença 10
  • 11. 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 Profa. MSc Ivna Valença 11
  • 12. 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 = 44 if 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 Profa. MSc Ivna Valença 12
  • 13. Linguagem Lua – Estruturas de Controles •While. - Uma das estruturas de repeticao que Lua Possui, abaixo um exemplo: local i = 0 while i < 10 do print (i) i=i+1 end Profa. MSc Ivna Valença 13
  • 14. 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. Profa. MSc Ivna Valença 14
  • 15. 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 Profa. MSc Ivna Valença 15
  • 16. Conclusão Instalando o Plugin LuaEclipse Profa. MSc Ivna Valença 16
  • 17. Conclusão Profa. MSc Ivna Valença 17
  • 18. 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 ... Profa. MSc Ivna Valença 18
  • 19. 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 Profa. MSc Ivna Valença 19
  • 20. Profa. MSc Ivna Valença 20