SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Descobrindo Lua

       S´rgio Queiroz de Medeiros
        e

              smedeiros@inf.puc-rio.br
                     LabLua




             Campus Party 2008

S´rgio Queiroz de Medeiros
 e                           Descobrindo Lua 1
Lua




      ◮   Uma linguagem de script:
            ◮   Robusta;
            ◮   R´pida;
                 a
            ◮   Port´vel;
                    a
            ◮   Linguagem de extens˜o;
                                   a
            ◮   Pequena;
            ◮   Livre;




                     S´rgio Queiroz de Medeiros
                      e                           Descobrindo Lua 2
Lua




      ◮   Alguma semelhan¸a com outras linguagens de script (Perl,
                         c
          Python, Tcl);
      ◮   Linguagem de descri¸˜o de dados (anterior a XML);
                             ca
      ◮   Linguagem de extens˜o extens´
                              a       ıvel:
            ◮   Enfatiza o desenvolvimento em m´tiplas linguagens
                                               u




                     S´rgio Queiroz de Medeiros
                      e                           Descobrindo Lua 3
Importˆncia
      a




    ◮   ´
        Unica linguagem criada em um pa´ em desenvolvimento a
                                        ıs
        ganhar proje¸˜o mundial;
                    ca
    ◮   De outra forma: unica linguagem relevante que n˜o foi
                         ´                             a
        desenvolvida no eixo EUA/Europa/Jap˜o.
                                             a
          ◮   Jap˜o == Ruby
                 a




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 4
Usos de Lua




    ◮   Especialmente utilizada em jogos;
    ◮   Uma pesquisa informal feita em 2003 pelo site gamedev.net
        apontou Lua como a linguagem de script mais utilizada para
        jogos;




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 5
Lua em Jogos




    ◮   ”It is easy to see why Lua is rapidly becoming the de facto
        standard for game scripting.- Artificial Intelligence for Games,
        Morgan Kaufmann,2006;
    ◮   ”It’s quite possible that game developers will look back at the
        2000s as the decade of Lua- Game Programming Gems 5,
        Charles River Media, 2005.




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 6
Jogos que Usam Lua




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 7
Jogos que Usam Lua




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 8
Jogos que Usam Lua




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 9
Jogos que Usam Lua




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 10
Mais Aplica¸˜es
           co




    ◮       Adobe Lightroom is ’the complete, elegant
            environment for the art and craft of digital
            photography from raw capture to creative output’.
            Over 40% of Adobe Lightroom is written in Lua.
        Mark Hamburg (Adobe Fellow)

                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 11
Mais Aplica¸˜es
           co




              S´rgio Queiroz de Medeiros
               e                           Descobrindo Lua 12
Mais aplica¸˜es
           co




    ◮   Impressoras Olivetti;
    ◮   P´s-produ¸˜o de filmes;
         o       ca
    ◮   Monitoramento remoto;
    ◮   Desenvolvimento Web;




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 13
Raz˜es para usar Lua
   o




    ◮   Portabilidade
    ◮   Simplicidade
    ◮   Pequeno tamanho
    ◮   ”Acoplabilidade”
    ◮   Eficiˆncia
            e




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 14
Portabilidade




     ◮   Lua roda em praticamente todas as plataformas conhecidas:
           ◮   Unix
           ◮   Windows
           ◮   Windows CE
           ◮   Symbian
           ◮   Palm
           ◮   PS2
     ◮   Escrita em ANSI C ∩ ANSI C++




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 15
Simplicidade




    ◮   Somente um tipo num´rio (geralmente double);
                             e
    ◮   Um unico tipo de estruturas de dados:
           ´
          ◮   Tabelas
    ◮   Mecanismos ao inv´s de pol´
                         e        ıticas
          ◮   e.g., orienta¸˜o a objetos;
                           ca




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 16
Pequeno Tamanho




    ◮   Menos de 200k;
    ◮   Distribui¸˜o completa cabe (com folgas) em um disquete;
                 ca
    ◮   N´cleo + Bibliotecas
         u
          ◮   N´cleo com menos de 100k;
               u
          ◮   Bibliotecas independentes (podem ser removidas).




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 17
Acoplabilidade


    ◮   Lua ´ uma biblioteca C;
            e
    ◮   API simples e bem definida:
          ◮   modelo de pilha
    ◮   Biderecional;
    ◮   Acoplada em:
          ◮   C/C++
          ◮   Java
          ◮   Fortran,
          ◮   C#
          ◮   Perl
          ◮   Ruby
          ◮   Ada
          ◮   etc



                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 18
Eficiˆncia
    e




    ◮   Benchmarks independentes mostram Lua como uma das mais
        r´pidas linguagems de script interpretadas com tipagem
         a
        dinˆmica;
           a
    ◮   Lua n˜o ´ r´pida somente em benchmarks.
             a e a




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 19
Lua x Ruby




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 20
Lua x Perl




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 21
Lua x PHP




            S´rgio Queiroz de Medeiros
             e                           Descobrindo Lua 22
Lua x Python




               S´rgio Queiroz de Medeiros
                e                           Descobrindo Lua 23
LuaJIT
    ◮    Compilador Just In Time para Lua;




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 24
Hist´ria de Lua
    o




              S´rgio Queiroz de Medeiros
               e                           Descobrindo Lua 25
Como tudo come¸ou
              c




    ◮   Lua nasceu em 1993, dentro do Tecgraf, na PUC-Rio;
    ◮   Criadores:
          ◮   Roberto Ierusalimschy;
          ◮   Luiz Henrique de Fiqueiredo;
          ◮   Waldemar Celes.




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 26
O Ambiente




    ◮   Tecgraf foi criado em 1987;
    ◮   Laborat´rio de pesquisa e desenvolvimento;
               o
    ◮   Pol´
           ıtica de reserva de mercado para hardware e software;
    ◮   Vigorou de 1977 a 1992;
    ◮   Precisa de alguma coisa? Fa¸a!
                                   c




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 27
Constru¸˜o de Interfaces Gr´ficas
       ca                  a




    ◮   1992: Projeto entre PUC-Rio e PETROBRAS (CENPES);
    ◮   Interfaces gr´ficas para programas de simula¸˜o.
                     a                             ca




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 28
DEL - Linguagem para Especifica¸˜o de Di´logos
                              ca       a




    ◮   Descri¸˜o de dados;
              ca
    ◮   Defini¸˜o de formul´rio:
              ca           a
          ◮   Lista de parˆmetros;
                          a
          ◮   tipo e valores default.




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 29
Limita¸˜es de DEL
      co




    ◮   Estruturas de controle;
    ◮   Predicados;
    ◮   Necessidade de maior poder de express˜o.
                                             a




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 30
PGM - Programa Gr´fico Mestre
                 a
    ◮   1993: projeto com a PETROBRAS;
    ◮   Visualiza¸˜o de perfis geol´gicos (com op¸˜es de
                 ca               o             co
        configura¸˜o);
                 ca




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 31
SOL - Simple Object Language




    ◮   Linguagem para descri¸˜o de objetos;
                             ca
    ◮   Sintaxe inspirada no BibTeX.




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 32
Programa SOL




  type @track {x:number, y:number=23, z}

  type @line {t:@track=@track{x=8}, z:number*}

  -- create an object ’t1’, of type ’track’
  t1 = @track{y=9, x=10, z=quot;hi!quot;}

  l = @line{t=@track{x=t1.y, y=t1.x}, z=[2,3,4]}




               S´rgio Queiroz de Medeiros
                e                           Descobrindo Lua 33
Limita¸˜es de SOL
      co




    ◮   Recursos para constru¸˜o de di´logos;
                             ca       a
    ◮   Mecanismos de programa¸˜o procedural;
                              ca
    ◮   Mecanismos de abstra¸˜o mais poderosos.
                            ca




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 34
DEL + SOL = ?




   ◮   DEL e SOL compartilhavam v´rios problemas;
                                 a
   ◮   Achar uma solu¸˜o comum:
                     ca
         ◮   Roberto Ierusalimschy (PGM)
         ◮   Luiz Henrique (DEL)
         ◮   Waldemar Celes (PGM)




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 35
Precisa-se de uma linguagem




    ◮   Estruturas de controle, sub-rotinas, atribui¸˜o;
                                                    ca
    ◮   Capaz de descrever dados facilmente;
    ◮   Port´vel;
            a
    ◮   Converse amigavelmente com C;
    ◮   Sintaxe f´cil.
                 a




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 36
1993




       ◮   Tcl estava dispon´
                            ıvel;
       ◮   Scheme e Lisp tamb´m;
                             e
       ◮   Python estava nascendo;
       ◮   Vamos fazer nossa pr´pria linguagem! :-)
                               o




                     S´rgio Queiroz de Medeiros
                      e                           Descobrindo Lua 37
Adeus, SOL!

    ◮   SOL estava saindo de cena;




    ◮   um novo nome foi sugerido...
                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 38
Bem-vinda, Lua!




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 39
Um pouco de Lua 1.0




    ◮   Similaridades com SOL

  t1 = @track {x = 10.3, y = 25.9,
               title = quot;depthquot;}




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 40
Um pouco de Lua 1.0

    ◮   Mas bem diferente

  t1 = @track {x = 10.3, y = 25.9,
               title = quot;depthquot;}


  function track (t)
      if not t.x then t.x = 0.0 end
      if type (t.x) ~= quot;numberquot; then
          print (quot;invalid ’x’ valuequot;)
      end
      if type (t.y) ~= quot;numberquot; then
          print (quot;invalid ’y’ valuequot;)
      end
  end

                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 41
Lua 1.0



    ◮   Chamada de 1.0 posteriormente;
    ◮   “The simplest thing that could possibly work”
          ◮   tabelas implementadas via listas!
    ◮   Implementa¸˜o padr˜o:
                  ca      a
          ◮   yacc + lex
          ◮   m´quina de pilha
                a
    ◮   Menos de 6000 linhas de c´digo C.
                                 o




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 42
Lua 1.0




    ◮   Expectativas: solucionar problemas com PGM e DEL
          ◮   dispon´ para uso em outros projetos do Tecgraf
                    ıvel
    ◮   Correspondeu `s expectativas:
                     a
          ◮   DEL e PGM usaram Lua com sucesso
          ◮   PGM ainda est´ sendo usado
                           a
    ◮   Foi um grande sucesso no Tecgraf




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 43
Usando Lua adoidado




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 44
Lua 1.1




    ◮   1994: primeira vers˜o lan¸ada publicamente;
                           a     c
    ◮   V´rios usu´rios reais;
         a        a
    ◮   Manual de referˆncia;
                       e
    ◮   Defini¸˜o e documenta¸˜o da API com C;
             ca             ca
    ◮   Licen¸as para uso comercial negociadas.
             c




                  S´rgio Queiroz de Medeiros
                   e                           Descobrindo Lua 45
Ganhando o Mundo



    ◮   Artigo publicado em 1996 na revista Dr. Dobb’s;
    ◮   Bret Mogilefsky (LucasArts);
    ◮   1998: lan¸amento de Grim Fandango;
                 c
            A tremendous amount of the game was written in
            Lua
    ◮   Mesa redonda na Game Developer’s Conferece (principal
        evento para desenvolvedores de jogos).




                 S´rgio Queiroz de Medeiros
                  e                           Descobrindo Lua 46
lua-l




        ◮   1997: cria¸˜o da lista de discuss˜o de Lua;
                      ca                     a
        ◮   Principal f´rum da linguagem;
                       o
        ◮   Menos de 10% dos usu´rios s˜o do Brasil;
                                a      a
        ◮   Mais de 40000 mil mensagens.




                      S´rgio Queiroz de Medeiros
                       e                           Descobrindo Lua 47
Linhas de C´digo com o Tempo
           o




             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 48
Evolu¸˜o
     ca




    ◮   ˆ
        Enfase nos requisitos originais:
          ◮   ”minimalismo pragm´tico”
                                a
          ◮   mecanismos mais gerais
          ◮   ˆnfase em fun¸˜es
              e            co




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 49
Lua atualmente




    ◮   Site com 4.000 visitas por dia
          ◮   de mais de 100 pa´
                               ıses
          ◮   14.000 downloads por mˆs
                                    e
    ◮   Lista com mais de 1.400 participantes
    ◮   Compromisso com estabilidade
          ◮   Lua 4.0 ficou mais de dois anos sem altera¸˜es
                                                       co
          ◮   Lua 5.0 foi lan¸ada em mar¸o de 2003
                             c          c




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 50
Lua Atualmente




    ◮   Licen¸a atual: MIT
             c
          ◮   uso livre, n˜o ”viral”
                          a
    ◮   Modelo de desenvolvimento centralizado
    ◮   Participa¸˜o da comunidade:
                 ca
          ◮   lista
          ◮   patches para vers˜es alternativas
                               o
          ◮   LuaForge




                    S´rgio Queiroz de Medeiros
                     e                           Descobrindo Lua 51
Lua Atualmente




    ◮   LuaWorkshop:
          ◮   Encontro da comunidade Lua
    ◮   2005: Estados Unidos;
    ◮   2006: Holanda;
    ◮   2008: Washinghton D.C., Estados Unidos.




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 52
Lua Atualmente




    ◮   Fiel aos requisitos originais:
          ◮   Simplicidade;
          ◮   Portabilidade;
          ◮   Extensibilidade;
          ◮   Pequeno tamanho.
    ◮   Entre as 20 linguagens mais populares (segundo TIOBE).




                   S´rgio Queiroz de Medeiros
                    e                           Descobrindo Lua 53
Popularidade




               S´rgio Queiroz de Medeiros
                e                           Descobrindo Lua 54
Livros




   Programming in Lua, 2006                  Lua 5.1 Reference Manual, 2006




                S´rgio Queiroz de Medeiros
                 e                           Descobrindo Lua 55
Livros




   Beginning Programming, 2007               Game Development With Lua,
   2005




                S´rgio Queiroz de Medeiros
                 e                           Descobrindo Lua 56
Livros




         S´rgio Queiroz de Medeiros
          e                           Descobrindo Lua 57
Descobrindo mais




             http://www.lua.org/


             S´rgio Queiroz de Medeiros
              e                           Descobrindo Lua 58

Weitere ähnliche Inhalte

Andere mochten auch

Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Ismar Silveira
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
 
Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04MatheusRpz
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Introdução à Computação Aula 01 - Apresentação
Introdução à Computação  Aula 01 - ApresentaçãoIntrodução à Computação  Aula 01 - Apresentação
Introdução à Computação Aula 01 - ApresentaçãoLeinylson Fontinele
 
Introducao ambiente windows
Introducao ambiente windowsIntroducao ambiente windows
Introducao ambiente windowsMatheusRpz
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1Ismar Silveira
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasLeinylson Fontinele
 
Arquitetura computadores cor_capa_ficha_20110126.pdf
Arquitetura computadores cor_capa_ficha_20110126.pdfArquitetura computadores cor_capa_ficha_20110126.pdf
Arquitetura computadores cor_capa_ficha_20110126.pdfMatheusRpz
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 
Fundamentos de Sistemas de Informacao - Aula 1
Fundamentos de Sistemas de Informacao - Aula 1Fundamentos de Sistemas de Informacao - Aula 1
Fundamentos de Sistemas de Informacao - Aula 1Ismar Silveira
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...Leinylson Fontinele
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 

Andere mochten auch (20)

E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04Apostila sistema operacional cor capa ficha 2011 02 04
Apostila sistema operacional cor capa ficha 2011 02 04
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Introdução à Computação Aula 01 - Apresentação
Introdução à Computação  Aula 01 - ApresentaçãoIntrodução à Computação  Aula 01 - Apresentação
Introdução à Computação Aula 01 - Apresentação
 
Introducao ambiente windows
Introducao ambiente windowsIntroducao ambiente windows
Introducao ambiente windows
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1
 
Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Arquitetura computadores cor_capa_ficha_20110126.pdf
Arquitetura computadores cor_capa_ficha_20110126.pdfArquitetura computadores cor_capa_ficha_20110126.pdf
Arquitetura computadores cor_capa_ficha_20110126.pdf
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
Fundamentos de Sistemas de Informacao - Aula 1
Fundamentos de Sistemas de Informacao - Aula 1Fundamentos de Sistemas de Informacao - Aula 1
Fundamentos de Sistemas de Informacao - Aula 1
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...
Introdução à Computação Aula 04 - INTRODUÇÃO A CIÊNCIA DA COMPUTAÇÃO (Hardwar...
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 

Mehr von David Ruiz

Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...David Ruiz
 
Plataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesPlataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesDavid Ruiz
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Internet of Things
Internet of ThingsInternet of Things
Internet of ThingsDavid Ruiz
 
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoArduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoDavid Ruiz
 
Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013David Ruiz
 
Workshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTWorkshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTDavid Ruiz
 
Workshop de Firefox OS
Workshop de Firefox OSWorkshop de Firefox OS
Workshop de Firefox OSDavid Ruiz
 
Desenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDesenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDavid Ruiz
 
Introdução ao Firefox OS
Introdução ao Firefox OSIntrodução ao Firefox OS
Introdução ao Firefox OSDavid Ruiz
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the ServerDavid Ruiz
 
livre.fm - keynote
livre.fm - keynotelivre.fm - keynote
livre.fm - keynoteDavid Ruiz
 
GED - A caminho do conhecimento
GED - A caminho do conhecimentoGED - A caminho do conhecimento
GED - A caminho do conhecimentoDavid Ruiz
 
imax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogosimax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de JogosDavid Ruiz
 
Modelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosModelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosDavid Ruiz
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?David Ruiz
 
Trabalhe na Abril Digital
Trabalhe na Abril DigitalTrabalhe na Abril Digital
Trabalhe na Abril DigitalDavid Ruiz
 
Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3David Ruiz
 
Tendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftTendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftDavid Ruiz
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 

Mehr von David Ruiz (20)

Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
 
Plataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesPlataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando Conexões
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoArduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
 
Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013
 
Workshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTWorkshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoT
 
Workshop de Firefox OS
Workshop de Firefox OSWorkshop de Firefox OS
Workshop de Firefox OS
 
Desenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDesenvolvendo para Firefox OS
Desenvolvendo para Firefox OS
 
Introdução ao Firefox OS
Introdução ao Firefox OSIntrodução ao Firefox OS
Introdução ao Firefox OS
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Server
 
livre.fm - keynote
livre.fm - keynotelivre.fm - keynote
livre.fm - keynote
 
GED - A caminho do conhecimento
GED - A caminho do conhecimentoGED - A caminho do conhecimento
GED - A caminho do conhecimento
 
imax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogosimax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogos
 
Modelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosModelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogos
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?
 
Trabalhe na Abril Digital
Trabalhe na Abril DigitalTrabalhe na Abril Digital
Trabalhe na Abril Digital
 
Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3
 
Tendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftTendências de Search Egines - Microsoft
Tendências de Search Egines - Microsoft
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 

Lua para Jogos

  • 1. Descobrindo Lua S´rgio Queiroz de Medeiros e smedeiros@inf.puc-rio.br LabLua Campus Party 2008 S´rgio Queiroz de Medeiros e Descobrindo Lua 1
  • 2. Lua ◮ Uma linguagem de script: ◮ Robusta; ◮ R´pida; a ◮ Port´vel; a ◮ Linguagem de extens˜o; a ◮ Pequena; ◮ Livre; S´rgio Queiroz de Medeiros e Descobrindo Lua 2
  • 3. Lua ◮ Alguma semelhan¸a com outras linguagens de script (Perl, c Python, Tcl); ◮ Linguagem de descri¸˜o de dados (anterior a XML); ca ◮ Linguagem de extens˜o extens´ a ıvel: ◮ Enfatiza o desenvolvimento em m´tiplas linguagens u S´rgio Queiroz de Medeiros e Descobrindo Lua 3
  • 4. Importˆncia a ◮ ´ Unica linguagem criada em um pa´ em desenvolvimento a ıs ganhar proje¸˜o mundial; ca ◮ De outra forma: unica linguagem relevante que n˜o foi ´ a desenvolvida no eixo EUA/Europa/Jap˜o. a ◮ Jap˜o == Ruby a S´rgio Queiroz de Medeiros e Descobrindo Lua 4
  • 5. Usos de Lua ◮ Especialmente utilizada em jogos; ◮ Uma pesquisa informal feita em 2003 pelo site gamedev.net apontou Lua como a linguagem de script mais utilizada para jogos; S´rgio Queiroz de Medeiros e Descobrindo Lua 5
  • 6. Lua em Jogos ◮ ”It is easy to see why Lua is rapidly becoming the de facto standard for game scripting.- Artificial Intelligence for Games, Morgan Kaufmann,2006; ◮ ”It’s quite possible that game developers will look back at the 2000s as the decade of Lua- Game Programming Gems 5, Charles River Media, 2005. S´rgio Queiroz de Medeiros e Descobrindo Lua 6
  • 7. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 7
  • 8. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 8
  • 9. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 9
  • 10. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 10
  • 11. Mais Aplica¸˜es co ◮ Adobe Lightroom is ’the complete, elegant environment for the art and craft of digital photography from raw capture to creative output’. Over 40% of Adobe Lightroom is written in Lua. Mark Hamburg (Adobe Fellow) S´rgio Queiroz de Medeiros e Descobrindo Lua 11
  • 12. Mais Aplica¸˜es co S´rgio Queiroz de Medeiros e Descobrindo Lua 12
  • 13. Mais aplica¸˜es co ◮ Impressoras Olivetti; ◮ P´s-produ¸˜o de filmes; o ca ◮ Monitoramento remoto; ◮ Desenvolvimento Web; S´rgio Queiroz de Medeiros e Descobrindo Lua 13
  • 14. Raz˜es para usar Lua o ◮ Portabilidade ◮ Simplicidade ◮ Pequeno tamanho ◮ ”Acoplabilidade” ◮ Eficiˆncia e S´rgio Queiroz de Medeiros e Descobrindo Lua 14
  • 15. Portabilidade ◮ Lua roda em praticamente todas as plataformas conhecidas: ◮ Unix ◮ Windows ◮ Windows CE ◮ Symbian ◮ Palm ◮ PS2 ◮ Escrita em ANSI C ∩ ANSI C++ S´rgio Queiroz de Medeiros e Descobrindo Lua 15
  • 16. Simplicidade ◮ Somente um tipo num´rio (geralmente double); e ◮ Um unico tipo de estruturas de dados: ´ ◮ Tabelas ◮ Mecanismos ao inv´s de pol´ e ıticas ◮ e.g., orienta¸˜o a objetos; ca S´rgio Queiroz de Medeiros e Descobrindo Lua 16
  • 17. Pequeno Tamanho ◮ Menos de 200k; ◮ Distribui¸˜o completa cabe (com folgas) em um disquete; ca ◮ N´cleo + Bibliotecas u ◮ N´cleo com menos de 100k; u ◮ Bibliotecas independentes (podem ser removidas). S´rgio Queiroz de Medeiros e Descobrindo Lua 17
  • 18. Acoplabilidade ◮ Lua ´ uma biblioteca C; e ◮ API simples e bem definida: ◮ modelo de pilha ◮ Biderecional; ◮ Acoplada em: ◮ C/C++ ◮ Java ◮ Fortran, ◮ C# ◮ Perl ◮ Ruby ◮ Ada ◮ etc S´rgio Queiroz de Medeiros e Descobrindo Lua 18
  • 19. Eficiˆncia e ◮ Benchmarks independentes mostram Lua como uma das mais r´pidas linguagems de script interpretadas com tipagem a dinˆmica; a ◮ Lua n˜o ´ r´pida somente em benchmarks. a e a S´rgio Queiroz de Medeiros e Descobrindo Lua 19
  • 20. Lua x Ruby S´rgio Queiroz de Medeiros e Descobrindo Lua 20
  • 21. Lua x Perl S´rgio Queiroz de Medeiros e Descobrindo Lua 21
  • 22. Lua x PHP S´rgio Queiroz de Medeiros e Descobrindo Lua 22
  • 23. Lua x Python S´rgio Queiroz de Medeiros e Descobrindo Lua 23
  • 24. LuaJIT ◮ Compilador Just In Time para Lua; S´rgio Queiroz de Medeiros e Descobrindo Lua 24
  • 25. Hist´ria de Lua o S´rgio Queiroz de Medeiros e Descobrindo Lua 25
  • 26. Como tudo come¸ou c ◮ Lua nasceu em 1993, dentro do Tecgraf, na PUC-Rio; ◮ Criadores: ◮ Roberto Ierusalimschy; ◮ Luiz Henrique de Fiqueiredo; ◮ Waldemar Celes. S´rgio Queiroz de Medeiros e Descobrindo Lua 26
  • 27. O Ambiente ◮ Tecgraf foi criado em 1987; ◮ Laborat´rio de pesquisa e desenvolvimento; o ◮ Pol´ ıtica de reserva de mercado para hardware e software; ◮ Vigorou de 1977 a 1992; ◮ Precisa de alguma coisa? Fa¸a! c S´rgio Queiroz de Medeiros e Descobrindo Lua 27
  • 28. Constru¸˜o de Interfaces Gr´ficas ca a ◮ 1992: Projeto entre PUC-Rio e PETROBRAS (CENPES); ◮ Interfaces gr´ficas para programas de simula¸˜o. a ca S´rgio Queiroz de Medeiros e Descobrindo Lua 28
  • 29. DEL - Linguagem para Especifica¸˜o de Di´logos ca a ◮ Descri¸˜o de dados; ca ◮ Defini¸˜o de formul´rio: ca a ◮ Lista de parˆmetros; a ◮ tipo e valores default. S´rgio Queiroz de Medeiros e Descobrindo Lua 29
  • 30. Limita¸˜es de DEL co ◮ Estruturas de controle; ◮ Predicados; ◮ Necessidade de maior poder de express˜o. a S´rgio Queiroz de Medeiros e Descobrindo Lua 30
  • 31. PGM - Programa Gr´fico Mestre a ◮ 1993: projeto com a PETROBRAS; ◮ Visualiza¸˜o de perfis geol´gicos (com op¸˜es de ca o co configura¸˜o); ca S´rgio Queiroz de Medeiros e Descobrindo Lua 31
  • 32. SOL - Simple Object Language ◮ Linguagem para descri¸˜o de objetos; ca ◮ Sintaxe inspirada no BibTeX. S´rgio Queiroz de Medeiros e Descobrindo Lua 32
  • 33. Programa SOL type @track {x:number, y:number=23, z} type @line {t:@track=@track{x=8}, z:number*} -- create an object ’t1’, of type ’track’ t1 = @track{y=9, x=10, z=quot;hi!quot;} l = @line{t=@track{x=t1.y, y=t1.x}, z=[2,3,4]} S´rgio Queiroz de Medeiros e Descobrindo Lua 33
  • 34. Limita¸˜es de SOL co ◮ Recursos para constru¸˜o de di´logos; ca a ◮ Mecanismos de programa¸˜o procedural; ca ◮ Mecanismos de abstra¸˜o mais poderosos. ca S´rgio Queiroz de Medeiros e Descobrindo Lua 34
  • 35. DEL + SOL = ? ◮ DEL e SOL compartilhavam v´rios problemas; a ◮ Achar uma solu¸˜o comum: ca ◮ Roberto Ierusalimschy (PGM) ◮ Luiz Henrique (DEL) ◮ Waldemar Celes (PGM) S´rgio Queiroz de Medeiros e Descobrindo Lua 35
  • 36. Precisa-se de uma linguagem ◮ Estruturas de controle, sub-rotinas, atribui¸˜o; ca ◮ Capaz de descrever dados facilmente; ◮ Port´vel; a ◮ Converse amigavelmente com C; ◮ Sintaxe f´cil. a S´rgio Queiroz de Medeiros e Descobrindo Lua 36
  • 37. 1993 ◮ Tcl estava dispon´ ıvel; ◮ Scheme e Lisp tamb´m; e ◮ Python estava nascendo; ◮ Vamos fazer nossa pr´pria linguagem! :-) o S´rgio Queiroz de Medeiros e Descobrindo Lua 37
  • 38. Adeus, SOL! ◮ SOL estava saindo de cena; ◮ um novo nome foi sugerido... S´rgio Queiroz de Medeiros e Descobrindo Lua 38
  • 39. Bem-vinda, Lua! S´rgio Queiroz de Medeiros e Descobrindo Lua 39
  • 40. Um pouco de Lua 1.0 ◮ Similaridades com SOL t1 = @track {x = 10.3, y = 25.9, title = quot;depthquot;} S´rgio Queiroz de Medeiros e Descobrindo Lua 40
  • 41. Um pouco de Lua 1.0 ◮ Mas bem diferente t1 = @track {x = 10.3, y = 25.9, title = quot;depthquot;} function track (t) if not t.x then t.x = 0.0 end if type (t.x) ~= quot;numberquot; then print (quot;invalid ’x’ valuequot;) end if type (t.y) ~= quot;numberquot; then print (quot;invalid ’y’ valuequot;) end end S´rgio Queiroz de Medeiros e Descobrindo Lua 41
  • 42. Lua 1.0 ◮ Chamada de 1.0 posteriormente; ◮ “The simplest thing that could possibly work” ◮ tabelas implementadas via listas! ◮ Implementa¸˜o padr˜o: ca a ◮ yacc + lex ◮ m´quina de pilha a ◮ Menos de 6000 linhas de c´digo C. o S´rgio Queiroz de Medeiros e Descobrindo Lua 42
  • 43. Lua 1.0 ◮ Expectativas: solucionar problemas com PGM e DEL ◮ dispon´ para uso em outros projetos do Tecgraf ıvel ◮ Correspondeu `s expectativas: a ◮ DEL e PGM usaram Lua com sucesso ◮ PGM ainda est´ sendo usado a ◮ Foi um grande sucesso no Tecgraf S´rgio Queiroz de Medeiros e Descobrindo Lua 43
  • 44. Usando Lua adoidado S´rgio Queiroz de Medeiros e Descobrindo Lua 44
  • 45. Lua 1.1 ◮ 1994: primeira vers˜o lan¸ada publicamente; a c ◮ V´rios usu´rios reais; a a ◮ Manual de referˆncia; e ◮ Defini¸˜o e documenta¸˜o da API com C; ca ca ◮ Licen¸as para uso comercial negociadas. c S´rgio Queiroz de Medeiros e Descobrindo Lua 45
  • 46. Ganhando o Mundo ◮ Artigo publicado em 1996 na revista Dr. Dobb’s; ◮ Bret Mogilefsky (LucasArts); ◮ 1998: lan¸amento de Grim Fandango; c A tremendous amount of the game was written in Lua ◮ Mesa redonda na Game Developer’s Conferece (principal evento para desenvolvedores de jogos). S´rgio Queiroz de Medeiros e Descobrindo Lua 46
  • 47. lua-l ◮ 1997: cria¸˜o da lista de discuss˜o de Lua; ca a ◮ Principal f´rum da linguagem; o ◮ Menos de 10% dos usu´rios s˜o do Brasil; a a ◮ Mais de 40000 mil mensagens. S´rgio Queiroz de Medeiros e Descobrindo Lua 47
  • 48. Linhas de C´digo com o Tempo o S´rgio Queiroz de Medeiros e Descobrindo Lua 48
  • 49. Evolu¸˜o ca ◮ ˆ Enfase nos requisitos originais: ◮ ”minimalismo pragm´tico” a ◮ mecanismos mais gerais ◮ ˆnfase em fun¸˜es e co S´rgio Queiroz de Medeiros e Descobrindo Lua 49
  • 50. Lua atualmente ◮ Site com 4.000 visitas por dia ◮ de mais de 100 pa´ ıses ◮ 14.000 downloads por mˆs e ◮ Lista com mais de 1.400 participantes ◮ Compromisso com estabilidade ◮ Lua 4.0 ficou mais de dois anos sem altera¸˜es co ◮ Lua 5.0 foi lan¸ada em mar¸o de 2003 c c S´rgio Queiroz de Medeiros e Descobrindo Lua 50
  • 51. Lua Atualmente ◮ Licen¸a atual: MIT c ◮ uso livre, n˜o ”viral” a ◮ Modelo de desenvolvimento centralizado ◮ Participa¸˜o da comunidade: ca ◮ lista ◮ patches para vers˜es alternativas o ◮ LuaForge S´rgio Queiroz de Medeiros e Descobrindo Lua 51
  • 52. Lua Atualmente ◮ LuaWorkshop: ◮ Encontro da comunidade Lua ◮ 2005: Estados Unidos; ◮ 2006: Holanda; ◮ 2008: Washinghton D.C., Estados Unidos. S´rgio Queiroz de Medeiros e Descobrindo Lua 52
  • 53. Lua Atualmente ◮ Fiel aos requisitos originais: ◮ Simplicidade; ◮ Portabilidade; ◮ Extensibilidade; ◮ Pequeno tamanho. ◮ Entre as 20 linguagens mais populares (segundo TIOBE). S´rgio Queiroz de Medeiros e Descobrindo Lua 53
  • 54. Popularidade S´rgio Queiroz de Medeiros e Descobrindo Lua 54
  • 55. Livros Programming in Lua, 2006 Lua 5.1 Reference Manual, 2006 S´rgio Queiroz de Medeiros e Descobrindo Lua 55
  • 56. Livros Beginning Programming, 2007 Game Development With Lua, 2005 S´rgio Queiroz de Medeiros e Descobrindo Lua 56
  • 57. Livros S´rgio Queiroz de Medeiros e Descobrindo Lua 57
  • 58. Descobrindo mais http://www.lua.org/ S´rgio Queiroz de Medeiros e Descobrindo Lua 58