I’m a huge fan of Lua:
-
Syntax is vaguely Pascal-like and works well in scripts.
-
Superb power-to-weight ratio. Superb engineering. Very good design.
-
Extremely portable to any platform with an ANSI C compiler.
-
GUI support through wxLua and other bindings
-
Some support for hiding OS differences in common tasks, e.g., the Lua File System add-on
-
The core system and libraries are simple enough that you can understand all of what you’re using, but still have excellent leverage compared to bash/bat. Expressive power is comparable to Python or Ruby.
-
You’re not overwhelmed with libraries and frameworks, which can be a plus or a minus.
-
There is an excellent book: Roberto Ierusalimschy’s Programming in Lua; you can get the previous edition free online.
-
Performance beats tcl, perl, python, ruby
-
For even faster performance on x86 hardware, there is LuaJIT.
-
Finally, and this is the ace in the hole: if you run into any kind of platform-specific problem, it is easy to write platform-specific C code and load it into a Lua script dynamically. Lua was designed with this task in mind and does it extremely well. You can also easily dip into C for performance (e.g., compute MD5 checksum).
Over the last 3 to 5 years, I have been gradually migrating scripts from bash/ksh/awk/sed/grep/perl into Lua. I have been very happy with the results.