[ Jocelyn Ireson-Paine's Home Page | Publications | Dobbs Code Talk Index | Dobbs Blog Version ]

((What ((is) with (all)) of (the) ()s?) Hmmm?)

In order to establish myself as a fair-minded individual, I decided to balance the pro-Lisp quotes I blogged in my lead-up to Randall Munro's cartoon, by searching the Web for anti-Lisp quotes.

The trouble was that I couldn't find many. Granted, some of the Lisp praise was half-hearted, as in the following peculiar conversation at (LOOP (FORMAT T "~%Hello Metafilter")):

— [jeffamaphone] Learning LISP is an interesting exercise in logic, but a waste of time if you want to write programs that are actually useful. I'll take LISP over Prolog though.
— [cortex] Faint praise. I could say the same for scabies.
— [spacewrench] LISP over scabies, or scabies over Prolog?

Clearly, my next research goal must be to invent a logic-programming language better than Prolog, then promote it under the acronym Scabies. Anyway, some programmers, while not against Lisp themselves, have worried that their customers might be. John Walker, in a page on the history of Lisp in AutoCAD, explains how this affected their marketing in 1985:

As the release of AutoCAD 2.1 loomed closer, we were somewhat diffident about unleashing Lisp as our application language. This was at the very peak of the hype-train about expert systems, artificial intelligence, and Lisp machines, and while we didn't mind the free publicity we'd gain from the choice of Lisp, we were afraid that what was, in fact, a very simple macro language embedded within AutoCAD would be perceived as requiring arcane and specialised knowledge and thus frighten off the very application developers for whom we implemented it. In fact, when we first shipped AutoCAD 2.1, we didn't use the word 'Lisp' at all - we called it the 'variables and expressions feature'. Only in release 2.18, in which we provided the full functional and iterative capabilities of Lisp, did we introduce the term 'AutoLisp'.

Of course, programmers do poke fun at Lisp's brackets. One is often informed that Lisp stands for "Lots of Irritating Single Parentheses". As "An Anonymous Coward" says in a Slashdot question and answer session with Kent Pitman:

((
What (
(is) with (all)
) of (the) ()s?
)
Hmmm?
)

But then, computer scientist Alan Perlis tells us that

Syntactic sugar causes cancer of the semi-colons.
and Lisp's unsugared prefix notation does make it remarkably concise. Therefore, according to Philip Greenspun:
SQL, Lisp, and Haskell are the only programming languages that I've seen where one spends more time thinking than typing.

Actually, it's interesting that Greenspun mentions Haskell. Hear the passion in the Lisp quotes I mentioned last week. Lisp "feels like lightning between your fingertips". Lisp is "the language God would have used to implement the Universe". Or, as Alan Kay describes it:

The greatest single programming language ever designed.
Now show me such passion in praise of C++, Java, Perl, or Python. Or any other language. Including Haskell.

(Incidentally, I have just discovered the following definition in Shae Erisson's random #haskell quotes:

Ubuntu, an ancient African word meaning "I can't configure Debian".
)

Well, when the Director of Research at Google recommends Lisp, perhaps passionate enthusiasm is justified. Here's Peter Norvig on its benefits:

In Lisp, if you want to do aspect-oriented programming, you just do a bunch of macros and you're there. In Java, you have to get Gregor Kiczales to go out and start a new company, taking months and years and try to get that to work. Lisp still has the advantage there, it's just a question of people wanting that.

Let me be provocative and finish with an opinion from Lisp enthusiast Paul Graham. He writes:

Java was, as Gosling says in the first Java white paper, designed for average programmers. It's a perfectly legitimate goal to design a language for average programmers. (Or for that matter for small children, like Logo.) But it is also a legitimate, and very different, goal to design a language for good programmers.