April 21, 2006
Erann Gat: "How Common Lisp Sucks"

this modern world: nitpicking squad

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 following:

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 badly.

And the very first response:

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.

Posted by jjwiseman at April 21, 2006 03:08 PM

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!

Posted by: Eman on April 21, 2006 05:20 PM

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...

Posted by: Geoff Wozniak on April 21, 2006 08:25 PM

I've wondered why Lisp users are considered smug, given articles like, "Linux Snobs, The Real Barriers to Entry" and "How the techno-geeks kicked my ass for my own good". Perhaps there's some reality to smuglispweenieness, or maybe programmers just don't like a taste of their own medicine. I really don't know.

Posted by: Tayssir John Gabbour on April 21, 2006 10:59 PM

The man formerly known as Erann Gat demands no nitpicking and everyone should comply?

Posted by: Stefan Scholl on April 22, 2006 04:55 AM

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.

Posted by: Daniel Barlow on April 22, 2006 10:52 AM

"bury one's head in the sand": Refuse to face something by pretending not to see it.
-- answers.com

Posted by: Richard Noggin on April 22, 2006 09:38 PM

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.

Posted by: Quillian on April 22, 2006 11:30 PM

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 ...

Posted by: Stefan Scholl on April 23, 2006 01:52 AM

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.

Posted by: Daniel Barlow on April 24, 2006 11:02 AM

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.

Posted by: Robert Goldman on April 24, 2006 03:26 PM

"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."

But this is the same "central issue" as he pointed out last time. And the time before. Raking it up /again/ is unlikely to be productive, is all I'm saying: the approach has been demonstrated ineffective twice; perhaps he should try doing something else


Despite its manifold faults, I managed to turn asdf into a more or less de facto standard. (Which I'm slightly ashamed of, but that's a discussion for another time). If I can do that as a Lisp programmer of about three years experience (at the time) and no significant public accomplishments, surely Ron's position as an elder statesman of the community ("I spent twenty years programming in Lisp for a living. I have authored some highly referenced papers on Lisp") should make it really quite simple for him to do similarly if that's what he sets his mind to. If he's just going to carry on beating the dead horse instead, I'll stick to my "whining" assessment.

Posted by: Daniel Barlow on April 25, 2006 03:36 AM

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.

Posted by: justin on April 25, 2006 01:42 PM

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? :)

Posted by: Craig Turner on April 26, 2006 07:19 AM

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.

Posted by: eric on April 26, 2006 10:25 PM

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

Posted by: Stefan Scholl on April 29, 2006 01:42 AM

"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?

Posted by: Daniel Barlow on April 30, 2006 07:25 AM

Isn't ASDF a de facto standard at this point?

not joking,

Posted by: Michael Hannemann on April 30, 2006 07:55 AM

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.

Posted by: Marc Abramowitz on April 30, 2006 09:14 PM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?