350 likes | 669 Views
Lua. Matthew Spain | Kerry Zhao. Agenda. Overview of Lua Language Details Application Areas Demo Conclusion. Overview. History. Made by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes in 1993 Members of Tecgraf, PUC-Rio in Brazil
E N D
Lua Matthew Spain | Kerry Zhao
Agenda • Overview of Lua • Language Details • Application Areas • Demo • Conclusion
History • Made by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes in 1993 • Members of Tecgraf, PUC-Rio in Brazil • Brazil had trade barriers making it hard to buy software from abroad
Release Timeline Jul 1993 - Lua 1.0 Jul 1994 - Lua 1.1 (first public release), paper Feb 1995 - Lua 2.1 (first free commercial release) Nov 2000 - Lua 4.0, no built-in functions Apr 2003 - Lua 5.0, multithreading, full lexical scoping Dec 2011 - Lua 5.2, current version
Language Influences • Replaces • DEL (data-entry language) • SOL (simple object language) • Scheme • Modula
Resources www.lua.org www.lua-users.orgcode.google.com/p/luaforwindows luadist.org Plugins for most popular IDEs
Function • High-level scripting language • Lightweight - interpreter about 180k • Embedded language - C API
Execution • Interpreter compiles to bytecode for Lua VM • Very fast, usually compiled at run-time • Programs can be compiled in advance to skip overhead • Portable, builds on anything with a C compiler
Paradigms • Multi-paradigm • Imperative • Functional • Not object-oriented, but object-like constructs can be made using tables and metatables
Reserved Keywords • and • break • do • else • elseif • end • false • for • function • goto • if • in • local • nil • not • or • repeat • return • then • true • until • while
Types • nil • boolean • numbers • strings • tables • functions • userdata • threads
Control Flow • if...then…else…elseif…end • for...do...end • while…do...end • repeat...until
Assignment • “multiple” assignment • a, b, c = “this is multiple assignment”, “yep” • i.e. a = “this is multiple assignment”, b = “yep”, c = nil • a, b = b, a • a and b have swapped values • a = a or b • if not a, a = b
Tables • EVERYTHING IS A TABLE
Typing and scope • Strongly typed • Dynamic typing • local keyword specifies non-globals • Symbol table easily accessible
Special features • Metatables • Closures • Special allowance for object oriented programmers
Metatables • None by default, added with setmetatable • Metamethods include: • add • sub • mul • div • mod • pow • unm • concat • len • eq • lt • le • index • newindex • call
Closures • a function inside of a function • inner function has access to local variables of the outside function
Object-oriented Features • No classes, only prototypes • Syntactic sugar for methods: function table.func(self, args) can be written as table:func(args)
Application Areas • GAMING • Notables include World of Warcraft, FarCry, the CryENGINE2, Garry’s Mod, Angry Birds
Application Areas Cont’d • IDE’s • Operating Systems • Plain Text Editors • Robotics
References • The Evolution of Lua • Programming in Lua, first Edition