"Worse is Better" is just an inaccurate way of saying it. More accurately, "It's the Culture, Stupid!"
If a language fits a group's culture better, it will be adopted more. Smalltalk lacked operator precedence for algebras -- big lose for the non CS sci/tech crowd. At first Java had some of what Smalltalk had, but fit general programming culture better in terms of C-like syntax, free (beer) tools, and static types.
Lisp is close to timeless mathematics, but a bit farther away from everything else than everything else. I don't think it's a coincidence that the AI field gravitated towards Lisp -- those guys were used to meta-abstraction.
Perl just threw every Unix tool there was into a burgeoning scripting Swiss-Army knife. As a result, everyone in the Unix camp could relate to it instantly.
Worse is not better. Better is better. But designing to fit existing cultures has a big short-term payoff for a programming language. This means a bigger user base, which means more eyeballs, more libraries, and other dynamics that also get you lots of Better.
The Best would be: a programming language that has a high fit with non-CS/programming sci/tech types and elegant design, first-rate implementation, and mathematical universality.
"Worse is Better" is just an inaccurate way of saying it. More accurately, "It's the Culture, Stupid!"
No, this is an oversimplification. Richard Gabriel's original essay[1] says it best near the end:
The lesson to be learned from this is that it is often undesirable to go for the right thing first. It is better to get half of the right thing available so that it spreads like a virus. Once people are hooked on it, take the time to improve it to 90% of the right thing.
Loathe as I am to engage in a programming language pissing-match, I think you will be surprised at how widely lua is embedded, perhaps even in products that you have used.
Pithy and sounds good, but totally discounts network effects. Programming languages are subject to network effects -- users create libraries in the language, increasing the usefulness of the language. Of course, interoperation between languages is possible to some degree, but that doesn't detract from the core statement.
It's really not hard to use C libraries from Lua, and its design for embedding / use as an off-the-shelf extension language has made interfacing easily with other languages a high priority.
There are projects that supposedly allow interoperability with Python, Perl, and several other languages (http://lua-users.org/wiki/BindingCodeToLua), though I have only used the C API thus far.
The core language is also small and simple enough that adding major language extensions, such as Erlang's concurrency model (http://concurrentlua.luaforge.net/), is feasible.