I’m overwhelmed at the response to my recent article about Lisp: The Golden Age Isnâ€™t Coming Back, Letâ€™s Welcome a Bright Future! It clearly shows my blogging virginity that I’m excited about 4,000 page views, but that doesn’t make me any less excited! Not only that, there have been lots of good comments, almost 100 total, on this site, programming.reddit.com and Hacker News. I’d like to address some of the comments and criticisms in one place, here, rather than all over the place.
First, my mindset and perspective were poorly communicated and set the wrong stage going into the article. (I hate putting “WARNING” tags at the beginning of posts to set the right context, even though they are so useful!) A lot of people thought I was just another noob complaining about how hard it was to use Lisp. I mean, I guess I sort of was, but that wasn’t the point. The point was that Lisp has barriers to becoming a more popular, mainstream language, and every one of them is tractable! Here are a couple of the points, along with the solutions:
- There’s no default/most prominent implementation – finish SBCL threading work on Windows and OSX
- The family of languages thing is confusing to new users – refer to #1: making a default implementation removes this stumbling block for beginners without stifling the benefit to experienced users of having a choice of implementation
- Installing and setting up is hard (meaning not automatic) – write streamlined, bulletproof installers! Write better tutorials, FAQs, and troubleshooting guides, and have active forums where people can get help (note: these happen automatically with a larger user base)
- The learning curve is steep – there are dozens of valuable resources out there that beg to be organized. Watch this space for an upcoming announcement related to this
- Nobody believes me when I tell them Lisp is great – tell them in terms that matter to them why it’s great! Everyone says this can’t be done but I think it can (check back here for this, too)
- Lisp’s community is weird – no, it’s just headless. Viewed from the outside, Paul Graham is the biggest figure in the Lisp world, but he’s more of a philosopher than an evangelizer. He’s also not a teacher (at least not to the masses – I hear wonderful things about he treats his YCombinator companies!) The Lisp community is like the Mongol hordes: talented and powerful, but needing a Genghis Khan.
I didn’t see anything on that list that wasn’t fixable. The technical talent is certainly there to do #1 and #3. Solving #1 solves #2. #5 is one canonical resource away. #4 (and possibly #5 could be fixed by one organized, passionate person, and #6 could be solved by the same person but would probably be someone else. I know it seems like an oversimplification to say that 1-2 people could launch Lisp into popularity, but imagine where Ruby would be today without DHH?
Second, several people pointed out that the name Lisp is a barrier to wider adoption. Because Lisp is old and has a long history (that included some overhyping and a fall from grace), any new attempt to discuss or promote Lisp has to overcome decades of negative perception and introduce decades of improvement. A critical mass of new, successful uses of Lisp will wipe (or at least diminish) that old prejudice. For instance, Python probably has more legitimacy than any other emerging language because if anyone says “Python? Who the heck uses Python?” all you need to say is “Google and NASA.” No further explanation or legitimation necessary. Paul Graham did it with Viaweb, but that was a decade ago. I think the company with the biggest chance to do this is ITA Software. Most people haven’t heard of them but they have used Orbitz, etc, so it is a prominent display of the usefulness of Lisp. Of course, my favorite explanation of the baggage that the name Lisp carries is at A Nickel’s Worth:
Last but certainly not least, here is the worst programming language name of all time: Lisp. OMFG this is a bad name. Bad bad bad. What does “lisp” mean? Lisp means “speech impediment”!! Do you want a speech impediment!? I don’t think so! Back in college I had even less patience for Lisp than I did for Smalltalk. I mean, when it came down to it, I’d rather at least be able to make small talk, at a party, without having a lisp. Hint to John McCarthy: next time you come up with something brilliant, name it after something POSITIVE. Geez. And, as with Erlang, it just doesn’t get any better when you try to explain why Lisp is called Lisp. It’s short for LISt Processing… Get it? Isn’t that funny? I don’t hear you laughing. Yeah, ‘cuz it’s one of the worst puns ever. And not only is it not funny, guess what, most programmers don’t actually think they’re going to do much “list processing”, so they’re like, “maybe it IS good at List Processing, but I could give a flying monkey’s posterior because that’s just not what I want to be working on” (these programmers would much rather be working on their ORM layer, ironically).
Read the whole post, it’s worth it!
Third, I said that â€œIâ€™m learning Linux, emacs, SBCL, Slime and Common Lisp at the same time” and that it was a lot to absorb. Well, I broke my own cardinal rule of “Compared to what?” and I got called out on it. I didn’t mean that it was harder than learning a different programming stack, it was just a statement that learning a new programming stack is a lot of work. When I was choosing to embark on a project of learning a new language, I considered Ruby and Python because of the popularity of their web frameworks. But since I wanted to get comfortable with Linux anyway, and all of these languages use SVN or Darcs or some source control product that isn’t Visual Source Safe, I had to learn one of those too. So no matter what language I chose, I would have to learn 1) the language, 2) the libraries, and 3) its IDE of choice. Learning one language vs another is a wash – just read stuff and write programs. People complain about the difficulty of finding the right library in Lisp, but since identifying a good library is a bigger problem than installing a known one, this is not a big deal. And emacs hasn’t been hard – I made a nice cheat sheet and I use it like a normal IDE (just like you can write Fortran in any language, you can program like Visual Studio in emacs) – I’ll learn the power user stuff later. Since the total cost is about the same, I chose the one that I thought would be most powerful and have the longest shelf life.
Fourth, one additional comment on community: I’m sort of the opinion that if you live by the community, you die by the community. So languages like Ruby where community is one if its biggest strength could be in trouble if the community weakens or moves on. I think Lisp has the best technical foundation of any language, and that shines through even without (some would say in spite of) its community.
Out of all the comments and responses, this was one of the biggest treats:
I’ve enjoyed reading Dan’s blog since he started is a couple months ago (and I’ve already linked to it repeatedly). He has given me most of my historical perspective on Lisp and he seems to be very fair and impartial in his judgment, even though he was in the thick of many of these things! He’s also an excellent writer who quickly moved up my “Must Read” list in Google Reader. Dan – I’m a little giddy that you commented on my blog. I’m still getting used to the social aspect of the internet (as opposed to just consuming info) so the fact that someone whose writing and experience I admire very much read my article is flattering!
Thanks again everyone for your comments and I hope to keep producing articles worth reading and talking about!