
Paul Graham reviews Structure and Interpretation of Computer Programs (2000) - adambratt
http://www.amazon.com/review/R3G05B1TQ5XGZP/ref=cm_cr_dp_title?ie=UTF8&ASIN=0262510871&nodeID=283155&store=books
======
tieTYT
The thing that really turned me off of this book is that the exercises are way
more complicated than the material itself. They made me feel like an idiot and
like I wasn't learning. To put it in terms of Kathy Sierra, this book didn't
make me feel like "I'm awesome"[1]. Here's a satirical example:

> Now that you've learned how to sum an arbitrary list of numbers together,
> use this knowledge to prove Einstein's general field of relativity.

How about instead of proving physics theories, we use our new knowledge to add
together apples and oranges? That is easier for me to comprehend.

I'm not saying this to troll. I know this book is supposed to be great and I
plan to read it again. But I'd like to hear why my complaint didn't bother the
people here that did finish and love this book. Should I just ignore the
exercises?

\---

Edit: I want to clarify something. It wasn't that the exercises were too hard
to answer. My complaint is that I couldn't even comprehend what some were
asking me to do. To me, it was like the exercises were written in French, a
language I don't speak. If I could understand what the exercises were asking
for, then I could have realized I'm missing something and re-read the section.
But as they were written, it made me feel like I should temporarily put the
book down and re-take physics and calculus.

[1]
[http://www.youtube.com/watch?feature=player_detailpage&v=eSl...](http://www.youtube.com/watch?feature=player_detailpage&v=eSlRd6MnDv8&t=479)

~~~
sev
Take this with a grain of salt, but IMO the reason some people who try to
learn programming end up with this type of mindset is because they have a
wrong mindset to begin with: they believe learning to program should be
relatively easy and have an obvious and relatively simple path to mastery.
From my experience, this is not the case at all. If you read any math
textbook, generally the last problems in a section are the most difficult to
understand and answer, unless you've mastered all the concepts in that
section. Pure Computer Science is harder than pure math in many ways; 1)
because unless you master all the concepts in a section, you won't get too
far, and 2) computer science in general, but specifically this textbook is
geared toward people who have already somewhat mastered mathematics, so all or
most of the problems will be like the last problems of a section in a math
textbook.

"If it comes easy, then you're not doing it right."

~~~
nickpinkston
> they have a wrong mindset to begin with: they believe learning to program
> should be relatively easy and have an obvious and relatively simple path to
> mastery

The masters of every subject say stuff like this, and it's really just a type
of myopia of the craftsman. I work in manufacturing and people tell you shit
like this all the time.

Imagine a 19th Century Car Driver:

"People who think learning to drive should be relatively easy are missing the
mastery required for match-rev shifts, air-fuel mixture, spark management -
not to mention the intricacies of debugging your carburetor on the side of the
road."

Programming will continue to be made more accessible, as is the apparent
trend. Nearly no developers know what's really going on under the hood except
people who specialize in assembly, CMOS, etc.

~~~
sev
> Programming will continue to be made more accessible, as is the apparent
> trend

Of course it will become easier over time...just like everything. Consider
John Carmack and what he did when writing Doom, Wolfenstein, etc...I can
almost guarantee you when he was programming, programming was A LOT harder
than what it is today. But the difference there is nothing more than time.
Even if it's getting easier over time, my main point still stands.

~~~
Arelius
I'm not sure I agree... While it's certainly true that to create the same
thing that Carmack did would be a lot easier today. Working on Carmack level
code remains very difficult to this day. It's just that the bar has moved.

Sure, a simple ray-caster isn't going to need a lot of optimization today. But
when you are dealing with the sort of data that is now common. Optimization
can be just as important.

While languages have have improved for the better, other things have created
other challenges. Consider the PS3 Cell architecture. Considered to be a much
more difficult architecture to program for than the processors of Doom's day.

------
freyr
Peter Norvig (Director of Research at Google, among other things) also left a
review, with his explanation of all the negative reviews:

[http://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_dp_titl...](http://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_dp_title?ie=UTF8&ASIN=0262510871&channel=detail-
glance&nodeID=283155&store=books)

~~~
S4M
It seems to me that Peter Norvig is attacking personally the readers who
didn't like SICP (in the lines of "if you didn't like SICP, you're just not a
creative person").

Also, he is flawed when saying that only about 1 person out of 50 should like
this book (the proportion of people who have "this strange way of thinking
that makes a programmer"), since the largest part of the people exposed to
SICP are programmers, or at the very least interested in computer science.

Disclaimer: I have lots of respect for Norvig and think his PAIP is awesome.

~~~
freyr
His analogy is that some people want to know exactly how their car works, but
most people just want to drive. I don't think that's an attack on everybody
who's not an automotive engineer.

 _Also, he is flawed when saying that only about 1 person out of 50 should
like this book ... since the largest part of the people exposed to SICP are
programmers_

He acknowledges that by saying "a big part of the explanation is that the
audience is self-selected." But he also seems to be acknowledging that not
every programmer needs or wants the depth that SICP provides.

~~~
mbetter
The passage in question, as neither of you seem to have read it closely:

> Donald Knuth says he wrote his books for "the one person in 50 who has this
> strange way of thinking that makes a programmer". I think the most amazing
> thing about SICP is that there are so FEW people who hate it: if Knuth were
> right, then only 1 out of 50 people would be giving this 5 stars, instead of
> about 25 out of 50. Now, a big part of the explanation is that the audience
> is self-selected, and is not a representative sample. But I think part of it
> is because Sussman and Abelson have succeeded grandly in communicating "this
> strange way of thinking" to (some but not all) people who otherwise would
> never get there.

~~~
freyr
I read it closely the first time, thanks. If you'd like to directly address
something I said, feel free.

Although, I only said two things, (1) he acknowledges the audience is self-
selected (direct quote from the review), and (2) some people aren't willing to
put in the work to gain that level of familiarity with the subject (directly
supported by his analogy in the second paragraph).

Does that contradict anything in the review? You seem to be fixated on
something else there that S4M and I aren't discussing. If you'd like to draw
attention to that, again feel free.

------
sytelus
May be it's time to create annotated version of SICP.

My favorite annotated works:

Annotated Turing:
[http://www.charlespetzold.com/annotatedturing/](http://www.charlespetzold.com/annotatedturing/)

Newton's Principia, The Central Argument: [http://www.amazon.com/Newtons-
Principia-The-Central-Argument...](http://www.amazon.com/Newtons-Principia-
The-Central-Argument/dp/1888009233)

That reminds me one of the argument Newton made in his Principia. He said
something of the essense that he has intentionally written his Principia in
non-friendly dry manner because he wanted readers to have certain degree of
discipline and patience and also he wanted to eliminate readers who would just
naively attack his works with shallow arguments.

But that was than. Today readers have came to expect certain level of
accessibility. But still no one should tell authors how they need to write
books. If you think SICP is not accessible enough, go annotate it with your
insights and expanded arguments filled with analogies and examples.

~~~
Jd
I think the web definitively needs a good tool for delivering annotated texts.
It's been on my 'list of startups to make' for a least half a decade.

------
mikevm
This is a good time to remind everyone of a decent eBook PDF version of SICP:
[http://sicpebook.wordpress.com/](http://sicpebook.wordpress.com/)

------
chacham15
> An optimistic professor somewhere has been feeding SICP to undergrads who
> are not ready for it.

In my very fist undergrad class, this was the course textbook. I generally
think that I and some others taking the class at that time didnt value it so
much, but going forward (especially after the class) I feel like what it
talked about is a lot more important than I initially thought. I think that
the professors made the right decision, though, giving us the book that early
because even though I didnt appreciate the book so much then, I think that I
absorbed a lot of its ideas into the way that I code.

~~~
solarexplorer
+1 same here.

------
gcv
Also look at the "most helpful" negative review:
[http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_pe...](http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=0070004846&linkCode=&nodeID=&tag=)

The reviewer accuses the 5-star reviewers (not PG and Peter Norvig directly,
since that review seems to predate theirs, but that hardly matters) of
elitism, and the book itself of "dreadful writing", "advocacy of a language
that can be really quite a horror for beginning programmers", and "a terrible
job explaining fairly simple ideas".

I'm tempted to say "Yeah, well, that's just, like, your opinion, man."

------
indubitably
Ah, pg, assigning homework to… everyone.

------
superuser2
I'm curious... when is one "ready" for SICP?

~~~
WalterSear
According to Paul's writing here, when you are ready to give it a 5 star
review on amazon.

Now, when will it and _The Art of Computer Programming_ be available in an
electronic format?

~~~
pdog
The full text has been available online _for years_.

[http://mitpress.mit.edu/sicp/sicp.html](http://mitpress.mit.edu/sicp/sicp.html)

~~~
WalterSear
Thanks. When it wasn't available in kindle on amazon, and TAoCP having not
made the jump from paper (pdfs don't count. They are a terrible format for
books), I assumed that it was likewise unavailable.

------
cruise02
> 6\. Who is al? Why is his name in lowercase?

Anybody?

~~~
btilly
Al would be "others", and appears in lower case because it is not a proper
noun.

Strictly speaking, al. is actually an abbreviation that could mean any of the
Latin words alii, aliae or alia. Which one is appropriate would depend on the
gender(s) of said others.

~~~
krsree
ah..as seen in literature reference 'et al'

~~~
btilly
Exactly. With et meaning "and".

------
fsloth
I used SICP as a template for writing a Scheme interpreter in c++. For that,
it was awesome. Once you implement an immutable list and an immutable map in
c++ you can write nearly homologous code to that of the scheme in SICP. Name
how many programming books teach you a language, a mindset, a bunch of usable
algorithmic constructs and to top it all a recipe to create an interpreter for
the said language in any computational substrate.

------
dapz
Brian Harvey's video lectures on Scheme using SICP:

[http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E890...](http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E89002AA9B9879E)

along with the home page for the class:

[http://inst.eecs.berkeley.edu/~cs61a/sp11/](http://inst.eecs.berkeley.edu/~cs61a/sp11/)

I'm going to use it to complement the PDF version of SICP posted above in this
thread.

------
gnarbarian
Lots of big hints there for forward thinking developers to pick up on. Haskell
for a large simulation project, GPGPU shared memory datastructures, 120 hz
clock with physics interpolation, benefits of functions without side effects,
performance benefits from elegant design rather than complicated optimization
kludges.

~~~
gnarbarian
oops I totally posted this to the wrong thread

------
kyllo
Thanks for posting this, it convinced me to finally crack this book. I've done
a little bit of toying around with Racket and Clojure, but I don't feel like I
understand how these languages work deeply enough on a conceptual level yet.

------
jimhefferon
The negative reviews comfort me. They make it more possible for me to believe
that my negative reviews are signs of misunderstood genius. :-)

------
ducklord
Who is al?

~~~
axblount
Author lists often end with "et al" which is Latin for "and others."

~~~
lifeformed
I'm going to name my kid "al Arthur Alexander", so he can claim authorship
credit for thousands of writings, and also for millions of highscores in
arcade cabinets everywhere.

