robert hahn

a darn good web developer

February 08, 2006

Learning a new language: Lisp

I remember seeing a meme floating around that all good developers should learn one new language per year. I also heard a meme that all developers should learn at least one procedural, one object-oriented, and one functional language in their lifetime.

Well, this year, I’ve decided to teach myself Lisp. Last night, I wrote my first Lisp program of the year. I’ll write it again here:

(defun hello-world () (format t "Hello, world!"))

Pretty, ain’t it? I’ve tried learning it before, but something else caught my attention (Lord knows what), and never really got into it. But this time, I’ve been seeing some people work hard at trying to find the next coming of Ruby on Rails, and I’ve been seeing some noise made by people writing continuation-based web application servers [1] [2], and people claiming that Lisp can do this as easily as Rails did – because Lisp is so much more powerful than Ruby.

Well, that sounded like an interesting claim, and if that’s all they said, I’d probably shrug and move on, but those people (whom I’d love to cite, if I could remember the links) talk about how every language feature that Rails, Borges, and Wee depended on in Ruby were also found in Lisp, and then some. Well, I had read about those features before, mostly on Paul Graham’s site (See Beating the Averages for the starting point of my lisp research)

In Revenge of the Nerds, Paul Graham claims:

What I mean is that Lisp was first discovered by John McCarthy in 1958, and popular programming languages are only now catching up with the ideas he developed then.

I’ve been noticing this too: I first started learning programming with Atari Basic, dabbling in C, Pascal along the way, then JavaScript, Perl, and Ruby, and as I reflect on what those languages (and others I’ve looked at) had to offer, I could see that progression myself. It seems to me, given the trend, that rather than waiting for the next amazing language to take the spotlight, I’ll just skip to the end and learn Lisp.

And maybe that’ll help me master some of the more interesting but as yet still untapped language features in these other languages. Like Ruby’s lambda functions or closures. Like some of Javascript’s Lispy features.

decorative image of trees

Copyright © 2009
Robert Hahn.
All Rights Reserved unless otherwise indicated.