Lua
description
Transcript of Lua
1
Lua
Mikk Lauringson2007
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.
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
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
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)
6
Ajalugu
7
Operaatorid
■ Binaarsed operaatorid + | - | * | / | ^ | % | .. < | <= | > | >= | == | ~= and | or
■ Unaarsed operaatorid - | not | #
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
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
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
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
12
Näited
■ Mitme muutuja määramine x, y = 2, "there"
■ Stringi defineerimise võimalused a = "hello" b = 'hello' c = [[hello]]
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" }
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
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