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:

Clojure Data Structures

Clojure Data Structures

In short, Clojure provides better ways to produce homogeneous code that operates on heterogeneous data structures.  Clojure provides more uniformity in data structure access.  Clojure provides something I’ve wanted for months, but never fully imagined on my own.

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

And that’s what the Lisp50 conference was about.

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

  1. Patrick Sullivan Says:

    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.

  2. DenkZEIT : Zum 50. Geburtstag der Mutter aller Programmiersprachen: Lisp50 Says:

    […] Der Einstieg findet sich unter Lisp50 Notes part I: JonL Recalls How Sussman Revealed the Nature of Intelligence. Die Serie findet ihren Abschluß mit Lisp50 Notes part VI: The Future of Lisp. […]

  3. Larry Clapp Says:

    s/homogonous/homogeneous/
    s/heterogenous/heterogeneous/

    Just helping out. 🙂

    And while I’m at it, “JonL” is correct. Why does everyone else insist on saying “JohnL”? *sigh*

  4. lispy Says:

    Oh, that’s bad. Not as bad as “per say”, but still pretty bad.

    Fixed.

  5. Rob Myers Says:

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

  6. lispy Says:

    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.

  7. Rob Myers Says:

    Thanks. I don’t have to target the JVM but if I did I can certainly see the advantage.

  8. gnuvince Says:

    Rob Meyers: Yes it’s possible, although most people quickly learn to love the syntactic sugar.

    {:a 1, :b 2} => (hash-map :a 1 :b 2)
    [1 2 3] => (vector 1 2 3)
    #{1 2 3} => (set (list 1 2 3))

  9. Uncle T Says:

    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?

  10. Lisp’s 50th birthday « Strange Quark’s Says:

    […] 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 […]

  11. Autodidact » Blog Archive » Some notes on Clojure Says:

    […] 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 […]

  12. Dan Weinreb Says:

    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.

  13. Elias Amaral Says:

    you wanted.. arc?

Leave a comment