Lua

15
1 Lua Mikk Lauringson 2007

description

Mikk Lauringson 2007. Lua. Mis on Lua?. Võimas, kiire, kerge(kaaluline), integreeritav skriptimiskeel. Interpreteerib baitkoodi registritel baseeruvale virtuaalmasinale. Kirjutatud puhtas C keeles „Lua“ tähendab portugali keeles „kuu“ Autorid: - PowerPoint PPT Presentation

Transcript of Lua

Page 1: Lua

1

Lua

Mikk Lauringson2007

Page 2: Lua

2

Mis on Lua?

■Võimas, kiire, kerge(kaaluline), integreeritav skriptimiskeel.■Interpreteerib baitkoodi registritel baseeruvale virtuaalmasinale.■Kirjutatud puhtas C keeles■„Lua“ tähendab portugali keeles „kuu“■Autorid:

Pontifical Catholic University of Rio de Janeiro (PUC-RIO)

Roberto Ierusalimschy Waldemar Celes Luiz Henrique de Figueiredo

■Ainuke arengumaalt pärit programmeerimiskeel, mis on saavutanud globaalse tähtsuse.

Page 3: Lua

3

Miks kasutada Lua?

■ Lua on kiire Mitmed testid näitavad, et Lua on kiireim keel

interpreteeritavate skriptimiskeelte maailmas.■ Lua on porditav

Kõigile platvormidele, millel on C kompilaator.■ Lua on integreeritav (embeddable)

Lihtne ja hästi dokumenteeritud API. Lihtne täiendada teistes keeltes kirjutatud teekidega. Lihtne täiendada teistes keeltes kirjutatud programme.

■ Lua on lihtne ja võimas Meta-mehhanismid featuuride implementeerimiseks. Näiteks: Lua ei ole päris OO, aga meta-mehhanismide

abil saab implementeerida klassid ja pärimise.■ Lua on tasuta

MIT litsents

Page 4: Lua

4

Näited Lua kasutamistest

■ Programmid Adobe Lightroom (üle 40% Lua) Ethereal / Wireshark

■ Mängud World of Warcraft The Sims Multi Theft Auto: San Andreas FarCry There Baldur's Gate Grim Fandango Escape From Monkey Island

■ Firmad Adobe, Disney, Electronic Arts, Intel, LucasArts,

Microsoft, Nasa, Olivetti, Philips

Page 5: Lua

5

Ajalugu

■ 1.0 aastal 1993■ 1.1 esimene avalik versioon■ 2.1 tasuta kõigile■ 4.0 enam ei ole sisseehitatud funktsioone: kõik

funktsioonid kasutavad ametlikku API-t■ 5.0 MIT litsents■ 5.1.2 hetkel viimane versioon (02 Apr 2007)

Page 6: Lua

6

Ajalugu

Page 7: Lua

7

Operaatorid

■ Binaarsed operaatorid + | - | * | / | ^ | % | .. < | <= | > | >= | == | ~= and | or

■ Unaarsed operaatorid - | not | #

Page 8: Lua

8

Süntaks

■ Nimed (identifikaatorid) Suvalised tähed, numbrid ja alakriips Ei tohi alata numbriga

■ Reserveeritud võtmesõnad and, break, do, else, elseif, end, false, for, function, if,

in, local, nil, not, or, repeat, return, then, true, until, while

■ Lua on tõstutundlik: and on reserveeritud, aga And ja AND on 2 erinevat

lubatud identifikaatorit■ --kommentaar

Page 9: Lua

9

Andmetüübid ja muutujad

■ Dünaamilised andmetüübid Muutujatel pole tüüpe, ainult väärtustel on tüübid.

■ 8 baastüüpi nil, boolean, number, string, function, userdata, thread,

ja table■ Coercion

Aritmeetiline operatsioon üritab ette antud stringi muuta numbriks ja vastupidi.

■ Muutujad Globaalsed, lokaalsed ja tabeli väljad Kui pole määratud, siis on vaikimisi globaalsed

■ Laused on sarnased C ja Pascaliga■ Juhtstruktuurid

if, while, repeat

Page 10: Lua

10

Tabelid

■ Tabel (assotsiatiivne massiiv) on Lua keeles keskses rollis roll

■ Tabelite abil realiseeritakse lihtsalt ja tõhusalt moodulid, objektid, massiivid, hulgad, listid ja teised andmestruktuurid.

■ Tabeli indeksid algavad 1-st, mitte 0-st

Page 11: Lua

11

Näited

■ Number x = 7

■ String who = "Lua user"

■ Konkatenatsioon print("hello " .. who)

■ Tabel x = {} x = { value = 123, text = "hello" }

■ Boolean x = true

■ Funktsioon function foo() print("hello") end --deklareerimine foo() --väljakutsumine

Page 12: Lua

12

Näited

■ Mitme muutuja määramine x, y = 2, "there"

■ Stringi defineerimise võimalused a = "hello" b = 'hello' c = [[hello]]

Page 13: Lua

13

■ Tabel massiivina t = { 1,1,2,3,5,8,13 } print( t[1] ) >1

■ Tabeli suurus print( # t) >7

■ Tabel sõnastikuna t = { apple="red", orange="orange", banana="yellow" }

■ Segatud tabeli konstruktsioon t = { 2,4,6, language="Lua", version="5.1" }

Page 14: Lua

14

Näited

■ Hello worldprint("Hello world")

■ Faktoriaal (rekursiivne)function factorial(n) if n == 0 then return 1 end return n * factorial(n - 1)end

Page 15: Lua

15

Lingid

■ Lua koduleht http://www.lua.org

■ Lua käsiraamat http://www.lua.org/manual/

■ Web Lua http://doris.sourceforge.net/lua/weblua.php

■ The evolution of Lua http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/hopl.pdf