• Nenhum resultado encontrado

Roberto Ierusalimschy, PUC-Rio. Lua

N/A
N/A
Protected

Academic year: 2021

Share "Roberto Ierusalimschy, PUC-Rio. Lua"

Copied!
30
0
0

Texto

(1)

A

L

IN

G

U

A

G

E

M

L

U

A

Rober to Ier usalimsch y, PUC-Rio

Lua

t

he

la

n

gu

a

g

e

1

(2)

R

O

T

E

IR

O

D

A

A

P

R

E

S

E

N

T

A

C

¸

˜

A

O

O que ´e? Onde est ´a? P or que usar? Como ´e? Como foi? 2

(3)

O

Q

U

E

´

E

L

U

A

• Mais uma linguagem de scr ipt ◦ n ˜ao totalmente dif erente de P er l, Python, Tcl • Uma linguagem de Descr ic¸ ˜ao de Dados ◦ n ˜ao totalmente dif erente de XML • Car acter ´ısticas b ´asicas: simples , por t´atil, eficiente , pequena • ´Unica linguagem de prog ramac ¸ ˜ao desen v olvida for a do pr imeiro m undo a ter aceitac ¸ ˜ao m undial ◦ centenas de milhares de usu ´ar ios ◦ usada por Intel, Conectiv a, Microsoft, LucasAr ts , P etrobr as , etc. 3

(4)

O

N

D

E

E

S

T

´

A

Nicho em jogos ◦ LucasAr ts: Gr im F andango , Escape F rom Monk e y Island ◦ BioW are: Baldur’ s Gate , MDK2 ◦ Microsoft games: Mythica ◦ free w are: Angband (RPG) Outros Usos ◦ Conectiv a: APT -RPM (padr ˜ao par a distr ib uic ¸ ˜oes RPM) ◦ Intel: ferr amenta inter na par a la y out de chips ◦ tomsr tbt: “The most Lin ux on one flopp y disk” ◦ .. . 4

(5)

O

N

D

E

E

S

T

´

A

5

(6)

P

O

R

Q

U

E

L

U

A

P equena ◦ inter pretador completo mais bib liotecas b ´asicas tem 140K P or t´atil ◦ escr ita em ANSI C , compila o mesmo c ´odigo em todas as plataf or mas ◦ Unix, Windo ws (incluindo CE), Pla ystation II, OS/390, XBo x, BeOS , DOS , P alm OS , EPOC , sistemas emb utidos , etc. Eficiente ◦ v er www .bagle y.org/˜doug/shootout 6

(7)

P

O

R

Q

U

E

L

U

A

.

.

.

• Acopl ´av el ◦ bib lioteca, com API bem definida e simples par a C ◦ bib liotecas b ´asicas implementadas em C atr a v ´es da API ◦ acoplada a div ersas linguagens: C/C++, J a v a, F or tr an, Rub y, OPL (lin-guagem do EPOC), etc. • Simples e fle x ´ıv el ◦ linguagem pequena, com poucos (mas poderosos) mecanismos . ◦ poucos casos especiais 7

(8)

C

O

M

O

´

E

L

U

A

Linguagem com car a con v encional Ger ˆencia autom ´atica de mem ´or ia tipagem din ˆamica function fact (n) if n == 0 then return 1 else return n * fact(n -1) end end 8

(9)

T

A

B

E

L

A

S

• ´Unica estr utur a de dados em Lua • Arr a ys associativ os ◦ podem ser inde xados por qualquer v alor (n ˜ao apenas str ings), e ar maz enar qualquer v alor • P er mite implementac ¸ ˜ao eficiente e simples da maior ia das estr utur as de dados usadas nor malmente ◦ arr a ys , records , conjuntos , matr iz es esparsas , tabelas(!), etc. • Implementac ¸ ˜ao altamente otimizada 9

(10)

E

S

T

R

U

T

U

R

A

S

D

E

D

A

D

O

S

Arr a ys local a = {} for i = 1, N do a[i] = 0 end Records --a.x ´e o mesmo que a["x"] local a.x = "hello" print(a.x) Conjuntos: v alores como cha v es a[x] = true --insere x a[x] = nil --remove x if a[x] then ... --testa pertin ˆencia 10

(11)

C

O

N

S

T

R

U

T

O

R

E

S

• Express ˜oes par a cr iar e inicializar tabelas • Estilo Estr utur a: p = { x = 10, y = 20 } print(p.x) --> 10 • Estilo Lista/Arr a y: p = { "seg", "ter", "qua", "qui", "sex", "sab", "dom" } print(p[3]) --> qua • Estilo Misto: p = { 10, 20, 30; n = 3 } 11

(12)

D

E

S

C

R

IC

¸

˜

A

O

D

E

D

A

D

O

S

Constr utores s ˜ao um for mato adequado par a descr ic¸ ˜ao de dados ◦ inspir ado em BiBT eX P ar a ler um arquiv o de dados , basta e x ecut ´a-lo Opc ¸ ˜ao a XML ◦ cr iado por necessidade , bem antes de XML (1993) ◦ parser mais simples , e (dif erentemente de outr as linguagens) bastante efi-ciente ◦ temos de g rac ¸a outr as facilidades , como condicionais , v ar i´av eis (ref er ˆencias inter nas), coment ´ar ios , etc. 12

(13)

<POEM> <TITLE>Lines Written in Early Spring</TITLE> <AUTHOR> <FIRSTNAME>William</FIRSTNAME> <LASTNAME>Wordsworth</LASTNAME> </AUTHOR> <STANZA> <LINE N="1">I heard a thousand blended notes,</LINE> <LINE N="2">While in grove I sate reclined,</LINE> <LINE N="3">In that sweet mood when pleasant thoughts</LINE> <LINE N="4">Bring sad thoughts to the mind.</LINE> </STANZA> <STANZA> <LINE N="5">To her fair works did nature link</LINE> <LINE N="6">The human soul that through me ran;</LINE> <LINE N="7">And much it griev’d me my heart to think</LINE> <LINE N="8">What man has made of man.</LINE> </STANZA> </POEM> 13

(14)

POEM { TITLE="Lines Written in Early Spring", AUTHOR= { firstname="William", lastname="Wordsworth" } ; STANZA { LINE { N=1;"I heard a thousand blended notes," } , LINE { N=2;"While in grove I sate reclined," } , LINE { N=3;"In that sweet mood when pleasant thoughts" } , LINE { N=4;"Bring sad thoughts to the mind." } , } , STANZA { LINE { N=5;"To her fair works did nature link" } , LINE { N=6;"The human soul that through me ran;" } , LINE { N=7;"And much it griev’d me my heart to think" } , LINE { N=8;"What man has made of man." } , } } 14

(15)

E

D

A

´

I

?

• P odemos faz er o mesmo em v ´ar ias outr as linguagens • Mas arquiv os de dados podem ser m uito g randes quando vistos como prog ra-mas .. . • P ar a um arquiv o com 100K, Lua o tr ata em 1.2 seg, P er l em 5.3 seg, e Python em 16.8 seg. • P ar a um arquiv o com 1M, Lua o tr ata em 12 seg, P er l e Python derr ubam a m ´aquina (“tr ash”). 15

(16)

F

A

C

IL

ID

A

D

E

S

F

U

N

C

IO

N

A

IS

Lua integ ra poderosas facilidades funcionais ◦ mas dentro de uma linguagem con v encional; n ˜ao forc ¸a o prog ramador a outro par adigma Func ¸ ˜oes de pr imeir a classe; visib lidade l´exica local alunos = { "maria", "jo ˜ao", "suzana" } local notas = { maria = 10, jo ˜ao = 6.5, suzana = 8.7 } table.sort(alunos, function (a,b) return notas[a] < notas[b] end) Implementac ¸ ˜ao eficiente 16

(17)

C

O

R

O

T

IN

A

S

m ulti-threading cooper ativ o • Bem mais le v e (e mais simples) que m ulti-threading “real” • Implementac ¸ ˜ao totalmente por t´atil! 17

(18)

C

O

M

O

F

O

I

:

O

I

N

´

IC

IO

Motiv ac ¸ ˜ao industr ial dupla ◦ Dentro de uma parcer ia com a P etrobr as PGM (Prog rama Gr ´afico Mestre) necessita v a de uma linguagem de “descr ic¸ ˜ao de dados” ◦ XML ser ia uma boa opc ¸ ˜ao , mas isso er a 1993. .. ED: prog rama de entr ada de dados , j´a tinha uma linguagem de “descr ic¸ ˜ao”, mas precisa v a de facilidades oper ativ as ◦ Prob lema ainda recorrente em XML 18

(19)

P

R

O

G

R

A

M

A

G

R

´

A

FI

C

O

M

E

S

T

R

E

19

(20)

L

U

A

V

E

R

S

˜

A

O

1

.0

Batizada de V ers ˜ao 1.0 a poster ior i The simplest thing that could possib ly w or k Implementac ¸ ˜ao “padr ˜ao”, com y acc/le x Sucesso de p ´ub lico (no T ecg raf) ◦ usada com sucesso no PGM e no ED , logo usada em outros projetos tamb ´em 20

(21)

L

U

A

V

E

R

S

˜

A

O

1

.1

1

9

9

4

• Mais eficiente • Pr imeir a distr ib uic ¸ ˜ao p ´ub lica via Inter net ◦ ftp • Licenc ¸a livre par a uso acad ˆemico , restr itiv a par a uso comercial ◦ C ´odigo aber to , mas n ˜ao livre ◦ prob lemas com a concorr ˆencia (Tcl, P er l, .. .) 21

(22)

L

U

A

2

Lua 2.1 (F e v ereiro 1995) — 2.5 (No v embro 1996) Pr imeir a v ers ˜ao com licenc ¸a livre (“free softw are”) ◦ licenc ¸a pr ´opr ia, poster ior mente reconhecida pela FSF e OS fallbac ks : mecanismo de e xtens ˜ao ◦ supor te par a prog ramac ¸ ˜ao OO P atter n-matching ◦ via bib lioteca CGILua (HTML Lua): pr imeir a v ers ˜ao entre 1994–1995 22

(23)

E

X

P

O

S

IC

¸

˜

A

O

I

N

T

E

R

N

A

C

IO

N

A

L

• No in ´ıcio de 1995, cr iamos a pr imeir a homepage de Lua • T roca de mensagens com v ´ar ios usu ´ar ios em v ´ar ias instituic ¸ ˜oes • Em junho de 1996, sai ar tigo na Softw are: Pr actice & Exper ience • Em dez embro de 1996, ar tigo na Dr . Dob b’ s • No in ´ıcio de 1997, cr iamos a lista de discuss ˜ao • Em meados de 1997, pr ˆemio COMP A Q 23

(24)

L

U

A

E

M

J

O

G

O

S

Bret Mogilefsky <mogul@lucasarts.com > "’lua@icad.puc-rio .br ’" <lua@icad.puc-rio.b r> LUA rocks! Question, too. Thu, 9 Jan 1997 13:21:41 -0800 there... reading the Dr. Dobbs article on Lua I was very eager to check it and so far it has exceeded my expectations in every way! It’s and simplicity astound me. Congratulations on developing such well-thought out language. background: I am working on an adventure game for the LucasArts Co., and I want to try replacing our older adventure game language, SCUMM, with Lua. 24

(25)

L

U

A

3

• Lua 3.0 (J ulho 1997) — Lua 3.2 (J ulho 1999) • Em 1998, surgiu o logo de Lua:

Lua

the la ngu ag e • T amb ´em em 1998, Cameron Laird (que mantinha uma coluna sobre linguagens de scr ipt na SunW or ld) escre v eu sobre Lua: Its user base is also small; there might be only a fe w tens of thousands of Lua prog rammers in the w or ld. The y’ re v er y fond of this language , though, and the imminent e xplosion of ubiquitous embedded processing (computers in y our car , in y our plumbing, and in y our kitchen appliances) can only w or k in fa v or of Lua. • P ar a n ´os , essa “pequena” base de usu ´ar ios er a m uito maior do que ima-gin ´av amos 25

(26)

L

U

A

4

Lua 4.0 (No v embro 2000 – Marc ¸o 2003) C ´odigo em “clean C” (intersec ¸ ˜ao entre C e C++) Final de 2000, s ´er ie de repor tagens no Br asil Em marc ¸o de 2001, no v o enderec ¸o em www .lua.org ◦ cor tesia de um usu ´ar io P ouco depois , site dos usu ´ar ios de Lua ( lua-users .org ) ◦ wiki , gerenciado sem nossa par ticipac ¸ ˜ao Ap ´os dois anos , um ´unico release 4.0.1 corr igindo b ugs ◦ menos de dez b ugs 26

(27)

L

U

A

5

• Lanc ¸ada em marc ¸o 2003 • Corotinas , visibilidade l´exica, melhores facilidades par a m ´odulos • Implementac ¸ ˜ao com v ´ar ias no vidades: ◦ m ´aquina vir tual via registr adores ◦ no v o algor itmo par a tabelas 27

(28)

L

U

A

A

T

U

A

L

M

E

N

T

E

Site com quase 1000 visitas di ´ar ias ◦ vindas de mais de 80 pa ´ıses Lista com mais de 400 par ticipantes ◦ 15% do Br asil ◦ cor tesia da Conectiv a ◦ m ´edia de mais de dez mensagens por dia Usada em centenas (milhares?) de produtos Man ual tr aduzido par a coreano e japon ˆes 28

(29)

L

U

A

A

T

U

A

L

M

E

N

T

E

• Quase dez anos de e v oluc ¸ ˜ao • Compromissos for tes com estabilidade ◦ Lua 4.0 ficou mais de dois anos sem alter ac ¸ ˜oes • Requisitos or iginais mantidos ◦ simplicidade ◦ por tabilidade ◦ e xtensibilidade ◦ pequeno tamanho ◦ efici ˆencia 29

(30)

Lua

the

la

ng

u

a

g

e

www

.lua.org

30

Referências

Documentos relacionados

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

(2016), selecionando genótipos de tomateiro para processamento com alto teor de zingibereno, concluíram que a seleção indireta de plantas com alto teor de zingibereno é eficiente

E7: Quando tava la no CREAS eles tinham... eles eram mais resistentes a nossa aproximação, de medo, talvez, sei lá... pelo fato de ter talvez o ministério público por

[r]

No entanto, os resultados apresentados pelo --linalol não foram semelhantes, em parte, aos do linalol racêmico, uma vez que este apresenta um efeito vasorelaxante em anéis de

Resumo: O presente trabalho corresponde a um estudo empírico descritivo e exploratório que aborda comportamentos e falas de atores políticos que participaram do processo legislativo

As micotoxinas são compostos químicos tóxicos provenientes do metabolismo secundário de fungos filamentosos e conhecidas pelos danos causados à saúde humana e

onde Qe são as forças de origem externa ao sistema e Qc são as forças de reação. Estas equações não podem ser utilizadas diretamente, pois as forças de