Subscribe to Rahul's Blog        RSS Feed
****- 1 Votes

Starting with Lisp

Icon 2 Comments
When I started to learn Lisp, I was baffled by the lack of a single common guide which could point me to the documents and books to read. I must admit however, my search-fu skills were very poor. However since I'm still on the fairly early stages of learning the vast world of Lisp, I decided to jot this down in case someone benefits from it. Its fairly opinionated, but hopefully would serve the reader as at the very least, a bunch of pointers.

One should note that I'm only experienced in Common Lisp and Scheme; not in the various other dialects like Dylan, Qi etc. Also the hot new Lisp, Clojure, was not around then so I would limit my pointers to the first two dialects I read about.

Background
It is a good idea to understand why Lisp is so revered among the old (and new) wizards and I think a great explanation is the essay -> The Nature of Lisp. It really made me get the principle behind S-expressions. If you have no prior experience in Functional Programming, the same site also contains a wonderfully easy to read essay -> Functional Programming for the rest of us. While Common Lisp is in no way strictly functional, its still helpful to get some terminology from the field straight as you'll encounter the same terms in your Lisp journey.

Books
If you are new to programming in general and want to start off with Common Lisp, the easiest way to do that is a free book called Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky. It is exactly as the title says - gentle. If you have slightly more experience, go for Lisp by Winston and Horn though you'll have to buy its deadtree version. Its also geared towards AI, so if you're looking into that field go for this book. Finally, if you are into "practical" books with lots of code straight-up and building real world apps, read up Practical Common Lisp by Peter Seibel. Its tough going, but the rewards are worth it. If you do finish these, read On Lisp by Paul Graham for a great treatment on macro's.

For Scheme, before you read the legendary SICP, I would suggest trying out the free book - Concrete Abstractions: An Introduction to Computer Science Using Scheme by Max Hailperin, Barbara Kaiser, and Karl Knight. If you've chose Racket (see below), How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt & Shriram Krishnamurthi is a great book. In all fairness, in both the books mentioned above the knowledge of Scheme comes as a byproduct while learning good programming in general.

Implementations
I'd restrict this section to what I know and have tried out and are free to use without limitations. For Common Lisp, on Linux I usually go in for CMUCL. Its fork SBCLhas also become very popular though I have not tried it personally. On Windows I usually go for Clisp, which is also my second choice on Linux systems.

For Scheme, on the pure side I like MIT-Scheme and Racket for Scheme + some bits more. If you're planning to learn only RnRS Scheme, I'd choose the former since Racket usually extends the language to do a bit more. One notable implementation I'd like to mention is Petite Chez Scheme whose only limitation (in the free version) is not being able to do native executable compilation.

Community
Common Lisp has a fairly sized community which is widely regarded as a tough bunch. However this is mostly because they really expect a newbie to do his homework before wanting answers to a problem. In recent years, Common Lisp has really become more friendly to beginners in most places. As long as you're asking the right questions and not taking shortcuts you should be fine.

The Scheme community is really one of the most tolerant communities of them all. However you should not abuse their patience. As usual, do your background work and ask questions when you feel stuck.

Which one to choose?
Ok this has been argued for too long and by people with far more experience than me, so I'd keep this very short. Go for Scheme if you want to just learn Lisp and expand your mind. If you're doing real work in the industry, go for Common Lisp. Disclaimer: I'm not suggesting you can't learn from Common Lisp or do real work in Scheme.

Enjoy the experience!

2 Comments On This Entry

Page 1 of 1

skyhawk133 Icon

16 December 2010 - 04:26 PM
Congratulations on the ReadWriteWeb mention rahulbatra!
0

rahulbatra Icon

17 December 2010 - 06:02 AM
Ok this is a first for me :) thanks for the link Skyhawk.
0
Page 1 of 1

Trackbacks for this entry [ Trackback URL ]

There are no Trackbacks for this entry

Search My Blog

Recent Entries

Recent Comments

My Picture