In article <jia9d3$68u$
1...@dont-email.me>, Tim Bradshaw <
t...@tfeb.org>
wrote:
I agree with you that Quicklisp is very cool, and I freely concede that
Zach has contributed more to the community than I have.
I also agree with you that the reason people use Clojure is not that it
is a cleaner Lisp than CL. (I happen to believe that Clojure is
superior to CL in some ways, but that is neither here nor there. And,
BTW, despite believing that Clojure is superior to CL in some ways, I
nonetheless do not use it. But explaining why would take us far afield,
so I won't.)
I disagree with you, however, that people use Clojure because it has
access to the standard Java library. If libraries were all that stood
between CL and success then ABCL should have been able to achieve the
same success as Clojure. But it didn't.
So despite Quicklisp being tremendously cool and useful, I nonetheless
predict that it will not change the slow but steady decline in CL usage.
We did that experiment already with ABCL and the outcome was negative.
So... if it's not the language and it's not the libraries, then why is
Clojure winning?
My hypothesis: Clojure is (widely perceived as being) *cool* and CL
isn't. The Clojure community is (widely perceived as being) vibrant and
dynamic, and the CL community isn't. The Clojure community is (W.P.A.)
solving real problems. The CL community is (WPA) spending its time
quibbling over minutiae in the ANSI spec as if it were holy scripture,
and burning apostates at the stake, at least metaphorically.
That hypothesis, of course, raises the obvious question: *why* is
Clojure (WPAB) cool? Here again I can offer only a hypothesis: change.
Of all the programming languages in widespread use today, CL (if it even
deserves to be on that list at all any more) is the only one that has
not had a major revision in the last 18 years.
This is not and never has been about packages or lexicons or the
persistence of defvar or any other particular aspect of the language.
This has always been (and still is) about the possibility of change.
Or, as the case may be, the lack thereof.
I believe that the ability to change is an advantage in and of itself,
completely independent of the relative merits (or lack thereof) of the
thing that you are changing from or to. Like all things, change is
subject to Ron's First Law: all extreme positions are wrong. Sometimes
change can go wrong (c.f. R6RS, Windows Vista, New Coke).
My personal opinion is that the authors of the Spec got a lot right.
They probably got more right in a single design effort than anyone ever
has before or since. But they didn't get everything right.
I am not advocating arbitrary or capricious change, or even change for
its own sake. But if someone encounters something in Clojure (or Python
or Perl or even C) that is badly broken, there is at least the
possibility that it could change if enough people agree that it is badly
broken. If someone encounters something in CL that is badly broken, the
Bayesian prior on its ever changing is for most people at the moment
indistinguishable from zero. So if you're going to use CL you have to
accept one of two premises: either the people who wrote the Spec were
infallible and made no mistakes, or they weren't, and they did, and you
are stuck with those mistakes until you get old and die.
And that is not cool.
rg