Lisp50 Notes part VI: The Future of Lisp

In a sense, I’ve written all the other posts in this series just so you can understand what happened when Rich Hickey gave his talk. Maybe you’ve already read a post from a Lisp hacker that was there, so you think you already know how this ends. Think again. Let me break this down so you can see the full context in which he was speaking:

* We started with the Steele/Gabriel “meta-talk.” As the guy on LispCast said, this talk inadvertently gave an impression of general stagnation among the Common Lisp community.

* We’d heard much of the history of Lisp and Common Lisp… and the story seemed to indicate that the Lisp community spent too much energy fighting among themselves before they could finally realize that C and C++ were their real enemies.

* Fritza Kunze’s idea of completing a new Lisp within 12 months pretty much tanked.

* Those of us that held out hopes for Scheme being the answer to our dreams were disappointed to hear William Clinger describe in exquisite detail all of the problems with the R6RS process.

I don’t know when it was, but at some point a guy toward the front pleaded for just some basic libraries for GUI’s, database access, and web services. Someone tried to punt on that question, but a consensus emerged that it was way too hard for anyone that just wanted to build a stupid application. Later on we would hear about some of the technical reasons behind that difficulty, but still… there was no good answer on the table.

So into that setting comes Rich Hickey. We wanted a new Lisp. A simpler Lisp. A cleaned up Lisp with decent library support. We wanted to be able to use Lisp on our day jobs and not just on “the back forty.” And Rich Hickey basically says to us, “I’ve already got one.” (!)

And not only that… he gave an really good presentation. I admit, I’m a snob. I never really looked at Clojure myself– one mention of the word “Java” and my mind was closed to whatever it had to offer. But he knew all of my objections and had clear and concise answers for them. He also knew about the kinds of frustrations I’ve had with Common Lisp… and he had answers for those as well. But he also knew what makes Lisp great. The thing that clinched it was that he knew exactly why we were so enamored with Alan Perlis. And he could take Perlis’s ideas and take them one step further.

It was electrifying.

This is the thing that sold me: hash tables in Common Lisp are a pain to work with. As Hickey said, “you can’t write lispy code with Lisp hash tables.” But take a look at how you do hash tables in Clojure:

And unlike some of the talks that were tinged with a little bitterness, a sense of loss, or a sense of nostalgia, Hickey was upbeat and forward looking. “Lisp as an idea is still vibrant, especially among young developers,” he said. “People are excited about Lisp and the idea of Lisp.”

At end of the talk, JonL was the first to speak, as usual. I think even he was temporarily speechless. While he might have had reservations about the hash table trick that I like so much, he still gave his blessing to Hicky: “You love to go to Lisp and you understand why,” he said with clear admiration. The sense of relief that passed over the room at that point was palpable. After JonL was finished responding, a young developer in the back could not contain himself. “This is the best thing I’ve ever heard in any conference,” he said. “Great work.”

13 Responses to “Lisp50 Notes part VI: The Future of Lisp”

I have to say, I’m really jealous of everyone who got to go to Lisp50, slightly less so since McCarthy didn’t make it due to health but still pretty damn jealous.

Funny part is the big reason is I’ve really wanted to hear Rich talk about Clojure in person. Been following it for 8 months or so, and seeing what he’s been doing, the way he’s been building a community from the ground up, is simply amazing. He gives me hope a Lisp dialect could become truly mainstream again.

If you haven’t yet I recommend joining the google group, as there’s a LOT of active discussion there (I think this past month there’s been something like 900-1k messages posted, including enough by Rich to help guide the community plus bug solving/etc). Hell even Bill Clementson has shown up there recently.

What answers did Hicky have for those of us who prefer Common Lisp because of the regular syntax and the absence of syntactic sugar? Is it possible to write Clojure code without making bracket soup? :-)

There simply wasn’t time to get into that. The focus was on how (while sacrificing many cool things about Common Lisp that are hard to give up, sure) you get the benifit of massive libraries, JVM research, and also take get to take advantage of the “hot” concurrency idiom. If you can do your job in Common Lisp, then I don’t think Hickey wants to take that away from you– he’d probably do it himself, all other things being equal. The “killer ap” of clojure is that you can program in Lisp and the “suits” need never know– you just drop in a jar file and it looks like regular java code to everyone else.

Does anyone else hate the :keyword syntax? If :foo is shorthand for namespace:foo (where “namespace” is the default keyword namespace) couldn’t lexers be smart and instead use foo: to recognize keywords? I think (function key1: 1 key2: 2) is far more pleasant than (function :key1 1 :key2 2). I mean is lisp trying to imitate forth’s RPN or something?

[…] to name a few. As for the future, it’s always uncertain. Here are some notes about the future of Lisp from the OOPSLA Lisp50 session, which suggests that Clojure may be a big part of that. Next […]

[…] capped by a presentation by its inventor at the end of the Lisp50 program at OOPSLA. Lispy has a good recounting of Hickey’s talk on his blog. There’s interest in forming a study group here in the DC area, under the […]

At the International Lisp Conference, I’m going to see to it that Rich Hickey has plenty of time to discuss Clojure in detail and take extensive questions. So if you’ve missed his talk in the past, you can see the best version of it in March. See ilc09.org and I hope I’ll be seeing you there.