April 21, 2006
Erann Gat: "How Common Lisp Sucks"
Steve Yegge's recent post on Lisp inspired Erann Gat to post “How Common Lisp Sucks” to comp.lang.lisp:
I am writing this because of the debate surrounding Steve Yegge's recent
blog entries on Lisp. It is unfortunate that he made so many technical
mistakes in his posts because they distract people from the fact that
underneath all the errors he is actually making a valid point, that
being that CL has very significant problems that are barriers to its
adoption. (Some people think this is a feature, that having a few
obstacles to overcome keeps out the rif raf. I suppose this is a
defensible position, but I don't subscribe to it.)
Now, for those of you who wish to respond I ask you to keep in mind the
1. The details of my criticisms are mostly irrelevant. What matters is
that CL is far from perfect, and that it has no mechanism for change.
So don't bother picking a nit about one of my specific criticisms unless
you wish to argue that CL is perfect and doesn't need to change.
2. I know a lot more about Lisp that Steve Yegge. I spent twenty years
programming in Lisp for a living. I have authored some highly
referenced papers on Lisp. I am far from the world's foremost expert,
but I'm no newbie. If you think I'm wrong about a technical point you
should think twice.
3. I do not hate Lisp. It is and has always been my favorite
programming languages. My love for Lisp pretty much destroyed my career
as a programmer. My motivation for criticising Lisp is not to convince
people not to use it. It is to effect changes that I believe are
necessary to get more people to use it. To quote Paul Graham, "It's not
Lisp that sucks, it's Common Lisp that sucks." And actually, I would
soften that somewhat: it's not Common Lisp that sucks, it's some parts
of Common Lisp that suck. But make no mistake, some parts of Common
Lisp really do suck, and unless they are fixed a lot of people -- myself
included -- won't be able to use it even though they may want to really
And the very first response:
Posted by jjwiseman at April 21, 2006 03:08 PM
Ron Garret <rNOSPA...@flownet.com> wrote:
> trying to use Lisp for e.g. writing a Web server is an incredibly
> painful experience compared to doing the same thing in e.g. Python.
I could list some web servers written in Common Lisp. And one of
them was the first HTTP 1.1 compliant server and used by the W3C
to debug the HTTP 1.1 reference implementation.
And the youngest of the Common Lisp web servers was first
released on 2005-12-31.
That thread is becoming an example of the Smug Lisp Weenieism of Lisp programmers. In the thread you mention, look at how one of the posters refuses to concede that "batteries included" is a good thing--instead preferring some head-in-the-sand pedandic backflips. Imaging having to work with that guy!
I sincerely hope that no one interested in Lisp finds that thread and starts reading it. If I was a newcomer to Lisp looking for advice and got some of the attitude that is coming across there, I would immediately go looking at something else.
Embarrassing, really. But then again, it's usenet...
The man formerly known as Erann Gat demands no nitpicking and everyone should comply?
Insanity: doing the same thing over and over again and expecting different results.
-- Albert Einstein (attrib)
I observe merely that this isn't the first time we've heard this complaint from Ron.
"bury one's head in the sand": Refuse to face something by pretending not to see it.
I don't know Lisp much at all, was Erann Gat nitpicking about Common Lisp to begin with?
Any given language has plenty of deficiences. I still program for money in C and I don't see that changing anytime soon(I have a copy of ANSI Common Lisp and dork with it in my spare time "for fun"). I suppose that rather than talk about how I can't get something in C, I just figure out how to make something work anyways, or change my approach. I don't know if most people that like Lisp just can't handle imperfection, or just the ones who feel strongly enough to post replies about it.
By the way: It's Ron Garret now, not Erann Gat. He changed the name.
This could be the reason for the many postings in the thread. Just another unknown guy who posts a rant about Common Lisp without actually knowing or using it. Erann Gat programmed a web server in Common Lisp, by the way ...
Mr Noggin: Nobody's burying their heads in the sand (well, I can't answer for everybody, but I'm not). But Ron's stated goal in writing this was not just to point out the deficiencies but that it would somehow cause them to be fixed, and I see no reason that his strategy should be any more successful this time than it was last time. Perhaps you can?
Of course, this is all aside from the related issue that (in my observation) whining is seldom a very good way to get results the first time, never mind the second.
I was quite disappointed at how much the discussion in c.l.l. seemed to dodge what is, IMHO, the central issue. The central issue that Gat/Garret pointed out, which is not just whining, is that the CL community has no authoritative body that can review and enforce improvements to the language. The ANSI standard is frozen in stone and there is no means to go beyond it.
I don't think that this is just whining.
To some extent Erann/Ron is as much to blame as the rest for allowing the discussion to get lost. The vivid example of the web library was just too good an opportunity for big-picture-avoiding vituperation.
I don't think it really matters even if ALL of Ron's specific suck examples are wrong; the important point is that he's right that we don't have a good way to keep CL moving forward across implementations.
I wish as a community we'd get back to thinking about whether the CLRFI or some similar mechanism can help us go beyond the ANSI standard.
I thought it was a useless post and bound to start a 200 message flame war, which it did.
He's basically saying common lisp has some problems and there's no way to fix them. But makes no suggestion for how they could be fixed.
Luckily it did introduce me to Ron Garret who's written some great papers on AI which I'd not read, and now I have.
I have a feeling that maybe the answer to lisp's problems is not as huge as people make it out to be. What we need is a distribution of lisp that includes a standard set of good libraries and has a tutorial geared towards its own usage rather than lisp in general. Basically, someone could create all that functionality that's mentioned in the python tutorial as a unified library for sbcl; make sure that it's easy to install on a lot of popular linux distros; release it; write a new tutorial that rips off the python tutorial... and we'd be there. The newlisp crowd have sort of done something similar, although that's not common lisp, it's just cl-like.
I spent a day on the weekend trying to get into lisp and just repeatedly ran into problems. And that's been typical of my experience every time I've sat down to it over the course of the last four years. I won't mention the libraries specifically, because I've been in contact with the authors and they're being helpful trying to get things working for me. But - basically - you can't have confidence that any sorts of systems programming you want to do will work. Everything breaks - that's my experience. This sucks.
During my evenings this week, I've been making mini-libraries of functionality from an old O'Reilly Systems Programming book I have. When I get some time I'll get back to it - current task is accessing those new libraries from lisp. Hopefully I can get my toolchain to the point where I can just knock out the functionality I need as a series of thin C tools in static libraries and then call them from my lisp environment. Fast and dependable. But - will http://www.cliki.net/CFFI work as expected, or will I have to fight that en-route as well? :)
Ron has the right idea, but the wrong solution. Any kind of authoritative, committee-driven process is doomed to failure.
The real problem is that an open-source implementation isn't driving the process forward. The proprietary vendors have their own (high-priced ) agendas, and so have no reason to really adopt anything outside of their influence.
If SBCL or some other implementation ever gets really good crossplatform support with tons of out-of-the-box libraries, then it'll be in a position to push the commercial vendors to adopt some ad-hoc standards.
Of course the other answer (and might be easier) is for something like Arc to come about eventually, with one implementation, and all the libraries out of the box.
The bottom line is that authoritative bodies will never fly at this point in time.
What most critics are missing: We/they are working on it!
I'm a late Common Lisp user. I had it really good, because ASDF was starting to be used at the time I grabbed my copy of "ANSI Common Lisp" from the shelf again.
In comp.lang.lisp Kenny made a MORE CODE campaign which found its followers.
Yes, there was still some stuff missing. And the reddit case brought more movement into the (non existant) community. There's now the Gardeners Project
"If SBCL or some other implementation ever gets really good crossplatform support with tons of out-of-the-box libraries, then it'll be in a position to push the commercial vendors to adopt some ad-hoc standards."
Like ASDF, for example?
Isn't ASDF a de facto standard at this point?
ASDF is really cool, but for some reason it took me a while to realize that it existed. Ditto for CL web servers like araneida and portable allegroserve.
CL is doing better it seems to me than the surface impression it tends to give. Perhaps because the community seems a bit more exclusive - like they like to keep a good thing to themselves or something.
Peter Seibel's "Practical Common Lisp" and the cl-gardeners seem to indicate that the situation may be improving though.