I have an opportunity to introduce Lua in my workplace. My goal is to
replace an existing scripting language. The existing language is
proprietary, was developed in-house, has limited functionality, is
hard to maintain and extend, and is only maintained by its inventor.
I have already shown that Lua can be used in place of the existing
language, but my boss wants to know why we should bother. After all,
he says, the existing language is working (for now) and we have
several developers who are trained to use it. These developers would
have to learn Lua.
Your boss may be right in the short term. There is always a cost of
switching -- rewriting code and retraining people. Also the old language
might have some features better suited to your application than Lua
(perhaps reference counting and
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization).
But companies that only focus on short term goals eventually get outrun
by companies that focus on long term goals.
We switched from an in-house language to Lua because:
* Lua was significantly faster
* Lua had more features (upvalues, continuations)
* Lua was more introspective and hackable (tables, metatables)
* Lua was more well-designed and internally consistent
(few languages are as well-designed as Lua)
* Lua had an active community (you can buy books about Lua, read about
it on web pages, ask about it on mailing lists and hire people that
already know it)
* The existing language had a somewhat messy implementation --- even
small changes and bug fixes took a lot of time to make
The switch was facilitated by the fact that:
* Lua is very easy to integrate into an existing implementation
* Lua is a very small language with few gotchas and can be learned
quickly
In retrospect I'm almost surprised by how quick and painless the switch
was. Within two weeks everyone was writing Lua without much trouble. And
in a month all the old code was converted (there was quite a lot) and we
were fully switched over to Lua.
I am very happy that we made the switch.
// Niklas