• Nenhum resultado encontrado

Roberto Ierusalimschy

N/A
N/A
Protected

Academic year: 2021

Share "Roberto Ierusalimschy"

Copied!
30
0
0

Texto

(1)
(2)

•  Mais uma linguagem de script

•  alguma similariedade com Perl, Python, Tcl

•  Uma linguagem de extensão estensível

•  ênfase em comunicação inter-linguagens

•  Personalidade própria:

•  portabilidade

•  simplicidade

•  pequeno tamanho

(3)

Tecgraf 2006

•  Roda em praticamente todas as

plataformas que já ouvimos falar

•  Unix, Windows, Windows CE, Symbian,

hardware dedicado, Palm, PSII, etc.

•  Escrita em ANSI C

•  evita #ifdefs

(4)

•  Um único tipo de estrutura de dados

•  tabelas

•  Um único tipo numérico

•  tipicamente double

(5)

Tecgraf 2006

•  Menos de 200K

•  Núcleo + bibliotecas

•  interface bem definida

•  núcleo com menos de 100K

(6)

•  Lua é uma biblioteca C

•  API simples e bem definida

•  tipos simples

•  operações primitivas

•  modelo de pilha

•  Acoplada em C/C++, Java, Fortran, C#,

(7)

Tecgraf 2006 •  Sistemas embarcados •  roteadores, robôs •  Scripting •  APT-RPM •  Nicho em jogos

•  pesquisa informal feita pelo site

gamedev.net (set. 2003) mostrou Lua como

(8)
(9)

"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.”

(10)
(11)

Tecgraf 2006

•  Arrays associativos

•  qualquer valor como chave

•  semântica referencial

•  Único mecanismo de estruturação de

dados

•  Construtores

{}

{x = 5, y = 10}

{“Sun”, “Mon”, “Tue”}

(12)

•  Tabelas implementam maioria das

estruturas de forma simples e eficiente

(13)

Tecgraf 2006

•  Arrays: inteiros como índices

•  Conjuntos: elementos como índices

a = {}

for i=1,n do a[i] = 0 end

t = {}

t[x] = true -- t = t  {x} if t[x] then -- x  t?

(14)

•  Tabelas são objetos, criados dinamicamente list value - v next - old list ...

(15)

•  iteradores ipairs e pairs

Tecgraf 2006

a = {}

for i=1,n do a[i] = 0 end

for i,v in pairs(a) do print(v) end days = {“sun”, “mon”, “tue”, “wed”, “thu”, fri”,”sat”}

revDays = {}

for k,v in pairs(days) do revDays[v] = k

(16)

•  Valores imutáveis

•  Sem limite de tamanho

•  vários programas lêem arquivo inteiro de

entrada de uma só vez

•  Podem guardar valores binários

arbitrários

•  Biblioteca (externa) para

(17)
(18)
(19)

Tecgraf 2006

•  Tabelas povoadas por funções

•  Várias facilidades vem de graça

•  sub-módulos

•  nomes locais

local m = require “math” print(m.sqrt(20))

local f = m.sqrt print(f(10))

require “math”

(20)

•  Funções de 1a classe + tabelas ≈ objetos •  Açucar sintático para métodos

•  cuida de self

function a:foo (x) ...

end

a.foo = function (self,x) ...

(21)

Tecgraf 2006

•  Quando a delega de b, qualquer campo

ausente em a é pego de b

•  a[k] resulta em (a[k] or b[k])

•  Permite objetos baseados em protótipo e

em classes

(22)

•  Lua implementa co-rotinas assimétricas,

de 1a classe, “stackfull”

•  (Podemos implementar call/cc1)

•  Podemos implementar multi-threading

(23)
(24)
(25)

Tecgraf 2006

•  Biblioteca reentrante

•  Casamento de impedância:

•  tipagem dinâmica x estática

•  gerenciamento de memória automático x

manual

•  Usa uma pilha para troca de valores

(26)

•  Carrega código Lua

•  em arquivos, strings, etc.

•  Chama funções Lua

•  Manipula dados em Lua

•  Registra funções C para serem

(27)

Tecgraf 2006

#include <lua.h>

#include <lauxlib.h> #include <lualib.h>

(28)
(29)

Tecgraf 2006

static int l_sqrt (lua_State *L) { double n = luaL_checknumber(L, 1); lua_pushnumber(L, sqrt(n));

return 1; /* number of results */ }

lua_pushcfunction(L, l_sqrt);

(30)

www.lua.org

Lua 5.1 Reference Manual Lua.org, 2006

ISBN 85-903798-3-3 Programming in Lua, 2nd ed.

Lua.org, 2006

Referências

Documentos relacionados

Despercebido: não visto, não notado, não observado, ignorado.. Não me passou despercebido

privado, reflecte que: (i) o estado cumpre um papel duplo de empregador público e de autoridade pública; (ii) o ambiente do emprego público é político; (iii) os

O credor que não requerer perante o Juízo da execução a(s) adjudicação(ões) do(s) bem(ns) a ser(em) leiloado(s) antes da publicação deste Edital, só poderá adquiri- lo(s)

modelo de depoimento poderá ser vital e de grande auxilio no que tange à resolução dos crimes sexuais cometidos, especialmente contra crianças e adolescentes, e em

Ousasse apontar algumas hipóteses para a solução desse problema público a partir do exposto dos autores usados como base para fundamentação teórica, da análise dos dados

O modelo pode ser estendido para outras commodities e também para aspectos que representam vários setores da economia juntos, por exemplo a energia elétrica e seu

Quando os bovinos são expostos a temperaturas elevadas e as formas físicas de perda de calor (condução, radiação, convecção e evaporação) não são suficientes, verifica-se

Os pedidos de esclarecimentos referentes a este processo licitatório deverão ser enviados ao Pregoeiro, até 03 (três) dias úteis anteriores à data designada para