Você está na página 1de 59

Descobrindo Lua

Srgio Queiroz de Medeiros e


smedeiros@inf.puc-rio.br LabLua

Campus Party 2009


Srgio Queiroz de Medeiros e Descobrindo Lua 1

Signicado de LUA

Leave Us Alone Little Useful Application Lua is Universally Applicable Lua is Ubiquitously ANSI (C) Lua is Undoubtlessly an Acronym Lua, the Undened Acronym Lua Um Acrnimo e o

Srgio Queiroz de Medeiros e

Descobrindo Lua 2

Meu nome Lua, p**rra! e

Denies segundo o Wikcionrio: co a (Astronomia) satlite natural da Terra, que se destaca no cu e e durante a noite (Astronomia) astro que satlite natural de algum planeta e e (Ictiologia) peixe encontrado na costa portuguesa de formas arredondadas e aparentemente sem barbatana traseira

Srgio Queiroz de Medeiros e

Descobrindo Lua 3

Lua

Uma linguagem de script:


Robusta; Rpida; a Portvel; a Linguagem de extenso; a Pequena; Livre;

Srgio Queiroz de Medeiros e

Descobrindo Lua 4

Lua

Alguma semelhana com outras linguagens de script (Perl, c Python, Tcl); Linguagem de descrio de dados (anterior a XML); ca Linguagem de extenso extens a vel:
Enfatiza o desenvolvimento em mtiplas linguagens u

Srgio Queiroz de Medeiros e

Descobrindo Lua 5

Importncia a

Unica linguagem criada em um pa em desenvolvimento a s ganhar projeo mundial; ca De outra forma: unica linguagem relevante que no foi a desenvolvida no eixo EUA/Europa/Japo. a
Japo == Ruby a

Srgio Queiroz de Medeiros e

Descobrindo Lua 6

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;

Srgio Queiroz de Medeiros e

Descobrindo Lua 7

Lua em Jogos

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

Srgio Queiroz de Medeiros e

Descobrindo Lua 8

Jogos que Usam Lua

Srgio Queiroz de Medeiros e

Descobrindo Lua 9

Jogos que Usam Lua

Srgio Queiroz de Medeiros e

Descobrindo Lua 10

Jogos que Usam Lua

Srgio Queiroz de Medeiros e

Descobrindo Lua 11

Jogos que Usam Lua

Srgio Queiroz de Medeiros e

Descobrindo Lua 12

Mais Aplicaes co

63% of the main Lightroom-team authored code is Lua. Troy Gaul (Adobe Systems)

Srgio Queiroz de Medeiros e

Descobrindo Lua 13

Mais Aplicaes co

Srgio Queiroz de Medeiros e

Descobrindo Lua 14

Mais aplicaes co

Impressoras Olivetti; Ps-produo de lmes; o ca Monitoramento remoto; Desenvolvimento Web;

Srgio Queiroz de Medeiros e

Descobrindo Lua 15

Razes para usar Lua o

Portabilidade Simplicidade Pequeno tamanho Acoplabilidade Ecincia e

Srgio Queiroz de Medeiros e

Descobrindo Lua 16

Portabilidade

Lua roda em praticamente todas as plataformas conhecidas:


Unix Windows Windows CE Symbian Palm PS2

Escrita em ANSI C ANSI C++

Srgio Queiroz de Medeiros e

Descobrindo Lua 17

Simplicidade

Somente um tipo numrio (geralmente double); e Um unico tipo de estruturas de dados:


Tabelas

Mecanismos ao invs de pol e ticas


e.g., orientao a objetos; ca

Srgio Queiroz de Medeiros e

Descobrindo Lua 18

Pequeno Tamanho

Menos de 200k; Distribuio completa cabe (com folgas) em um disquete; ca Ncleo + Bibliotecas u
Ncleo com menos de 100k; u Bibliotecas independentes (podem ser removidas).

Srgio Queiroz de Medeiros e

Descobrindo Lua 19

Acoplabilidade

Lua uma biblioteca C; e API simples e bem denida:


modelo de pilha

Biderecional; Acoplada em:


C/C++ Java Fortran, C# Perl Ruby Ada etc

Srgio Queiroz de Medeiros e

Descobrindo Lua 20

Ecincia e

Benchmarks independentes mostram Lua como uma das mais rpidas linguagems de script interpretadas com tipagem a dinmica; a Lua no rpida somente em benchmarks. a e a

Srgio Queiroz de Medeiros e

Descobrindo Lua 21

Lua x Ruby

Srgio Queiroz de Medeiros e

Descobrindo Lua 22

Lua x Perl

Srgio Queiroz de Medeiros e

Descobrindo Lua 23

Lua x PHP

Srgio Queiroz de Medeiros e

Descobrindo Lua 24

Lua x Python

Srgio Queiroz de Medeiros e

Descobrindo Lua 25

LuaJIT
Compilador Just In Time para Lua;

Srgio Queiroz de Medeiros e

Descobrindo Lua 26

Histria de Lua o

Srgio Queiroz de Medeiros e

Descobrindo Lua 27

Como tudo comeou c

Lua nasceu em 1993, dentro do Tecgraf, na PUC-Rio; Criadores:


Roberto Ierusalimschy; Luiz Henrique de Fiqueiredo; Waldemar Celes.

Srgio Queiroz de Medeiros e

Descobrindo Lua 28

O Ambiente

Tecgraf foi criado em 1987; Laboratrio de pesquisa e desenvolvimento; o Parceria com a PETROBRAS; Pol tica de reserva de mercado para hardware e software; Vigorou de 1977 a 1992; Precisa de alguma coisa? Faa! c

Srgio Queiroz de Medeiros e

Descobrindo Lua 29

Predecessoras

DEL - Linguagem para Especicao de Dilogos ca a


Util para a descrio de dados; ca Falta de estruturas de controle; Pouco poder de expresso. a

SOL - Simple Object Language


Linguagem para descrio de objetos; ca Sintaxe inspirada no BibTeX. Ausncia de mecanismos de abstrao mais poderosos. e ca

Srgio Queiroz de Medeiros e

Descobrindo Lua 30

DEL + SOL = ?

DEL e SOL compartilhavam vrios problemas; a Achar uma soluo comum: ca


Roberto Ierusalimschy (SOL) Luiz Henrique (DEL) Waldemar Celes (SOL)

Srgio Queiroz de Medeiros e

Descobrindo Lua 31

Precisa-se de uma linguagem

Estruturas de controle, sub-rotinas, atribuio; ca Capaz de descrever dados facilmente; Portvel; a Converse amigavelmente com C; Sintaxe fcil. a

Srgio Queiroz de Medeiros e

Descobrindo Lua 32

1993

Tcl estava dispon vel; Scheme e Lisp tambm; e Python estava nascendo; Vamos fazer nossa prpria linguagem! :-) o

Srgio Queiroz de Medeiros e

Descobrindo Lua 33

Adeus, SOL!
SOL estava saindo de cena;

um novo nome foi sugerido...


Srgio Queiroz de Medeiros e Descobrindo Lua 34

Bem-vinda, Lua!

Srgio Queiroz de Medeiros e

Descobrindo Lua 35

Lua 1.0

Chamada de 1.0 posteriormente; The simplest thing that could possibly work
tabelas implementadas via listas!

Implementao padro: ca a
yacc + lex mquina de pilha a

Menos de 6000 linhas de cdigo C. o

Srgio Queiroz de Medeiros e

Descobrindo Lua 36

Lua 1.0

Expectativas: solucionar problemas com SOL e DEL


dispon para uso em outros projetos do Tecgraf vel

Correspondeu `s expectativas: a
Programas daquela poca ainda usam Lua e

Foi um grande sucesso no Tecgraf

Srgio Queiroz de Medeiros e

Descobrindo Lua 37

Usando Lua adoidado

Srgio Queiroz de Medeiros e

Descobrindo Lua 38

Lua 1.1

1994: primeira verso lanada publicamente; a c Vrios usurios reais; a a Manual de referncia; e Denio e documentao da API com C; ca ca Licenas para uso comercial negociadas. c

Srgio Queiroz de Medeiros e

Descobrindo Lua 39

Ganhando o Mundo

Artigo publicado em 1996 na revista Dr. Dobbs; Bret Mogilefsky (LucasArts); 1998: lanamento de Grim Fandango; c A tremendous amount of the game was written in Lua Mesa redonda na Game Developers Conferece (principal evento para desenvolvedores de jogos).

Srgio Queiroz de Medeiros e

Descobrindo Lua 40

Lua rocks!

To: "lua@icad.puc-rio.br" <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! Its 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.

Srgio Queiroz de Medeiros e

Descobrindo Lua 41

Lua Bar

Srgio Queiroz de Medeiros e

Descobrindo Lua 42

lua-l

1997: criao da lista de discusso de Lua; ca a Principal frum da linguagem; o Menos de 10% dos usurios so do Brasil; a a Mais de 50000 mil mensagens.

Srgio Queiroz de Medeiros e

Descobrindo Lua 43

Lua 5

Verso 5.0 lanada em 2003 e verso 5.1 em 2006 a c a Livro texto (Programming in Lua) Pontos chave:
Co-rotinas Sistema de mdulos o Funes annimas com escopo lxico co o e Mquina virtual de registradores a Coleta de lixo incremental

Srgio Queiroz de Medeiros e

Descobrindo Lua 44

Linhas de Cdigo com o Tempo o

Srgio Queiroz de Medeiros e

Descobrindo Lua 45

Evoluo ca

Enfase nos requisitos originais:


minimalismo pragmtico a mecanismos mais gerais nfase em funes e co

Srgio Queiroz de Medeiros e

Descobrindo Lua 46

Lua atualmente

Site com mais de 4.000 visitas por dia


de mais de 100 pa ses mais 14.000 downloads por ms e

Lista com mais de 1.700 participantes Compromisso com estabilidade


Lua 4.0 cou mais de dois anos sem alteraoes c Lua 5.0 foi lanada em maro de 2003 c c

Srgio Queiroz de Medeiros e

Descobrindo Lua 47

Lua Atualmente

Licena atual: MIT c


uso livre, no viral a

Modelo de desenvolvimento centralizado Participao da comunidade: ca


lista patches para verses alternativas o Wiki da comunidade: http://lua-users.org/wiki

Srgio Queiroz de Medeiros e

Descobrindo Lua 48

Lua Atualmente

LuaForge
Servio de hospedagem de projetos Lua; c

Hospeda mais de 400 projetos de mais de 1500 usurios; a Alguns projetos:


LuaSocket LuaSQL Kepler LuaEclipse LuaEdit

Srgio Queiroz de Medeiros e

Descobrindo Lua 49

Lua Atualmente

LuaWorkshop:
Encontro da comunidade Lua

2005: Estados Unidos; 2006: Holanda; 2008: Washinghton D.C., Estados Unidos.

Srgio Queiroz de Medeiros e

Descobrindo Lua 50

Lua Atualmente

Pesquisa envolvendo Lua LabLua


Laboratrio na PUC-Rio coordenado por Roberto Ierusalimschy o http://www.lua.inf.puc-rio.br/

Srgio Queiroz de Medeiros e

Descobrindo Lua 51

Lua Atualmente

Fiel aos requisitos originais:


Simplicidade; Portabilidade; Extensibilidade; Pequeno tamanho.

Entre as 20 linguagens mais populares (segundo TIOBE).

Srgio Queiroz de Medeiros e

Descobrindo Lua 52

Popularidade

Srgio Queiroz de Medeiros e

Descobrindo Lua 53

Livros

Programming in Lua, 2006

Lua 5.1 Reference Manual, 2006

Srgio Queiroz de Medeiros e

Descobrindo Lua 54

Livros

Srgio Queiroz de Medeiros e

Descobrindo Lua 55

Livros

Beginning Lua Programming, 2007

Game Development With Lua, 2005

Srgio Queiroz de Medeiros e

Descobrindo Lua 56

Livros

World of Warcraft, 2008

Introductory Lua Programming, 2007

Srgio Queiroz de Medeiros e

Descobrindo Lua 57

Livros

Lua Programming Gems, 2008

First Lua Programming, 2008

Srgio Queiroz de Medeiros e

Descobrindo Lua 58

Descobrindo mais

http://www.lua.org/

Srgio Queiroz de Medeiros e

Descobrindo Lua 59

Você também pode gostar