Lua Mikk Lauringson 2007 1 Mis on Lua

  • Slides: 15
Download presentation
Lua Mikk Lauringson 2007 1

Lua Mikk Lauringson 2007 1

Mis on Lua? ■Võimas, kiire, kerge(kaaluline), integreeritav skriptimiskeel. ■Interpreteerib baitkoodi registritel baseeruvale virtuaalmasinale. ■Kirjutatud

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 (PUCRIO) Roberto Ierusalimschy Waldemar Celes Luiz Henrique de Figueiredo ■Ainuke arengumaalt pärit programmeerimiskeel, mis on saavutanud globaalse tähtsuse. 2

Miks kasutada Lua? ■ Lua on kiire ■ Lua on porditav ■ Lihtne ja

Miks kasutada Lua? ■ Lua on kiire ■ Lua on porditav ■ 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 ■ Kõigile platvormidele, millel on C kompilaator. Lua on integreeritav (embeddable) ■ Mitmed testid näitavad, et Lua on kiireim keel interpreteeritavate skriptimiskeelte maailmas. 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 3

Näited Lua kasutamistest ■ Programmid ■ Mängud ■ Adobe Lightroom (üle 40% Lua) Ethereal

Näited Lua kasutamistest ■ Programmid ■ Mängud ■ Adobe Lightroom (üle 40% Lua) Ethereal / Wireshark World of Warcraft The Sims Multi Theft Auto: San Andreas Far. Cry There Baldur's Gate Grim Fandango Escape From Monkey Island Firmad Adobe, Disney, Electronic Arts, Intel, Lucas. Arts, Microsoft, Nasa, Olivetti, Philips 4

Ajalugu ■ ■ ■ 1. 0 aastal 1993 1. 1 esimene avalik versioon 2.

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) 5

Ajalugu 6

Ajalugu 6

Operaatorid ■ Binaarsed operaatorid ■ + | - | * | / | ^

Operaatorid ■ Binaarsed operaatorid ■ + | - | * | / | ^ | % |. . < | <= | >= | == | ~= and | or Unaarsed operaatorid - | not | # 7

Süntaks ■ Nimed (identifikaatorid) ■ Reserveeritud võtmesõnad ■ and, break, do, elseif, end, false,

Süntaks ■ Nimed (identifikaatorid) ■ Reserveeritud võtmesõnad ■ and, break, do, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while Lua on tõstutundlik: ■ Suvalised tähed, numbrid ja alakriips Ei tohi alata numbriga and on reserveeritud, aga And ja AND on 2 erinevat lubatud identifikaatorit --kommentaar 8

Andmetüübid ja muutujad ■ Dünaamilised andmetüübid ■ 8 baastüüpi ■ Aritmeetiline operatsioon üritab ette

Andmetüübid ja muutujad ■ Dünaamilised andmetüübid ■ 8 baastüüpi ■ Aritmeetiline operatsioon üritab ette antud stringi muuta numbriks ja vastupidi. Muutujad ■ ■ nil, boolean, number, string, function, userdata, thread, ja table Coercion ■ Muutujatel pole tüüpe, ainult väärtustel on tüübid. Globaalsed, lokaalsed ja tabeli väljad Kui pole määratud, siis on vaikimisi globaalsed Laused on sarnased C ja Pascaliga Juhtstruktuurid if, while, repeat 9

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

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 10

Näited ■ Number ■ String ■ x = {} x = { value =

Näited ■ Number ■ String ■ x = {} x = { value = 123, text = "hello" } Boolean ■ print("hello ". . who) Tabel ■ who = "Lua user" Konkatenatsioon ■ x=7 x = true Funktsioon function foo() print("hello") end --deklareerimine foo() --väljakutsumine 11

Näited ■ Mitme muutuja määramine ■ x, y = 2, "there" Stringi defineerimise võimalused

Näited ■ Mitme muutuja määramine ■ x, y = 2, "there" Stringi defineerimise võimalused a = "hello" b = 'hello' c = [[hello]] 12

■ Tabel massiivina ■ Tabeli suurus ■ print( # t) >7 Tabel sõnastikuna ■

■ Tabel massiivina ■ Tabeli suurus ■ print( # t) >7 Tabel sõnastikuna ■ t = { 1, 1, 2, 3, 5, 8, 13 } print( t[1] ) >1 t = { apple="red", orange="orange", banana="yellow" } Segatud tabeli konstruktsioon t = { 2, 4, 6, language="Lua", version="5. 1" } 13

Näited Hello world print("Hello world") ■ Faktoriaal (rekursiivne) function factorial(n) if n == 0

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 ■ 14

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

Lingid ■ Lua koduleht ■ Lua käsiraamat ■ http: //www. lua. org/manual/ Web Lua ■ http: //www. lua. org http: //doris. sourceforge. net/lua/weblua. php The evolution of Lua http: //www. tecgraf. puc-rio. br/~lhf/ftp/doc/hopl. pdf 15