Ask HN: Which Scheme book to read?
11 comments
SICP isn't so much about Scheme, but language design principles, the beauty of abstraction, the dangers of mutable state, and the inability of a reactionary, functional approach to compensate for the lack of a mutable state.
But I would still go with SICP.
But I would still go with SICP.
In addition, the series at http://academicearth.org/courses/the-structure-and-interpret... is pretty good as well.
I second that. Sicp, though, is quite hard conceptually (for instance, I've been baffled by church numerals and the y combinator), but in a good way.
You may want to read something more entry-level before, though.
SICP by a mile, for one reason: the SICP videos: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...
That's the best 20-hour introduction you could ask for.
That's the best 20-hour introduction you could ask for.
From my own personal experiences, try "How to Design Programs" (HTDP) by Felleisen et al as an introduction to Scheme. Its a great educational book which really prepares you for SICP.
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 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.
+1 for HtDP, after which the schemer series, followed by SICP.
Also, read this: http://norvig.com/21-days.html
Also, read this: http://norvig.com/21-days.html
I have not read SICP, but I have read The Little Schemer. It's my favorite programming book.
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/.
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/.
Just for an alternate opinion:
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:
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.SICP and HtDP are good for starting out.
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...
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...
I suggest Practical Common Lisp. (considering that it's both online and in book form)
I would recommend you start with The Little Schemer and follow up with The Seasoned Schemer (the sequel to the other book). These two will give you a good feel for some aspects of Scheme programming, but they will not go into the same depth about the fundamentals of computer science you'll get from SICP. After reading them, then you should advance to either How To Design Programs as suggested before SICP or if you're feeling really ambitious jump right to SICP.
My vote goes to SICP as well, however if you don't have much time http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html is helpful.
If you have little programming experience, I'd start with The Little Schemer. It's short and concise. Plus, I think you'll have more fun with The Little Schemer.
Disclaimer: I've never read SICP.
Disclaimer: I've never read SICP.
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.