This is a very interesting question. My day job is to learn programming languages, and Lua will study carefully. I would say about very few other languages โโ(perhaps Icon and CLU). Note that this is the language as a whole, and not the individual features, which makes Lua so worthy of study.
Is this the result of interesting new ideas that the developers had, or is it the result of a good fulfillment of established ideas?
I. For more information, the best source for answering this question is The Evolution of Lua , which appeared at the third ACM Symposium on the History of Programming Languages. But I will add a few comments.
Using Lua tables as the only mutable non-atomic data type was invented by the Lua team. They were inspired by the events in the CLU, and I believe that they knew about similar work in Awk and Icon, but clarification to this extent is an important contribution of the Lua team.
Tables also have a very efficient implementation, which was invented by the Lua team.
Lua's functionality has the same semantics as Scheme, but Lua has a unique implementation of first-class functions that I think they should submit for publication in the Journal of Functional Programming.
The implementation API has been greatly improved over the years. Its main distinguishing feature is that custom abstract types can fully participate in embedding. This is the property that makes the Lua API superior to the Tcl API, for example. Over the years, the Lua API has undergone significant improvements, including since its first publication in version 2.5. Lua designers deserve great credit here.
Garbage collection technology is standard.
Lua coroutines represent a new approach to some very old ideas. The new approach is considered worthy of publication in ACM Transactions in programming languages โโand systems, so again I think that the Lua team deserves originality.
Lua metadata is associated with a common Lisp meta object.
I think the success of Lua stems from a unique combination of the strengths of the Lua team:
If you read the HOPL document, you will see that the Lua team was well aware of many developments in programming languages โโand were able to choose from the best ideas. Most developers of popular scripting languages โโwere amateurs and were not so well informed.
Lua is superbly designed so that the pieces combine very well with an excellent power to weight ratio. This was the result of much improvement over time, and PUC-Rio wanted the Lua team to work on the design and implementation of the language, rather than shredding a huge amount of paper. This work could not be done at a North American university.
Lua is superbly designed. The implementation is just amazingly good. This is partly an excellent work of great engineers and partly the ability to constantly revise design over a 15-year period.
I will close by asking readers not to underestimate the difficulty of choosing and refining well-established ideas in order to form a single whole. This is an extremely difficult job and is rarely recognized, as it should be.
Norman Ramsey Jan 20 '10 at 15:17 2010-01-20 15:17
source share