Ask YC: Let's talk about Lisp(s)
2 comments
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.
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.
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).
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!
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!
However, I have too many choices and I'm not sure where to start!
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.
Here are the biggest contenders that I can think of:
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.
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.
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.
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.
If you were going to spend the time to learn just one of these languages today, which one would you choose?