59
Descobrindo Lua ergio Queiroz de Medeiros [email protected] LabLua Campus Party 2009 ergio Queiroz de Medeiros Descobrindo Lua 1

S ergio Queiroz de Medeiros - cpdev.files.wordpress.com · Signi cado de LUA I Leave Us Alone I Little Useful Application I Lua is Universally Applicable I Lua is Ubiquitously ANSI

  • Upload
    phungtu

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Descobrindo Lua

Sergio Queiroz de Medeiros

[email protected]

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

Jogos que Usam Lua

Sergio Queiroz de Medeiros Descobrindo Lua 9

Jogos que Usam Lua

Sergio Queiroz de Medeiros Descobrindo Lua 10

Jogos que Usam Lua

Sergio Queiroz de Medeiros Descobrindo Lua 11

Jogos que Usam Lua

Sergio Queiroz de Medeiros Descobrindo Lua 12

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

Sergio Queiroz de Medeiros Descobrindo Lua 14

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

Lua x Ruby

Sergio Queiroz de Medeiros Descobrindo Lua 22

Lua x Perl

Sergio Queiroz de Medeiros Descobrindo Lua 23

Lua x PHP

Sergio Queiroz de Medeiros Descobrindo Lua 24

Lua x Python

Sergio Queiroz de Medeiros Descobrindo Lua 25

LuaJIT

I Compilador Just In Time para Lua;

Sergio Queiroz de Medeiros Descobrindo Lua 26

Historia de Lua

Sergio Queiroz de Medeiros Descobrindo Lua 27

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

Bem-vinda, Lua!

Sergio Queiroz de Medeiros Descobrindo Lua 35

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

Usando Lua adoidado

Sergio Queiroz de Medeiros Descobrindo Lua 38

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 Bar

Sergio Queiroz de Medeiros Descobrindo Lua 42

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

Linhas de Codigo com o Tempo

Sergio Queiroz de Medeiros Descobrindo Lua 45

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

Popularidade

Sergio Queiroz de Medeiros Descobrindo Lua 53

Livros

Programming in Lua, 2006 Lua 5.1 Reference Manual, 2006

Sergio Queiroz de Medeiros Descobrindo Lua 54

Livros

Sergio Queiroz de Medeiros Descobrindo Lua 55

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

Descobrindo mais

http://www.lua.org/

Sergio Queiroz de Medeiros Descobrindo Lua 59