150 likes | 268 Views
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:
E N D
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: • 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.
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
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
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)
Operaatorid • Binaarsed operaatorid • + | - | * | / | ^ | % | .. • < | <= | > | >= | == | ~= • and | or • Unaarsed operaatorid • - | not | #
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
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
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
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
Näited • Mitme muutuja määramine • x, y = 2, "there" • Stringi defineerimise võimalused • a = "hello" • b = 'hello' • c = [[hello]]
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" }
Näited • Hello world print("Hello world") • Faktoriaal (rekursiivne) function factorial(n) if n == 0 then return 1 end return n * factorial(n - 1) end
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