Monday, February 9, 2009

Learning common lisp

Everything you need to learn common lisp

Material:
There's a plenty material to learn common lisp, with many books and most of them free so If you want to learn you're spoiled of choices. Please note that labeling books as beginner or advanced is somewhat arbitrary as many beginner books have advanced material and many advanced books start with crush course of lisp.Also this is my personal opinion as I don't study in details each book on the list rather skimmed most of them.

Beginner books:
For learning common lisp if you're already experienced in some other
language and you just want to get on creating applications with lisp I would recommend Practical Common Lisp http://www.gigamonkeys.com/book/ free as ebook, worth every cent of the paper edition.

If you're new to programming or just prefer slower pace :
2. Gentle introduction to symbolic computation http://www.cs.cmu.edu/~dst/LispBook/index.html would probably be a great choice. After you finish it you should probably continue with Practical Common Lisp, mentioned above.

The other great free ebooks, some of them offer printed editions are:
3.Succesfull Common lisp http://www.psg.com/~dlamkins/sl/contents.html
4.Loving lisp http://www.markwatson.com/opencontent/
5. COMMON LISP: An Interactive Approach http://www.cse.buffalo.edu/~shapiro/Commonlisp/
6. Basic Lisp Techniques, http://www.franz.com/resources/educational_resources/cooper.book.pdf
Also Great for starters but without free online editions are:
7 Ansi Common Lisp by Paul Graham
8 Lisp by Winston & Horn . This goes in later chapters into AI world.

There's some nice videos that Franz made available free of charge from their certification program at http://www.franz.com/services/classes/download.lhtml

Advanced books:
1. On Lisp: http://www.paulgraham.com/onlisp.html goes into most detail description in art of writing macros.
2. Paradigms of Artificial Intelligence Programming, though aimed at those intersted in AI it teaches Norvig great style of writing programs. Must have for every lisper.
3. Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS by Sonya E. Keene teaches the common lisp object system
4. The Art of the Metaobject Protocol by Gregor Kiczales keep this until you're good at CLOS.
5. Let Over Lambda - concentrated on macros, I can't tell you more until my copy arrives.

There is also one book that you will heard that people recommend quite often: Structure and Interpretation of Computer Programs, by Abelson, Sussman, and Sussman. It's great book but it's not a common lisp book but in other language called Scheme. Though I recommend it to read it, if you decided to learn common lisp please read it after you feel comfortable with common lisp. Else you're going to just end up confused.

Implementations:
Choosing implementation for learning purposes is a non-issue. Common Lisp is specified by standard and all implementations must adhere to it so just pick up
whatever you find close to your preferences and previous knowledge. You can switch at anytime you want. If you're expecting Visual Studio or Eclipse like ide probably Allegro http://www.franz.com/downloads/ and Lispworks http://www.lispworks.com/downloads/ will serve you best. If you want open source, SBCL www.sbcl.org and Clozure CL http://openmcl.clozure.com/ are widely used. Scieneer http://www.scieneer.com/ is I heard best at SMP. If you're concentrated on portability CLisp www.gnu.org/software/clisp/ is your pick. Armed Bear http://armedbear.org/ is dedicated for running on JVM and ECL is embeddable ecls.sourceforge.net/ . There is also CMU CL www.cons.org/cmucl/ and Corman Cl http://www.cormanlisp.com/
All of them with do just fine for learning common lisp beside GNU CL(GCL) which I don't recommend, not to be confused with GNU CLisp.
For more detailed info check Dan's survey http://common-lisp.net/~dlw/LispSurvey.html .

1 comment:

  1. Thank your post.

    I am learning of Common lisp. I really like this post due to its useful information.

    ReplyDelete

Note: Only a member of this blog may post a comment.