Lua is a simple and powerful scripting language. It supports a variety of programming paradigms, including procedural, object-oriented, and functional programming. While Lua can also be used as a standalone language, it is more common nowadays to embed it within other applications. Lua was designed with speed, portability, and ease-of-use in mind.
Lua is also one of the leading scripting languages used in game development, due to its simple syntax and short learning curve.
A brief history

Lua was created in 1993 by members of the Computer Graphics Technology Group at the Pontifical Catholic University of Rio de Janeiro in Brazil. One of Lua’s predecessors was SOL, or Simple Object Language, a language mainly used for data-description and configuration. The first version of Lua was designed in a way that its object constructors incorporated the data-description syntax of SOL. Sol is also the Portuguese word for Sun. The name Lua, meaning Moon in Portuguese, was coined to symbolize it as being the successor to SOL.
Why use Lua?

It is simple and fast.
As if it hasn’t been stressed enough, Lua is a breeze to learn due to its simple syntax. This also means that compiling a Lua application is equally as fast. While native Lua compilation is already fast by itself, a Lua JIT compiler is also available for even faster compiling.

It is portable and lightweight.
Installing Lua on your system is easy and would not cause it to bloat at all. It simply involves downloading either a zip file (for Windows) or a tar file (for Linux and MacOS) from the official Lua SourceFourge website that contains all the binary files you would need. You just need to either unzip the file (for Windows) or issue a few commands in the terminal to extract the tar file contents (for Linux and MacOS), and you’d be ready to code Lua scripts in no time. Once done, the Lua binaries will only take up more or less 900 kB of space in your system!
An IDE is not required at all, though the official website recommends ZeroBrane Studio.

You can create games with it!
Some of the popular games that uses Lua Scripting include the Angry Birds and World of Warcraft series. In game development, there are times when you want to be able to perform a simple operation, such as make the character move in the right direction when you press the arrow keys. Or perhaps, you want to change the colour of the character’s outfit. By embedding Lua in your application, you can let Lua take care of all these simple tasks, and let the main programming language take care of the more complex tasks.
A popular game engine that uses Lua Scripting is LÖVE (or LÖVE2D).
Lua Features
Here are some of highlights of Lua:
1) It is a dynamically-typed language.

There is no need to assign variable data types in Lua. Variable data types are dynamically set once values are assigned to them.
One quirk of Lua is the nil data type. If Lua cannot find a variable with a specific name defined within the source code, nil would be returned. In other programming languages, this would result in a compilation or runtime error.
2) All variables have global scope by default.

When you declare a variable in Lua, it has global scope by default. You can choose to add an optional local keyword to explicitly limit its scope within a function, for example.
3) There is only one data structure in Lua.

The only native data structure in Lua is the table. Tables are extremely flexible, though. They can act as simple linear data types like arrays and linked lists, but through the help of a special table called a metatable, tables can take on more complex tasks. In my next blog post, I will be talking more about tables, the forms they can take, and how to do basic objected-oriented programming using tables and metatables. Stay tuned!