

Ask YC: Let's talk about Lisp(s) - icey

I finally have a little time to get more serious about picking up another language, and my time here has made me decide that (a) Lisp would be a great addition.<p>However, I have too many choices and I'm not sure where to start!<p>I'll probably use whatever Lisp I end up picking up for exploratory programming since it seems very well suited to that. However, my 'exploratory programs' tend to turn into real applications that end up living for a little while.<p>Here are the biggest contenders that I can think of:<p>1 - CL by way of SBCL: The "Ford Truck" of the options; this has been around for awhile and while it has some warts, is pretty well known for getting the job done.<p>2 - Scheme via PLT / MzScheme: Lightweight, etc.. Lacks the number of libraries that CL has going for it. I would have felt more comfortable with a Scheme if r6rs weren't so controversial. I think I prefer a BDFL to design over committee.<p>3 - Getting into the more exotic lisps, Arc. I think the audience here knows enough about Arc that I don't need to explain it. However, I do have my concerns about the velocity of Arc; PG is a terribly busy guy and language design is not a small task.<p>4 - Clojure: Previously I'd knocked Clojure for living on the JVM. Now I realize it was a knee-jerk response to some bad Java experiences in the past. After looking at it in a little more depth, it's a pretty cool language. However, it still appears to be in the stage that very low level things are being decided. That's not necessarily a bad thing as Rich Hickey seems to have great reasoning behind his changes. It's just one of those language stability concerns.<p>If you were going to spend the time to learn just one of these languages today, which one would you choose?
======
Shooter
SBCL or Clojure, depending on your problem domain and your experience. I would
personally not use PLT/MzScheme or Arc for the type of projects I work on, but
there are obviously people who do use them in production settings. I think you
could use either successfully, but I believe there are usually better tools
available.

Clojure is definitely a moving target, but the JVM/Java foundation buys you
quite a bit (JVM clustering products, pre-existing libraries, ability to use
existing talent,etc.)

SBCL is very productive, especially if you're doing a "greenfield"-type
project. We've used it quite a bit, and I would say you save lots of time by
using it for prototypes and for certain types of projects - but you can also
lose quite a bit of time dealing with the warts, as well. Some of the warts we
encountered didn't appear until we were in a production setting and a few were
rather expensive to correct. We ultimately opted for a commercial Lisp for
most of our CL work. The SBCL team should be commended for their amazing work,
though.

I'm always interested in hearing about how others use Lisp for deployed apps,
so please come back and post once you've made some headway.

~~~
icey
You make an excellent point that I completely neglected about CL, being that
there are commercial CL options if SBCL doesn't scale up appropriately. I've
heard nothing but good things regarding Lispworks and to a lesser degree
Allegro (although, I think that just has to do with their weird pricing
scheme).

------
xefyr
Depends.

Do you know anyone already using any of these languages? The path to
enlightenment is almost always more easily tread when you have someone hiking
it with you.

If no, choose by documentation. What do you find the easiest read? I was first
introduced to lisps via PG's "ANSI Common Lisp" -- great book. If scheme's
your thing, SICP is the way to go. I haven't been following Arc and I'm not up
to speed on Clojure, so I cannot comment on those tools.

I chose Common Lisp. Openmcl on my ppc and sbcl on x86. Your milage may very.

Best of luck!

