Call : (+91) 968636 4243
Mail : info@EncartaLabs.com
EncartaLabs

Lua

( Duration: 5 Days )

Lua is an easy to use scripting language that is used as an embedded plugin/extension language in different products. Lua can also be used as a standalone language. It is a lightweight, multi-paradigm programming language and therefore the course teaches various concepts that delegates will find useful in other areas of software engineering as well.

The Lua training course covers the basic programming constructs, advanced techniques and embedding of Lua into other programming languages and embedding other programming languages into Lua.

  • Programming experience or Familiarity with at least one other programming language.

COURSE AGENDA

1

Introduction to Lua

  • A bit of history
  • Lua's goals, features and non-goals
  • Resources of Lua documentation and tutorials
  • Installing the Lua interpreter
  • Setting up and using LuaRocks
2

Basic syntax and semantics

  • Identifiers
  • Comments, block comments
  • Global variables and enforcing of strictness
  • Local variables
  • Standalone programs, program arguments
  • Compilation units, chunks, expressions, semicolons
3

Data types and data structures

  • Basic types: nil, boolean, number, string
  • Object types: function, userdata, thread, table
  • References/objects vs. basic values
  • The importance of tables in Lua
4

Introduction to tables and their versatility

  • Tables as an associative array
  • Tables as numeric arrays, sequences
5

Basic control structures

  • The if then elseif else end
  • The while loop
  • The repeat loop
  • The simple for loop
6

Error handling

  • Return values vs exceptions
  • Converting a return value to an exception
  • Converting an exception to a return value
  • Error levels
7

Example programs

  • Polynomial evaluation
  • Breadth first search
  • Additional exercises
8

More about functions

  • Named arguments
  • Object-oriented calls
  • Closures
  • Currying
  • Tail calls
  • Multiple assignment and return
  • Var args
9

Iterators and co-routines

  • The generic for loop
  • Stateless vs stateful iterators
  • Differences between iterators and co-routines
10

Metatables and metamethods

  • The set example
  • The __tostring metamethod
  • Arithmetic metamethods
  • The __index, __newindex metamethods
  • The __len metamethod
11

Modules and packages

  • Using modules
  • Creating modules
  • Organizing modules into packages
12

Advanced tables

  • Tables for queues and stacks
  • Tables describing graphs
  • Matrices as tables
  • Linked lists as tables
  • String buffers
13

Metatables through examples

  • Proxies
  • Readonly
  • Memoization
  • Dynamic programming with memoization
  • The Fibonacci example
14

Environments

  • Relationship between global variables and environments
  • Free variables
  • The _ENV table and the _G table
15

More about modules

  • Different approaches to creating modules
  • Modules that change the behavior
  • Module initialization and arguments
  • Using environments to implement safe modules
16

Advanced iterators and co-routines

  • Producer, consumer, filter
  • Wrapping co-routines to get iterators
  • Stateless iterator for linked lists
17

Contributing to the Ecosystem

  • Uploading packages to MoonRocks
18

Functional paradigm in Lua

  • The map function
  • The reduce / fold function
19

Object-oriented Programming

  • Different approaches to OOP
  • Different approaches to inheritance
20

A walkthrough of the Lua Standard Libraries

21

Compilation

  • Compilation
  • Eval
  • Relationship with the environment
  • Binary chunks
22

Garbage collection

  • Weak tables
  • Finalizers, the __gc meta-method
23

Lua bytecode and virtual machine

  • Generating bytecode from source code
  • Reading and analyzing bytecode
  • Quick tour of the source code of the Lua VM
24

C modules

  • Calling C from Lua
  • Search path and loading of C modules
25

Calling Lua from C

  • The Stack
  • Error handling
  • Continuations
26

Handling Lua values and types from C

  • Arrays
  • Strings
  • Userdata
  • Metatables
  • Object oriented calls
  • Light userdata
27

Memory management

  • Allocators
  • GC API
28

Threads in Lua

  • Co-routines vs threads
  • Real multi-threading and Lua states

Encarta Labs Advantage

  • One Stop Corporate Training Solution Providers for over 6,000 various courses on a variety of subjects
  • All courses are delivered by Industry Veterans
  • Get jumpstarted from newbie to production ready in a matter of few days
  • Trained more than 50,000 Corporate executives across the Globe
  • All our trainings are conducted in workshop mode with more focus on hands-on sessions

View our other course offerings by visiting https://www.encartalabs.com/course-catalogue-all.php

Contact us for delivering this course as a public/open-house workshop/online training for a group of 10+ candidates.

Top
Notice
X