So you want to do the SICP...
uponmyshoulder.com
uponmyshoulder.com
I don't think the book is perfect. I found the structure of Chapter 4, where a Scheme interpreter is built, confusing and irritating. The exercises are interspersed with the text in a way that doesn't allow you to test any of your solutions unless you read ahead to get more infrastructure. This seems deeply unREPLy to me. Once I had typed in enough of the supporting code to actually run my proposed solutions, and pulled some hair out debugging my broken code, I had some marvellous moments of epiphany. That Ahah! is what maks the book's reputation, and what makes the effort worthwhile. But it could have been better.
As a group, we're not sure where to go next.
My day job involves hacking my way around >>10e6 lines of C. Even now, I don't feel that I understand the idioms of Scheme-in-the-Large in anything like the same way. I'm not sure any book can give you that. I probably need to write some code to solve a real problem first.
So if any of you have completed [the] SICP, what did you read next that seemed to be a good continuation of your education?
c
I'm reading Christian Queinnec's Lisp in Small Pieces now, and I think it's a great next book after SICP. It picks up right away with a metacircular evaluator very similar to the first one in Chapter 4, but diverges from SICP to explore different semantics, like Lisp-1 vs Lisp-2, dynamic variables, exceptions and control flow with catch/throw and continuations. Later chapters address macros and compilers I think one to bytecode and another to C.
It's very well written and the translation from French is clear if a little bit flowery. Highly recommended, but watch out for the Scheme code from the author's site. I don't think it's been touched since the early to mid 90s and I had a rough time trying to get it to run in any "modern" Scheme. I'm just translating the code as I go to run in Racket, which is much easier than trying to figure out what a thousand line Makefile does, or re-write some strange non-hygienic macros. If someone has advice for running the LiSP code, please speak up!
http://pagesperso-systeme.lip6.fr/Christian.Queinnec/WWW/LiS...
Something I have actually done is to faithfully work my way through this book http://www1.idc.ac.il/tecs/
There are a lot of special moments in there too.
http://github.com/sztywny/sicp
The Scheme community wiki is far from being the best resource for looking up the answers to the exercises. Eli Bendersky has a good page with answers written in Common Lisp:
http://eli.thegreenplace.net/category/programming/lisp/sicp/
Also, if you throw "sicp exercise x.yz solution" into Google, a couple of other blogs will pop up frequently - it is best to always consult different sources, sometimes some of the posted "solutions" are a bit confused, or at least not discussed clearly enough.
After you get used to some basic FP idioms, the exercises aren't really that hard, especially if you had at least the most basic exposure to the topics the programs in the book touch (circuits, elementary higher math etc., remember it was a part of the beginning EE/CS curriculum). There are just a few common causes of confusion and problems with the exercises that are very well summarized in the paper "Why calculating is better then scheming":
http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.p...
Another thing is that when the programs in the book start to become larger, it becomes harder and harder to work with them, it's basically hundreds of functions in a single long file. Using some stronger form of modularization throughout the book would help a lot, at least from the moment they already have explained how one can achieve it (they describe message-passing etc.).
It's a difficult journey, but it is a scenic tour of a lot of the core concepts in computer science.
[1] http://eli.thegreenplace.net/2008/04/18/sicp-conclusion/
(Just kidding, of course, but it would be a great practical joke if they announced something like that)
It'd be potentially beneficial for soft. engineers, to convey the core concepts through less sophisticated examples and exercising.
So a new edition -- still in scheme! -- is warranted IMO, though I'd never read but as a teaching tool it could be wonderful.
>> Working in the MIT REPL was such a pain ...
Racket is a pleasure to work with. http://racket-lang.org/I guess it's not that terrible of a mistake, as you were the only one to notice, but thanks for the correction. :)