(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)(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
ng
u
a
g
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