Upload
phungtu
View
213
Download
0
Embed Size (px)
Citation preview
Descobrindo Lua
Sergio Queiroz de Medeiros
Campus Party 2009
Sergio Queiroz de Medeiros Descobrindo Lua 1
Significado de LUA
I Leave Us Alone
I Little Useful Application
I Lua is Universally Applicable
I Lua is Ubiquitously ANSI (C)
I Lua is Undoubtlessly an Acronym
I Lua, the Undefined Acronym
I Lua e Um Acronimo
Sergio Queiroz de Medeiros Descobrindo Lua 2
Meu nome e Lua, p**rra!
Definicoes segundo o Wikcionario:
I (Astronomia) satelite natural da Terra, que se destaca no ceudurante a noite
I (Astronomia) astro que e satelite natural de algum planeta
I (Ictiologia) peixe encontrado na costa portuguesa de formasarredondadas e aparentemente sem barbatana traseira
Sergio Queiroz de Medeiros Descobrindo Lua 3
Lua
I Uma linguagem de script:
I Robusta;I Rapida;I Portavel;I Linguagem de extensao;I Pequena;I Livre;
Sergio Queiroz de Medeiros Descobrindo Lua 4
Lua
I Alguma semelhanca com outras linguagens de script (Perl,Python, Tcl);
I Linguagem de descricao de dados (anterior a XML);I Linguagem de extensao extensıvel:
I Enfatiza o desenvolvimento em mutiplas linguagens
Sergio Queiroz de Medeiros Descobrindo Lua 5
Importancia
I Unica linguagem criada em um paıs em desenvolvimento aganhar projecao mundial;
I De outra forma: unica linguagem relevante que nao foidesenvolvida no eixo EUA/Europa/Japao.
I Japao == Ruby
Sergio Queiroz de Medeiros Descobrindo Lua 6
Usos de Lua
I Especialmente utilizada em jogos;
I Uma pesquisa informal feita em 2003 pelo site gamedev.netapontou Lua como a linguagem de script mais utilizada parajogos;
Sergio Queiroz de Medeiros Descobrindo Lua 7
Lua em Jogos
I ”It is easy to see why Lua is rapidly becoming the de factostandard for game scripting.- Artificial Intelligence for Games,Morgan Kaufmann,2006;
I ”It’s quite possible that game developers will look back at the2000s as the decade of Lua- Game Programming Gems 5,Charles River Media, 2005.
Sergio Queiroz de Medeiros Descobrindo Lua 8
Mais Aplicacoes
I 63% of the main Lightroom-team authored code isLua.
Troy Gaul (Adobe Systems)
Sergio Queiroz de Medeiros Descobrindo Lua 13
Mais aplicacoes
I Impressoras Olivetti;
I Pos-producao de filmes;
I Monitoramento remoto;
I Desenvolvimento Web;
Sergio Queiroz de Medeiros Descobrindo Lua 15
Razoes para usar Lua
I Portabilidade
I Simplicidade
I Pequeno tamanho
I ”Acoplabilidade”
I Eficiencia
Sergio Queiroz de Medeiros Descobrindo Lua 16
Portabilidade
I Lua roda em praticamente todas as plataformas conhecidas:I UnixI WindowsI Windows CEI SymbianI PalmI PS2
I Escrita em ANSI C ∩ ANSI C++
Sergio Queiroz de Medeiros Descobrindo Lua 17
Simplicidade
I Somente um tipo numerio (geralmente double);I Um unico tipo de estruturas de dados:
I Tabelas
I Mecanismos ao inves de polıticasI e.g., orientacao a objetos;
Sergio Queiroz de Medeiros Descobrindo Lua 18
Pequeno Tamanho
I Menos de 200k;
I Distribuicao completa cabe (com folgas) em um disquete;I Nucleo + Bibliotecas
I Nucleo com menos de 100k ;I Bibliotecas independentes (podem ser removidas).
Sergio Queiroz de Medeiros Descobrindo Lua 19
Acoplabilidade
I Lua e uma biblioteca C;I API simples e bem definida:
I modelo de pilha
I Biderecional;I Acoplada em:
I C/C++I JavaI Fortran,I C#I PerlI RubyI AdaI etc
Sergio Queiroz de Medeiros Descobrindo Lua 20
Eficiencia
I Benchmarks independentes mostram Lua como uma das maisrapidas linguagems de script interpretadas com tipagemdinamica;
I Lua nao e rapida somente em benchmarks.
Sergio Queiroz de Medeiros Descobrindo Lua 21
Como tudo comecou
I Lua nasceu em 1993, dentro do Tecgraf, na PUC-Rio;I Criadores:
I Roberto Ierusalimschy;I Luiz Henrique de Fiqueiredo;I Waldemar Celes.
Sergio Queiroz de Medeiros Descobrindo Lua 28
O Ambiente
I Tecgraf foi criado em 1987;
I Laboratorio de pesquisa e desenvolvimento;
I Parceria com a PETROBRAS;
I Polıtica de reserva de mercado para hardware e software;
I Vigorou de 1977 a 1992;
I Precisa de alguma coisa? Faca!
Sergio Queiroz de Medeiros Descobrindo Lua 29
Predecessoras
I DEL - Linguagem para Especificacao de DialogosI Util para a descricao de dados;I Falta de estruturas de controle;I Pouco poder de expressao.
I SOL - Simple Object Language
I Linguagem para descricao de objetos;I Sintaxe inspirada no BibTeX.I Ausencia de mecanismos de abstracao mais poderosos.
Sergio Queiroz de Medeiros Descobrindo Lua 30
DEL + SOL = ?
I DEL e SOL compartilhavam varios problemas;I Achar uma solucao comum:
I Roberto Ierusalimschy (SOL)I Luiz Henrique (DEL)I Waldemar Celes (SOL)
Sergio Queiroz de Medeiros Descobrindo Lua 31
Precisa-se de uma linguagem
I Estruturas de controle, sub-rotinas, atribuicao;
I Capaz de descrever dados facilmente;
I Portavel;
I Converse amigavelmente com C;
I Sintaxe facil.
Sergio Queiroz de Medeiros Descobrindo Lua 32
1993
I Tcl estava disponıvel;
I Scheme e Lisp tambem;
I Python estava nascendo;
I Vamos fazer nossa propria linguagem! :-)
Sergio Queiroz de Medeiros Descobrindo Lua 33
Adeus, SOL!
I SOL estava saindo de cena;
I um novo nome foi sugerido...
Sergio Queiroz de Medeiros Descobrindo Lua 34
Lua 1.0
I Chamada de 1.0 posteriormente;
I “The simplest thing that could possibly work”
I tabelas implementadas via listas!
I Implementacao padrao:I yacc + lexI maquina de pilha
I Menos de 6000 linhas de codigo C.
Sergio Queiroz de Medeiros Descobrindo Lua 36
Lua 1.0
I Expectativas: solucionar problemas com SOL e DELI disponıvel para uso em outros projetos do Tecgraf
I Correspondeu as expectativas:I Programas daquela epoca ainda usam Lua
I Foi um grande sucesso no Tecgraf
Sergio Queiroz de Medeiros Descobrindo Lua 37
Lua 1.1
I 1994: primeira versao lancada publicamente;
I Varios usuarios reais;
I Manual de referencia;
I Definicao e documentacao da API com C;
I Licencas para uso comercial negociadas.
Sergio Queiroz de Medeiros Descobrindo Lua 39
Ganhando o Mundo
I Artigo publicado em 1996 na revista Dr. Dobb’s;
I Bret Mogilefsky (LucasArts);
I 1998: lancamento de Grim Fandango;
A tremendous amount of the game was written inLua
I Mesa redonda na Game Developer’s Conferece (principalevento para desenvolvedores de jogos).
Sergio Queiroz de Medeiros Descobrindo Lua 40
Lua rocks!
To: "’[email protected]’" <[email protected]>
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.
Sergio Queiroz de Medeiros Descobrindo Lua 41
lua-l
I 1997: criacao da lista de discussao de Lua;
I Principal forum da linguagem;
I Menos de 10% dos usuarios sao do Brasil;
I Mais de 50000 mil mensagens.
Sergio Queiroz de Medeiros Descobrindo Lua 43
Lua 5
I Versao 5.0 lancada em 2003 e versao 5.1 em 2006
I Livro texto (Programming in Lua)I Pontos chave:
I Co-rotinasI Sistema de modulosI Funcoes anonimas com escopo lexicoI Maquina virtual de registradoresI Coleta de lixo incremental
Sergio Queiroz de Medeiros Descobrindo Lua 44
Evolucao
I Enfase nos requisitos originais:I ”minimalismo pragmatico”I mecanismos mais geraisI enfase em funcoes
Sergio Queiroz de Medeiros Descobrindo Lua 46
Lua atualmente
I Site com mais de 4.000 visitas por diaI de mais de 100 paısesI mais 14.000 downloads por mes
I Lista com mais de 1.700 participantesI Compromisso com estabilidade
I Lua 4.0 ficou mais de dois anos sem alteracoesI Lua 5.0 foi lancada em marco de 2003
Sergio Queiroz de Medeiros Descobrindo Lua 47
Lua Atualmente
I Licenca atual: MITI uso livre, nao ”viral”
I Modelo de desenvolvimento centralizadoI Participacao da comunidade:
I listaI patches para versoes alternativasI Wiki da comunidade: http://lua-users.org/wiki
Sergio Queiroz de Medeiros Descobrindo Lua 48
Lua Atualmente
I LuaForgeI Servico de hospedagem de projetos Lua;
I Hospeda mais de 400 projetos de mais de 1500 usuarios;I Alguns projetos:
I LuaSocketI LuaSQLI KeplerI LuaEclipseI LuaEdit
Sergio Queiroz de Medeiros Descobrindo Lua 49
Lua Atualmente
I LuaWorkshop:I Encontro da comunidade Lua
I 2005: Estados Unidos;
I 2006: Holanda;
I 2008: Washinghton D.C., Estados Unidos.
Sergio Queiroz de Medeiros Descobrindo Lua 50
Lua Atualmente
I Pesquisa envolvendo LuaI LabLua
I Laboratorio na PUC-Rio coordenado por Roberto IerusalimschyI http://www.lua.inf.puc-rio.br/
Sergio Queiroz de Medeiros Descobrindo Lua 51
Lua Atualmente
I Fiel aos requisitos originais:I Simplicidade;I Portabilidade;I Extensibilidade;I Pequeno tamanho.
I Entre as 20 linguagens mais populares (segundo TIOBE).
Sergio Queiroz de Medeiros Descobrindo Lua 52
Livros
Programming in Lua, 2006 Lua 5.1 Reference Manual, 2006
Sergio Queiroz de Medeiros Descobrindo Lua 54
Livros
Beginning Lua Programming, 2007 Game Development With Lua, 2005
Sergio Queiroz de Medeiros Descobrindo Lua 56
Livros
World of Warcraft, 2008 Introductory Lua Programming, 2007
Sergio Queiroz de Medeiros Descobrindo Lua 57
Livros
Lua Programming Gems, 2008 First Lua Programming, 2008
Sergio Queiroz de Medeiros Descobrindo Lua 58