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
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