Ask HN: Which Scheme book to read?
Thanks!
Edit: I have a fairly good grasp of C and Ruby, and I know some Java (enough for a 5 on the AP CompSci AB test, at least), so it's not my first time learning to program.
Thanks!
Edit: I have a fairly good grasp of C and Ruby, and I know some Java (enough for a 5 on the AP CompSci AB test, at least), so it's not my first time learning to program.
But I would still go with SICP.
That's the best 20-hour introduction you could ask for.
Also if you want to give Common Lisp a try, I'd highly recommend "Common Lisp: A Gentle Introduction to Symbolic Computation" by David S. Touretzky. Its an old book but well worth its price in gold. It is the simplest way to really get Common Lisp and its concepts.
Also, read this: http://norvig.com/21-days.html
If does a very good job of getting you comfortable with thinking recursively. It not meant to impart immediate 'practical' knowledge, and it really uses Scheme as a vehicle for teaching recursion, not the other way around. You can do the exercises in any Lisp dialect easily enough, and even in JavaScript (http://javascript.crockford.com/little.html).
My recommendation would be to use The Little Schemer as well as another, more practically focused book on Scheme or Lisp and work through them concurrently.
Also, if you're just getting started and are going to be using Scheme, the DrScheme mini-IDE makes it very easy to get started quickly. It's part of the PLT-Scheme package: http://www.plt-scheme.org/.
I find programming books relatively valueless. Just start reading code and programming. Google when you don't understand a piece of code.
Approximately how to get started on an Ubuntu system:
$ sudo apt-get install mzscheme
$ mzscheme
> (print "hello world")
Then Google for increasingly complex programs.I often use Scheme when I teach compilers, and I've got a few Scheme-related blog posts designed for the curious student:
* Church encodings: http://matt.might.net/articles/church-encodings-demo-in-sche...
* Macro-generating macros: http://matt.might.net/articles/implementation-of-scheme-vect...
* Programming with continuations: http://matt.might.net/articles/programming-with-continuation...
Disclaimer: I've never read SICP.