Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

SICP

Name: Anonymous 2011-03-07 19:13

I have the habit of writing reviews for the books I’ve read, and recently I noticed that something is missing. SICP. I’ve definitely read it, so I should probably write a review, eh ?

The real reason for my writing this review is, however, its Amazon entry. Although the first page shines with glimmering reviews by, no less, Peter Norvig and Paul Graham, the book has a 3.5 star average, which is really inexplicable. Many far inferior books have higher grades ! So I want to make my small contribution by writing SICP the review it deserves, give it the grade it deserves (5 !!!!), and post it to Amazon as well. Lets get started, then.

My first encounter with SICP was in the second year of university, where I took a course named “SICP 1″. I already had working programming experience by that time, so the course wasn’t hard, but I was struck by the beauty of the subjects it taught, by the Scheme language it used and by the long and interesting homework assignments it had. This course woke my curiosity about functional programming, and the Lisp family of languages in particular.

A few years later, with much more experience behind my back, I’ve decided to tackle SICP seriously and read the whole book, solving the vast majority of the exercises. This endeavor took about 10 months, and I enjoyed it immensely. I think SICP is a wonderful book, a seminal work in the field of programming. It is one of those rare books every programmer should read. In this review I’ll try to explain why.

In contrast with most introductory books about programming that just teach you a language, SICP takes a far better approach. The main goal of the authors is not to teach Scheme, it is to teach programming. From the beginning, the book takes an integrative path, where the basic axioms of programming are presented, and later are fortified with examples and exercises. SICP teaches about computational processes – iterative and recursive. How to use them best in each situation, and how to implement them. It also explains abstraction by functional composition. These are topics rarely presented in programming books, but SICP puts them rightly in the first chapter, because they are the real stuff programming is based on.

The example programs developed in the book are real, large, and exciting. You’ll get to develop a powerful picture language, a generic object-oriented arithmetic package including complex and polynomial arithmetic, a simulator for digital circuits, a symbolic differentiation package, an interpreter for Scheme written in Scheme, an interpreter for a logic programming language similar to Prolog, a virtual machine for a simplified pseudo-assembly DSL, an interpreter for Scheme written in this pseudo-assembly, and finally a compiler from Scheme to the assembly language. All these examples are real, well-thought out exercises for skill, taken from beginning to a very complete end. In no other book such a wealth of topics is addressed in an accessible manner.

A word about exercises in SICP. They are numerous, some of them are hard, but the exercises are the best way to really understand what the book tries to teach. In a manner, they’re as integral part of the book as the text itself. The exercises are very well prepared and lead the reader through the examples coded by the authors into greater understanding of the topics taught. At times, it feels like the exercises are specifically designed to force you to think about the essence of the topics, and not just grasp them superficially.

SICP commonly suffers from the criticism that it’s too hard for beginners. Maybe this criticism is rightful, and universities should give a simpler introductory course to programming before SICP. But this is an aspect of the educational systems, not pertaining to the book itself. I wouldn’t know, I never read SICP as a beginner. However it is being taught, SICP is an amazing book. It is by far the best programming book I have ever laid by hands on, and I seriously doubt that it will be surpassed any time soon. Reading SICP will enlighten you as a programmer, and make you a better one. I can’t imagine one programmer who won’t gain something important by reading SICP.

Name: Anonymous 2011-03-07 19:25

tl;dr

Name: Anonymous 2011-03-07 19:53

Name: Anonymous 2011-03-08 1:03

LISP seems to be lost in a forest surrounded by niches that it could do but hasn't chosen. Woe the language cut from its niche, for it is a wanderers language.

Name: Anonymous 2011-03-08 1:10

>>4
People (including me) use it for all kinds of general purpose coding. You can say that it's dead all you want, but it won't stop people that like it form using it. The same is true for pretty much any language.

Name: Pantsu Fan 2011-03-08 2:26

>>4
It has a niche in AI.

Name: Anonymous 2011-03-08 12:51

>>6
Then why Norvig used Python in his last book?

Name: Anonymous 2011-03-08 13:02

>>7
Catering to the noobs. FOIC is for some strange reason perceived as a good language for an intro to the field.  I wouldn't wish FIOC on my ex-wife...

Name: Anonymous 2011-03-08 18:11

I hate the whole lambda calculus, not because of what it is, but because of what many people think it is. They think that it's the whole of computer science, the ultimate way to express and reason about programs, when in reality it's merely a shabby and incomplete model of how Fortran fails to work. The first thing SICP has to do is teach everyone how bad the lambda calculus model is -- as part of teaching them about a language allegedly based on lambda calculus.

Name: Anonymous 2011-03-08 18:18

>>9
lambda calculus (...) is merely a shabby and incomplete model of how Fortran fails to work.
Can you elaborate, please? In fact, I'd like to hear a more detailed version of your entire rant.

Name: Anonymous 2011-03-08 18:19

>>9
6/10. I enjoyed that.

Name: Anonymous 2011-03-08 19:44

>>1
Thank you a lot. This is an awesome review.

Name: Anonymous 2011-03-08 20:24

Name: Anonymous 2011-03-08 23:29

>>9
0/10. Didn't rage at all. Post another shitty troll like that and it's going right off your monthly /prog/check.

Name: Anonymous 2011-03-09 0:41

>>13
Reading through that, he doesn't say anything particularly interesting.

Name: Anonymous 2011-03-09 3:18

>>14
I didn't rage at >>9, but I did a >>13. It's not even a troll, he just shows how incompetent and arrogantly ignorant are the guys behind Python.

The only thing Python took from Lisp is the arrogance.

Name: Anonymous 2011-03-09 6:09

>>16
They forgot to take the justified part of justified arrogance, however.

Don't change these.
Name: Email:
Entire Thread Thread List