Re: How Common Lisp sucks
- From: "Tagore Smith" <tagore@xxxxxxxxxxxxxxx>
- Date: 22 Apr 2006 00:10:36 -0700
Ron Garret wrote:
Two things to get out of the way at the outset:
1. Note that the title of this post is *HOW* CL sucks, not *WHY* it
sucks. The difference is significant. Please take the time to
understand it before you flame me.
I think I've understood you, after reading a fair number (though not
all, by any means) of the responses to your post, and your responses to
them. Can I flame you now ;)?
I don't entirely disagree with the points you make- the things you
bring up here, and in follow-ups, are clearly obstacles to CL being
adopted in a Perl-like (or Python-like, or Ruby-like, or VB-like)
fashion. If they were solved, would CL then be adopted as these other
languages are (though I have reservations when it comes to Python and
Ruby, in this respect- there are far more enthusiasts of these
languages than there are jobs that require them as primary programming
languages- and I do, in fact, administer a Zope based site- bit of a
nightmare, really)?
I don't think so. If you are waiting for CL to become the scripting
language du jour, I think you had better pack a lunch- that, or call
ahead to Godot catering; they are notoriously slow, but the deliveryman
will arrive before CL becomes Perl. I don't think that your points,
some of which are valid, are the bottleneck when it comes to CL
adoption. If you eliminated every single one of the problems you cite,
CL would... still not become popular, aside from cites by Slashdot
poseurs who couldn't write "Hello World" in CL if John McCarthy bit
them on the ass.
2. I'm not going to say anything I haven't said a thousand times
before, so those of you who know me (that means you, Kenny) will not
find anything new here so you may as well not even bother.
Honestly (and, despite my tone, I don't actually mean to flame you), I
would have heard this a thousand times already _even if I had never
read any of your posts_. That you post this is evidence that it is
still necessary to bother. In some cases I agree more with you than
with those who bother, but I think your main thrust is misguided- more
below.
I am writing this because of the debate surrounding Steve Yegge's recent
blog entries on Lisp.
I've read just one of these, in order to know what you are talking
about....
It is unfortunate that he made so many technical
mistakes in his posts
The post I read is at:
http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html
Again, I could have summarized it without having read it, just as I can
relate the substance of the average bodice ripper to you without having
to actually read about the sultry night, or the details of the rended
undergarments. This sort of Lisp journalism should be recognized as a
genre at this point, awards handed out at each equinox- I favor "The
Frilly" as the name of the statue awarded.
The problems with this post are not primarily technical points:
"Macros are one of the worst problems with Lisp, or at least they're
one of the biggest unsolved problems."
Really? You don't actually have to write macros... in fact, I was
introduced to both Scheme and CL at University, in a decent CS program,
and macros were never explicitly introduced. I still liked both
languages.
"Yes, they're amazingly powerful and critically important and blah Blah
BLAH"
Now I'm convinced that macros are EVIL! The escalation from blah to
Blah to BLAH is hard to argue with.
"But they're fraught with problems. One is that they're not hygienic."
Really? Why? If you want to implement hygienic macros in CL, go ahead.
If you want them built-in there are a number of Schemes available. I
wonder if the author understands the difference between a Lisp-1 and a
Lisp-2, and why the distinction matters. If the author had actually
offered a critique of "real" macros ( ;), sorry schemers), I would
know.... but he just tells us that they are "fraught with problems".
Does that mean "I got stuck on chapter 10 of OnLisp, right about where
gensyms were introduced"? The whole article is like that. "Math is
hard" is not a good argument against the various calculi.
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.)
It's not so much that I like the fact that Lisp keeps out the
riff-raff. It's that it offers advantages to some programmers that are
not available to all programmers. I would welcome a single free easy to
use default cross-platform implementation with lots of useable
libraries that required no background to get started with, frankly. I
wouldn't welcome it enough for it to be worth it to me to build it, as
I see no commercial future in it, and I am a bit busy writing CL code,
along with code in almost every other language lately presented as a
panacea, for an ongoing enterprise that pays my salary.
I will say that CL has one great advantage when it comes to hiring... I
have to hire people occasionally, and their resumes sometimes include
some Lisp. I think they put it on there because they are sure that they
won't be challenged on it. A surprising number of people with Lisp or
Scheme on the resume do not know _the first thing_ about either. I'm
afraid that some of these folks have taken CS classes that were taught
in these languages, and all they remember is parentheses....
I'm going to point out just three problems with CL. There are more.
None of these are original observations.
Your first points can be simply addressed: pick an implementation,
based on what you need, and pay for it if necessary. You will always be
wishing for features in another implementation, but that is just 'cause
the other implementations exist. You don't wish for features in a
different Python (Perl, Ruby) because there isn't really a different
Python (and yes, I know all about stackless, and Jython, etc.).
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.
Nonsense. There are a lot of startups in the world- attach yourself to
one as lead programmer. Once you have a position of authority use CL,
if you think it is the best language for the job, but make sure to
follow through. It's not polite to talk about salary, but I think I do
substantially better than most programmers, even with the handicap of
preferring CL to Python.
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."
I breathlessly await ARC.
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.
I actually agree with you here, but I agree with you as a _professional
CL programmer_. I haven't been programming in Lisp for 20 years- maybe
10 ;). I also program, professionally, in a number of different
languages, as I have to manage a few different systems... but I am
converting most of them to CL- I find that CL's disadvantages are
smaller, for me, than the disadvantages of most other languages.
I won't argue against anything anyone does to make the language I use
better, or easier to use, but... the argument you are making is old,
and Yegge's article is hard to take seriously.
CL will _never_ be adopted as a popular language among the bulk of
people who now use Perl and Python and Ruby. They suffered enough
learning to put one statement after another, and they will react badly
to any attempt to explain that that is not the only way to program, as
learning another would entail further suffering. PHP is popular for a
reason. That PHP is popular is not a good criticism of CL.
.
- Follow-Ups:
- Re: How Common Lisp sucks
- From: Ron Garret
- Re: How Common Lisp sucks
- References:
- How Common Lisp sucks
- From: Ron Garret
- How Common Lisp sucks
- Prev by Date: Re: A Gentle proposal: Coup d'thud
- Next by Date: Re: Portable Allegroserve and SBCL
- Previous by thread: Re: How Common Lisp sucks
- Next by thread: Re: How Common Lisp sucks
- Index(es):
Relevant Pages
|