SlideShare a Scribd company logo
1 of 52
Download to read offline
A Evolução de Lua

Roberto Ierusalimschy
Lua

•   O que
•   Onde
•   Por que
•   Como
O Que é Lua

• Mais uma linguagem dinâmica
  • alguma similariedade com Perl, Python, Tcl
• Uma linguagem de descrição de dados
  • anterior a XML
• Ênfase em scripting
  •     linguagem dinâmica!
  • ênfase em comunicação inter-linguagens
  • enfatiza desenvolvimento em múltiplas
    linguagens
Onde Lua é Desenvolvida

• Desenvolvida na PUC-Rio
  • desde 1993
• Início modesto, para uso interno
  • expansão lenta e gradual
• quot;Comitêquot; de três pessoas
  • Roberto Ierusalimschy, Luiz H. de
    Figueiredo, Waldemar Celes
Onde Lua é Usada

• Todo tipo de aplicação
• Nicho em jogos
quot;63% of the main Lightroom-team authored
     code is Luaquot;, Troy Gaul, Adobe
• Ginga
  • middleware padrão brasileiro para TV digital
• Wireshark
  • analisador de protocolos
• Snort
  • intrusion detection and prevention system
• nmap
  • rastreador de redes para segurança
• Eyeon's Digital Fusion
  • pós-produção de filmes
• E muitas outras...
Lua em Jogos

• quot;It is easy to see why Lua is rapidly
  becoming the de facto standard for
  game scripting.quot; Artificial Intelligence for
  Games, Morgan Kaufmann, 2006.
• quot;It's quite possible that game developers
  will look back at the 2000s as the
  decade of Luaquot;., Game Programming
  Gems 5, Charles River Media, 2005.
Alguns Jogos que usam Lua
Alguns Jogos que usam Lua
Alguns Jogos que usam Lua
Alguns Jogos que usam Lua
Alguns Jogos que usam Lua
Porque Lua

•   Portabilidade
•   Simplicidade
•   Pequeno tamanho
•   “Acoplabilidade” (embedding)
    • scripting
• Eficiência
Portabilidade

• Roda em praticamente todas as
  plataformas que já ouvimos falar
  • Unix, Windows, Windows CE, Symbian,
    BREW, hardware dedicado, Palm, PSP, etc.
• Escrita em ANSI C ∩ ANSI C++
  • evita #ifdefs
  • evita pontos obscuros do padrão
• Núcleo é praticamente uma aplicação
  free-standing
Simplicidade

• Um único tipo de estrutura de dados
  • tabelas
• Um único tipo numérico
  • tipicamente double
• Mecanismos ao invés de políticas
  • e.g., orientação a objetos
Pequeno Tamanho

• Menos de 200K
• Distribuição completa (tar.gz) com
  menos de 210K
• Núcleo + bibliotecas
  • interface bem definida
  • núcleo com menos de 100K
  • bibliotecas independentes (e removíveis)
Acoplabilidade

• Lua é uma biblioteca C
• API simples e bem definida
  • tipos simples
  • operações primitivas
  • modelo de pilha
• Bi-direcional!
• Acoplada em C/C++, Java, Fortran, C#,
  Perl, Ruby, Ada, etc.
Eficiência

• Benchmarks independentes mostram
  Lua entre as mais rápidas no grupo de
  linguagens interpretadas com tipagem
  dinâmica
• Mistura de algumas técnicas especiais e
  simplicidade
O Início de Lua
Interfaces Gráficas
• 1992: Tecgraf - projeto entre PUC e
  PETROBRAS (CENPES)
  • Construção de interfaces gráficas para
    diversos programas de simulação
DEL - Linguagem para
Especificação de Diálogos
• Definição de formulário
  • lista de parâmetros
  • tipos e valores default



                 :e gasket quot;gasket propertiesquot;
            d    mat     s              # material
                 d       f      0       # distance
                 y       f      0       # settlement stress
                 t       i      1       # facing type
Limitações de DEL

• Tomada de decisão
• Predicados
• Necessidade de maior poder de
  expressão
Programa Gráfico Mestre
• 1993: Projeto com a PETROBRAS
  • programa para visualização de perfis geológicos
  • configurável
SOL
         Simple Object Language
 • Linguagem para descrição de objetos
   • sintaxe inspirada no BibTeX


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]}
Limitações de SOL


• Recursos para construção de diálogos
• Mecanismos de programação
  procedural
• Mecanismos de abstração mais
  poderosos
1993

• DEL e SOL tinham vários problemas em
  comum
• Roberto Ierusalimschy (PGM), Luiz
  Henrique de Figueiredo (DEL) e
  Waldemar Celes (PGM) se juntaram
  para achar uma solução comum a seus
  problemas...
O Que Precisávamos?

• Uma quot;linguagem de configuração
  genéricaquot;
• Uma linguagem quot;completaquot;
• Facilmente acoplável
• Portátil
• o mais simples possível
• sintaxe não intimidante
  • para usuários finais (engenheiros, geólogos,
   etc.)
Como estávamos largando Sol,




um amigo sugeriu um novo nome...
...e surgiu Lua
Como era Lua 1.0?

• Não muito diferente de SOL...
  t1 = @track{x = 10.3, y = 25.9,
              title = quot;depthquot;}
Como era 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
Lua 1.0
• Implementada como uma biblioteca
• Chamada de 1.0 posteriormente
• quot;The simplest thing that could possibly
  workquot;
  • tabelas implementadas via listas!
• Implementação padrão
  • pré-compilador com yacc/lex
  • opcodes para uma máquina virtual baseada
    em pilha
• Menos de 6000 linhas de código C
Lua 1.0

• Expectativas: solucionar nossos
  problemas com PGM e DEL
  • poderia ser usada em outros projetos do
    Tecgraf
• Satisfez nossas espectativas
  • tanto DEL quanto PGM usaram Lua com
    sucesso
  • PGM ainda em uso hoje
• Foi um grande sucesso no Tecgraf
Logo, vários projetos no Tecgraf
estavam usando Lua
Lua 1.1

•   Já tinhamos vários quot;usuários reaisquot;
•   Novos usuários trazem novas demandas
•   Manual de referência
•   API com C bem definida e bem
    documentada
Lua 2

• De Lua 2.1 (02/1995) até 2.5 (11/1996)
• Suporte para OO
  • delegação
• Casamento de padrões
  • biblioteca própria
• Interface para depuração
Exposição Internacional

• anúncio em grupos Usenet
• primeira página na Web em 1995
  • http://www.inf.puc-rio.br/~roberto/lua
• primeiros contatos por e-mail com
  usuários remotos
• em 1997: lista de discussões
  • permitir usuários responderem perguntas
  • final de 97: mais de 100 assinantes:
    deviamos tentar um novo grupo?
Exposição Internacional

• junho 1996 - artigo na S:P&E
  • R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
    Lua - an extensible extension language, Software:
    Practice & Experience 26(6):635-652, 1996.
• dezembro 1996 - artigo na Dr. Dobb's
  • L. H. de Figueiredo, R. Ierusalimschy, W. Celes,
    Lua: an extensible embedded language, Dr.
    Dobb's Journal 21(12):26-33, 1996.
Lua em Jogos (o início)
From: Bret Mogilefsky <mogul@lucasarts.com>
To: quot;'lua@icad.puc-rio.br'quot; <lua@icad.puc-rio.br>
Subject: LUA rocks! Question, too.
Date: Thu, 9 Jan 1997 13:21:41 -0800

Hi there...

After reading the Dr. Dobbs article on Lua I was very eager to check it
out, and so far it has exceeded my expectations in every way! It's
elegance and simplicity astound me. Congratulations on developing such
a well-thought out language.

Some background: I am working on an adventure game for the LucasArts
Entertainment Co., and I want to try replacing our older adventure game
scripting language, SCUMM, with Lua.
Lua 3

• De Lua 3.0 (07/1997) até Lua 3.2
  (07/1999)
• Melhor suporte a funções
  • funções anônimas, upvalues
• Grande reorganização interna
Lua 4

• Uma única versão: Lua 4.0, 11/2000 até
  04/2003
• Nova API com C
  • baseada em pilha
• Múltiplos estados
• Todas as bibliotecas implementadas via
  API oficial
Lua 5

• Lua 5.0 (04/2003) e 5.1 (02/2006)
• quot;Maturidadequot; da linguagem
    • livro texto
•   Co-rotinas
•   Sistema de módulos
•   Funções anônimas com escopo léxico
•   Máquina virtual de registradores
•   Coleta de lixo incremental
Crescimento em Linhas de
Código
• aproximação para complexidade...
                                                   5.1


                                             5.0


                                 3.2   4.0
                          3.0
                    2.4          3.1
              2.1          2.5
        1.0
                    2.2
              1.1
Evolução

• Ênfase nos requisitos originais
  • quot;minimalismo pragmáticoquot;
  • implementação quot;free-standingquot;
  • mecanismos mais gerais
  • ênfase em funções
• Aspectos não funcionais
  • documentação, robustez, mensagens de
    erros, ...
Lua Atualmente

• Site com >4.000 visitas por dia
  • de mais de 100 países
  • >14.000 downloads por mês
• Compromissos fortes com estabilidade
  • Lua 4.0 ficou mais de dois anos sem
    alterações
  • Lua 5.1 lançada em fevereiro 2006
Lua Atualmente

• Licença atual: MIT
  • uso livre, não “viral”
• Modelo de Desenvolvimento centralizado
  • importante no caso de Lua, onde tamanho
    é fundamental (evitar efeito comitê)
• mas com grande participação da
  comunidade
  • lista, versões variantes, site de usuários
Lua Atualmente

• Requisitos originais mantidos
  • simplicidade, portabilidade, extensibilidade,
    pequeno tamanho
• Única linguagem desenvolvida fora do
  eixo EUA/Europa/Japão a ser adotada
  mundialmente
  • entre as 20 mais populares no índice TIOBE
  • Ruby é (a única) do Japão
Livros
                            Programming in Lua, 2nd edition
  Programmieren mit Lua     Lua.org, 2006
  Open Source Press, 2006




Insight, 2007                                 Lua             2
                                              PHEI, 2008
Livros
               Beginning Lua Programming
               Wrox, 2007

                      Lua 5.1 Reference Manual
                      Lua.org, 2006




Game Development with Lua
Charles River Media, 2005            Lua                 (   )
                                 Softbank Creative, 2007
Para Saber Mais...




           http://www.lua.org/

More Related Content

Similar to A Evolução da Linguagem Lua

Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxJorge Pereira
 
Arquitectura De Um Linux
Arquitectura De Um LinuxArquitectura De Um Linux
Arquitectura De Um LinuxSAPO Sessions
 
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
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
ESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxJorge Pereira
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?David Ruiz
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
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
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducaojonatasoliveira
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksLinguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksRodrigo Wanderley de Melo Cardoso
 

Similar to A Evolução da Linguagem Lua (20)

Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de Software
 
Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no Linux
 
Arquitectura De Um Linux
Arquitectura De Um LinuxArquitectura De Um Linux
Arquitectura De Um Linux
 
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
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
ESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no LinuxESLPE 2008 - Desenvolvendo aplicações no Linux
ESLPE 2008 - Desenvolvendo aplicações no Linux
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
apostila de dev.pdf
apostila de dev.pdfapostila de dev.pdf
apostila de dev.pdf
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
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
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
Apostila de devc++ novo
Apostila de devc++ novoApostila de devc++ novo
Apostila de devc++ novo
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksLinguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
 

A Evolução da Linguagem Lua

  • 1. A Evolução de Lua Roberto Ierusalimschy
  • 2. Lua • O que • Onde • Por que • Como
  • 3. O Que é Lua • Mais uma linguagem dinâmica • alguma similariedade com Perl, Python, Tcl • Uma linguagem de descrição de dados • anterior a XML • Ênfase em scripting • linguagem dinâmica! • ênfase em comunicação inter-linguagens • enfatiza desenvolvimento em múltiplas linguagens
  • 4. Onde Lua é Desenvolvida • Desenvolvida na PUC-Rio • desde 1993 • Início modesto, para uso interno • expansão lenta e gradual • quot;Comitêquot; de três pessoas • Roberto Ierusalimschy, Luiz H. de Figueiredo, Waldemar Celes
  • 5. Onde Lua é Usada • Todo tipo de aplicação • Nicho em jogos
  • 6. quot;63% of the main Lightroom-team authored code is Luaquot;, Troy Gaul, Adobe
  • 7. • Ginga • middleware padrão brasileiro para TV digital • Wireshark • analisador de protocolos • Snort • intrusion detection and prevention system • nmap • rastreador de redes para segurança • Eyeon's Digital Fusion • pós-produção de filmes • E muitas outras...
  • 8. Lua em Jogos • quot;It is easy to see why Lua is rapidly becoming the de facto standard for game scripting.quot; Artificial Intelligence for Games, Morgan Kaufmann, 2006. • quot;It's quite possible that game developers will look back at the 2000s as the decade of Luaquot;., Game Programming Gems 5, Charles River Media, 2005.
  • 9. Alguns Jogos que usam Lua
  • 10. Alguns Jogos que usam Lua
  • 11. Alguns Jogos que usam Lua
  • 12. Alguns Jogos que usam Lua
  • 13. Alguns Jogos que usam Lua
  • 14. Porque Lua • Portabilidade • Simplicidade • Pequeno tamanho • “Acoplabilidade” (embedding) • scripting • Eficiência
  • 15. Portabilidade • Roda em praticamente todas as plataformas que já ouvimos falar • Unix, Windows, Windows CE, Symbian, BREW, hardware dedicado, Palm, PSP, etc. • Escrita em ANSI C ∩ ANSI C++ • evita #ifdefs • evita pontos obscuros do padrão • Núcleo é praticamente uma aplicação free-standing
  • 16. Simplicidade • Um único tipo de estrutura de dados • tabelas • Um único tipo numérico • tipicamente double • Mecanismos ao invés de políticas • e.g., orientação a objetos
  • 17. Pequeno Tamanho • Menos de 200K • Distribuição completa (tar.gz) com menos de 210K • Núcleo + bibliotecas • interface bem definida • núcleo com menos de 100K • bibliotecas independentes (e removíveis)
  • 18. Acoplabilidade • Lua é uma biblioteca C • API simples e bem definida • tipos simples • operações primitivas • modelo de pilha • Bi-direcional! • Acoplada em C/C++, Java, Fortran, C#, Perl, Ruby, Ada, etc.
  • 19. Eficiência • Benchmarks independentes mostram Lua entre as mais rápidas no grupo de linguagens interpretadas com tipagem dinâmica • Mistura de algumas técnicas especiais e simplicidade
  • 21. Interfaces Gráficas • 1992: Tecgraf - projeto entre PUC e PETROBRAS (CENPES) • Construção de interfaces gráficas para diversos programas de simulação
  • 22. DEL - Linguagem para Especificação de Diálogos • Definição de formulário • lista de parâmetros • tipos e valores default :e gasket quot;gasket propertiesquot; d mat s # material d f 0 # distance y f 0 # settlement stress t i 1 # facing type
  • 23. Limitações de DEL • Tomada de decisão • Predicados • Necessidade de maior poder de expressão
  • 24. Programa Gráfico Mestre • 1993: Projeto com a PETROBRAS • programa para visualização de perfis geológicos • configurável
  • 25. SOL Simple Object Language • Linguagem para descrição de objetos • sintaxe inspirada no BibTeX 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]}
  • 26. Limitações de SOL • Recursos para construção de diálogos • Mecanismos de programação procedural • Mecanismos de abstração mais poderosos
  • 27. 1993 • DEL e SOL tinham vários problemas em comum • Roberto Ierusalimschy (PGM), Luiz Henrique de Figueiredo (DEL) e Waldemar Celes (PGM) se juntaram para achar uma solução comum a seus problemas...
  • 28. O Que Precisávamos? • Uma quot;linguagem de configuração genéricaquot; • Uma linguagem quot;completaquot; • Facilmente acoplável • Portátil • o mais simples possível • sintaxe não intimidante • para usuários finais (engenheiros, geólogos, etc.)
  • 29. Como estávamos largando Sol, um amigo sugeriu um novo nome...
  • 31. Como era Lua 1.0? • Não muito diferente de SOL... t1 = @track{x = 10.3, y = 25.9, title = quot;depthquot;}
  • 32. Como era 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
  • 33. Lua 1.0 • Implementada como uma biblioteca • Chamada de 1.0 posteriormente • quot;The simplest thing that could possibly workquot; • tabelas implementadas via listas! • Implementação padrão • pré-compilador com yacc/lex • opcodes para uma máquina virtual baseada em pilha • Menos de 6000 linhas de código C
  • 34. Lua 1.0 • Expectativas: solucionar nossos problemas com PGM e DEL • poderia ser usada em outros projetos do Tecgraf • Satisfez nossas espectativas • tanto DEL quanto PGM usaram Lua com sucesso • PGM ainda em uso hoje • Foi um grande sucesso no Tecgraf
  • 35. Logo, vários projetos no Tecgraf estavam usando Lua
  • 36. Lua 1.1 • Já tinhamos vários quot;usuários reaisquot; • Novos usuários trazem novas demandas • Manual de referência • API com C bem definida e bem documentada
  • 37. Lua 2 • De Lua 2.1 (02/1995) até 2.5 (11/1996) • Suporte para OO • delegação • Casamento de padrões • biblioteca própria • Interface para depuração
  • 38. Exposição Internacional • anúncio em grupos Usenet • primeira página na Web em 1995 • http://www.inf.puc-rio.br/~roberto/lua • primeiros contatos por e-mail com usuários remotos • em 1997: lista de discussões • permitir usuários responderem perguntas • final de 97: mais de 100 assinantes: deviamos tentar um novo grupo?
  • 39. Exposição Internacional • junho 1996 - artigo na S:P&E • R. Ierusalimschy, L. H. de Figueiredo, W. Celes, Lua - an extensible extension language, Software: Practice & Experience 26(6):635-652, 1996. • dezembro 1996 - artigo na Dr. Dobb's • L. H. de Figueiredo, R. Ierusalimschy, W. Celes, Lua: an extensible embedded language, Dr. Dobb's Journal 21(12):26-33, 1996.
  • 40. Lua em Jogos (o início) From: Bret Mogilefsky <mogul@lucasarts.com> To: quot;'lua@icad.puc-rio.br'quot; <lua@icad.puc-rio.br> Subject: LUA rocks! Question, too. Date: Thu, 9 Jan 1997 13:21:41 -0800 Hi there... After reading the Dr. Dobbs article on Lua I was very eager to check it out, and so far it has exceeded my expectations in every way! It's elegance and simplicity astound me. Congratulations on developing such a well-thought out language. Some background: I am working on an adventure game for the LucasArts Entertainment Co., and I want to try replacing our older adventure game scripting language, SCUMM, with Lua.
  • 41.
  • 42. Lua 3 • De Lua 3.0 (07/1997) até Lua 3.2 (07/1999) • Melhor suporte a funções • funções anônimas, upvalues • Grande reorganização interna
  • 43. Lua 4 • Uma única versão: Lua 4.0, 11/2000 até 04/2003 • Nova API com C • baseada em pilha • Múltiplos estados • Todas as bibliotecas implementadas via API oficial
  • 44. Lua 5 • Lua 5.0 (04/2003) e 5.1 (02/2006) • quot;Maturidadequot; da linguagem • livro texto • Co-rotinas • Sistema de módulos • Funções anônimas com escopo léxico • Máquina virtual de registradores • Coleta de lixo incremental
  • 45. Crescimento em Linhas de Código • aproximação para complexidade... 5.1 5.0 3.2 4.0 3.0 2.4 3.1 2.1 2.5 1.0 2.2 1.1
  • 46. Evolução • Ênfase nos requisitos originais • quot;minimalismo pragmáticoquot; • implementação quot;free-standingquot; • mecanismos mais gerais • ênfase em funções • Aspectos não funcionais • documentação, robustez, mensagens de erros, ...
  • 47. Lua Atualmente • Site com >4.000 visitas por dia • de mais de 100 países • >14.000 downloads por mês • Compromissos fortes com estabilidade • Lua 4.0 ficou mais de dois anos sem alterações • Lua 5.1 lançada em fevereiro 2006
  • 48. Lua Atualmente • Licença atual: MIT • uso livre, não “viral” • Modelo de Desenvolvimento centralizado • importante no caso de Lua, onde tamanho é fundamental (evitar efeito comitê) • mas com grande participação da comunidade • lista, versões variantes, site de usuários
  • 49. Lua Atualmente • Requisitos originais mantidos • simplicidade, portabilidade, extensibilidade, pequeno tamanho • Única linguagem desenvolvida fora do eixo EUA/Europa/Japão a ser adotada mundialmente • entre as 20 mais populares no índice TIOBE • Ruby é (a única) do Japão
  • 50. Livros Programming in Lua, 2nd edition Programmieren mit Lua Lua.org, 2006 Open Source Press, 2006 Insight, 2007 Lua 2 PHEI, 2008
  • 51. Livros Beginning Lua Programming Wrox, 2007 Lua 5.1 Reference Manual Lua.org, 2006 Game Development with Lua Charles River Media, 2005 Lua ( ) Softbank Creative, 2007
  • 52. Para Saber Mais... http://www.lua.org/