Given my recently renewed interest in Lisp and its cousins, I of course can’t help to wonder how they might actually become used as widely as I believe they should be. While not having used either Lisp or Scheme in any real project yet, I agree with the often-made claim that essentially everything one ever wanted to have in a programming language is in there, and many of the concepts introduced in recent iterations of Java and C#, or Python, Ruby, and of course Groovy, are basically just a sign of those languages’ playing catch-up with what’s been there since 1958.
So why doesn’t everybody use Lisp or Scheme? Some people hate the syntax (although it would probably be more correct to say that they hate the lack of one, since Lisp dialects basically directly show the AST), but I don’t think that’s the reason. Some claim it’s the attitude of the Lisp community’s members, and they may be partly right. What I believe, though, is that the ultimate test for a language is not its elegance, or even its core feature set. (If you actually know what lexical scope, closure or continuation means, take a few seconds to remember that you are not part of the majority. Thank you).
What basically determines whether a language is useful is whether it can be used to solve real world problems efficiently. And this, in turn, depends very much on the libraries available — and the only chance for any language to compete with Java or C# is if it’s based on the JVM/CLR. CommonLisp, criticized by Scheme aficionados as bloated, only contains a fraction of the functionality of the J2SE or .NET libraries (not even including the plethora of open source stuff, especially in the J2SE case). Perl has managed to attract enough of a community to come up with the extremely extensive CPAN, but I believe it’s probably the last language to have managed that.
What could attract people to Lisp, or Scheme (the latter probably being a better choice), would be something like JScheme or Kawa, if done right. I don’t know whether my view is flawed, or these implementations, but I’ll comment on that once I know more about them.