A powerful, fast, lightweight, embeddable scripting language.
Pro Prototype based object oriented programming
Prototype based OOP was designed to be a more clear and easy to understand alternative to class based OOP, the creators of prototypes seeing classes as an unnecessary and complex way of handling classes. As such, it may be an ideal way to introduce a beginner to OOP concepts.
Lua's performance compares very well to other languages, If performance needs to be further improved you can:
- Implement critical parts in C
- Use the LuaJIT compiler. The LuaJIT compiler is a drop in replacement for the stock compiler and provides significant performance improvements. From the overview page:
LuaJIT speeds can rival code written in C.
Con Undeclared variables are global
When writing a function, if a programmer forgets to declare a variable, that variable will be declared at global scope. The code will seem to run fine at first, but if another function uses a variable with the same name, but fails to declare it, it will create subtle, incredibly difficult to find bugs.