
Paul Graham on SICP (2000) - tosh
https://www.amazon.com/review/R3G05B1TQ5XGZP/
======
stevelosh
If you tried reading SICP in the past but it didn't quite click, you might
want to try watching the lectures as you read it:
[https://www.youtube.com/playlist?list=PLB63C06FAF154F047](https://www.youtube.com/playlist?list=PLB63C06FAF154F047)

~~~
ZephyrP
The lectures are good but I think the book is really unparalleled in it's
original format. It stresses building the intuitive sense of deep structure,
which I think other formats would have difficulty communicating.

I personally thought the biggest barrier was the mundane, so I tried to write
up some tips, test cases and helpful utilities for doing SICP (
[https://github.com/zv/SICP-guile](https://github.com/zv/SICP-guile) ).

------
enitihas
And there should be a Peter Norvig review too for SICP, just in the vicinity
of PG's.

Link:
[https://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_rdp_pe...](https://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_rdp_perm)

~~~
forapurpose
Note that Norvig's and Graham's reviews are 12 days apart in the year 2000.

Also, (2000) should be added to the title.

~~~
gxs
I've always found this especially amusing - there are so many different ways
you can interpret this.

~~~
guiambros
And just to stay meta, here's Peter Norvig's review on pg's "On Lisp" [1].

[1]
[https://www.amazon.com/gp/review/RRFAH7G81ASUL?ref=pf_vv_at_...](https://www.amazon.com/gp/review/RRFAH7G81ASUL?ref=pf_vv_at_pdctrvw_srp)

------
merolish
It's available online for free from the publisher:

[https://mitpress.mit.edu/sites/default/files/sicp/index.html](https://mitpress.mit.edu/sites/default/files/sicp/index.html)

(I wish I'd kept my Knight of the Lambda Calculus button. Even having had
prior programming experience, 6.001 was not pleasant.)

~~~
chasote
I also like this free HTML5 (and EPUB3) version as well. It just feels really
clean.
[https://github.com/sarabander/sicp](https://github.com/sarabander/sicp)
[http://sarabander.github.io/sicp/html/index.xhtml](http://sarabander.github.io/sicp/html/index.xhtml)

~~~
brennebeck
Agreed. Really nice work done on this.

------
taylodl
I first read SICP after 25 years of professional development, and while I
didn't learn anything new I did see things in a whole new light. I think it
would have been really useful to have read the book 25 years ago: I think
you're going to benefit from having a few years of real-world development
experience before reading this book. The profundity, impact and applicability
to your work will be much greater. Highly recommended.

 _This comment is for the Scheme-based book. I 've never seen the Python-based
version._

~~~
billsix
> I first read SICP after 25 years of professional development, and while I
> didn't learn anything new I did see things in a whole new light.

How is possible that you read the whole book and didn't learn anything new?

~~~
Jtsummers
I am not OP, but my take.

A text like this may not introduce the reader to any _new-to-them_ CS content.
Instead, especially if they have a good bit of experience behind them, it
reorganizes their thinking. Which can be just as valuable.

------
euske
This book gives you a coherent view of computation. It's not just a turing
machine that keeps munching instructions. I think this book takes a more
dataflow-centric approach. Some people would love it, and I agree this is a
good introduction for early CS students. It is focused and compact. That said,
I think the enthusiasm surrounding this book is a little bit cult-like.
Reading this book doesn't necessarily make you a good programmer, because
being a good programmer requires much, much more than having a good
understanding of computation. And when you disregard the practical aspect of
programming, people will probably find you a bit pedantic.

~~~
tlrobinson
> Reading this book doesn't necessarily make you a good programmer

I don't think I've seen anyone claim SICP will make you a "good" programmer. I
have seem people claim it will make a good programmer better, though.

~~~
olavk
I you have finished SICP (including exercises) I will posit you must be a
pretty decent programmer. (Which is not necessarily the same as a good
developer, but that is a different discussion.)

~~~
braythwayt
The cliché observation is that "correlation does not equal causation."

It's interesting to think about that: Given that you have to _choose_ to read
SICP, and chosen to work your way through it, including choosing to use Scheme
instead of whatever is popular today and so forth, and given that SICP is
unlikely to get you a job ("Oh, you read SICP? You're hired, you awesome
hacker!"), is it possible that you already have certain qualities that
correlate with being a pretty decent programmer?

I mean, it's not like reading SICP is free. You're choosing to read it when
you could be reading something just as informative and considerably more
practical. So are you already a pretty decent programmer?

Going down this rabbit-hole of reasoning, I also wonder, "If you're reading
about SICP on Hacker News and decide to read SICP because it sounds
interesting, are you a different kind of person than if you decide to read
SICP because there seems to be a strong social signal around being a decent
programmer if you read SICP?

Those two motivations are obviously not the same.

And now I'm trying to remember why _I_ read SICP way back when. I'd like to
flatter myself that I was intellectually curious and read it for its own sake,
but to be transparently candid, I'm not so sure I wasn't trying to be like the
kind of people I admired at the time.

~~~
olavk
But wasn't it used for introductory CS courses? Perhaps someone can chime in
about how it worked.

~~~
braythwayt
It was used for introductory courses at MIT, but no longer.

If we look st those who took it as a course, we have to consider that they are
already taking a CS course, and at MIT, no less.

Once again, correlation? Or causation?

~~~
zaptheimpaler
My guess -

In the short term, those who read it based on signaling value (the
"pretenders") will be worse programmers than those who read it purely for fun
("the originals").

But in the long term, action matters more than intent. Those who kept
"pretending" and kept learning (no matter the reason) will be just as good or
better.

------
tombert
SICP has a well deserved spot in the "basically a bible for engineers"
category. I remember hearing about from a podcast in 2012 (I can't remember
which one, sadly), and immediately fell in love with the free copy from MIT's
website.

I was pretty excited when I found a physical copy at a thrift store for two
dollars. Even though I had already read it, I like having it on my shelf to
prominently display.

It's not a trivial read, but I feel like it's complicated enough to make you
think, but not frustrate.

~~~
jacobush
5 cents on you heard on Microsofts Channel 9 podcast.

~~~
tombert
I don't think so, since I don't think I've heard of that one. It was probably
whatever functional programming podcast was popular back then.

------
kingbirdy
> Let's see if we can put this in terms that the undergrads will understand --
> a problem set

It would be more accurate to say "in terms that MIT/Stanford/Ivy undergrads
will understand", considering most universities just call it "homework". Since
that's the background Paul and many of his colleagues come from, it's
understandable. However, as a CS undergrad at a more run-of-the-mill
university, it's a bit discouraging to see this vocabulary so widespread at
the top levels of the industry - it makes it seem almost impossible to break
in when everyone else is a part of the "elite" that you're not in.

At the end of the day, I realize this is a totally trivial issue. Just curious
if any other folks out there have noticed this.

~~~
salusinarduis
I went to a state university in a flyover state and they used the term problem
set. It is more widespread than you think.

------
mcguire
"al" is the brother of e.e. cummins. He's incredibly prolific.

~~~
bdcs
Hmm, I'm out of the loop. Is pg referring to et. al.? As in `and others` (et
alia/alii/aliae)?

~~~
stan_rogers
Yes. Exactly that. In a short (bibliography or card catalogue) listing, SICP
would have been by Abelson _et al_.

~~~
rhaps0dy
I did get that, but why is asking the undergrads "who is al" a joke?

------
dajomu
I have a copy of SICP sitting on my shelf right now. I've really wanted to get
started on it, but I must say that it seems like the kind of book that would
take hundreds of hours to get through (with all the exercises, etc). Is that
true?

Roughly how long have people taken to get through it?

~~~
olavk
I worked through the book in my spare time some years ago, and yes it probably
took me hundreds of hours. I don't know the exact amount of time, but it was
definitely in that range. I did not have any CS or math background, but a lot
of practical programming experience. I was absolutely worth it.

I did not watch any of the lectures, just worked through the book, so I can't
say if watching the lectures will make it easier or just take more time.

~~~
dajomu
Thanks, good to know how much time I need to apportion.

I'm trying to find a way that I can fit it around work/family schedules and
not let my concentration go too stale. I'm thinking of trying for an hour a
day, but that feels so prescriptive...

~~~
olavk
The only advice I can give is, do _not_ set goals like a chapter a week or n
exercises a day. Sometimes a section or exercise is just hard and you have to
take the time necessary.

------
shuaib
I am going through SICP currently, after having it on my reading list for
long. Loving it so far. I agree that exercises in the book shouldn't be
skipped, not a single one. You might seem to have grasped the material until
you take up the exercises and realise there is more to it.

------
barbegal
I can't understand why "694 people found this helpful". It's not a very good
review or even a review at all. The only review-like part of it is "I still
don't feel I have learned everything the book has to teach." which is very
cryptic. Why doesn't Paul Graham feel like he has learned everything from the
book? Is it because the book has a huge amount to teach and it isn't possible
to consume it all in a short period of time or is it because the lessons are
poorly taught and therefore require careful re-reading or is it because the
book can be read at many different levels?

~~~
clevershot
I have the feeling anything PG says these days is applauded w/o proper
reflection. Maybe it’s just me, but I have the feeling most of his thoughts
are quite profane

~~~
zabzonk
"profound", not "profane, surely?

~~~
jwilk
No, it's clear from the context they meant something negative.

I'd put my bets on "mundane".

~~~
clevershot
Yes, you’re smart and I’m German. Profane in German also means mundane. A
false friend I guess

------
Marazan
I still hold that part 1 (building abstractions with procedures) of SICP is
not that good from a teaching perspective. The continual reliance on more and
more obtuse mathematical formulae for the programming examples is sub-obtimal
for engaging or informing a reader who does not have a strong mathematical
background.

This is made even clearer in part 2 (building abstractions with data) which is
an absolute masterclass in clear effective teaching. Part 2 is everything part
1 is not. It is approachable, immediate, ...tactile in its examples.

I've always wondered if the two section were written by the different authors.

------
b3b0p
I read all these comments around the internet stating "you" read SICP. Does
that mean you worked all the problems? I'm currently reading through SICP
(after a CS degree and 12 professional years experience if that really means
anything) and it takes a long time, a lot of work, and it is hard.

Reading these comments I feel like an idiot. When you say you read it did you
do all and I mean ALL the problems? I find the reading part and thinking I
understand well the content to be quite easy and comprehendible though. I love
it for that and I feel like I am getting a great deal out of it.

------
deepaksurti
>> Yet SICP, which is pretty much the bible of our world, has only three?

pg posted his review on May 20, 2000, when it had 3 stars. From then till
today, the book has 4.5 stars. What must have caused this change of opinion?

~~~
rhaps0dy
Maybe Paul Graham and Ycombinator getting famous. Or the MIT CS undergrad
"intro to CS" switching to Python so the disgruntled undergrads no longer give
1-star reviews.

------
submeta
I came to SICP from a totally different path. In 1996 I started programming
Scheme and developed my own library for matrix calculus and for symbolic
calculus. A few months later I had a copy of SICP in my hands. All the things
I did previously on my own now were dealt with in a more systematic and
profound way. - Many concepts that I learned from that book became important
twenty years later in modern programming languages. Closures, immutability,
higher order functions, functions returning functions, etc

SICP was a very profound experience. I still have that copy on my book shelf.

------
curiouslurker
Hagiography at its finest! But, a, cool, review!

------
pixelmonkey
Was glad to see this posted here, especially since in late August, I'll be
taking the one-week SICP course that David Beazley in the Python community put
together:

[https://www.dabeaz.com/sicp.html](https://www.dabeaz.com/sicp.html)

~~~
tlrobinson
Given there's so much free material on SICP out there, paying $2500 to learn
SICP feels a bit like paying a personal trainer to force yourself to work out
(which I've admittedly done before)

~~~
pixelmonkey
It indeed feels exactly like that, yes. And, obviously, you've never taken a
Beazley course before. :-)

~~~
bogomipz
>"And, obviously, you've never taken a Beazley course before. "

Could you elaborate on this point? I am not familiar with this individual or
their classes. Is there something special?

~~~
pixelmonkey
You can see some of David Beazley's presentations on YouTube. He presents
regularly at PyCon and other conferences. He's also the author of Python
Essential Reference and the editor of Python Cookbook, 3rd Edition.

One of my favorite presentations of his that gives a flavor of his instruction
style is "Python Concurrency from the Ground Up" at PyCon 2015:

[https://www.youtube.com/watch?v=MCs5OvhV9S4](https://www.youtube.com/watch?v=MCs5OvhV9S4)

I saw this one live, but I think the recording is good quality. He live codes
a Python 3 highly concurrent, generator-based TCP server that does fibonacci
calculations, if I recall correctly.

One of the YouTube comments gets it right, it's "The Jimi Hendrix of Python﻿".

The prior course I took with him was called "Writing a Compiler (in Python)".
I think I took it the first time it was offered, in 2012. In that course, we
implemented a programming language that was a (very small) subset of GoLang,
by building the entire parser/compiler in Python. So, in 5 days, you learned
all about compiler theory, and wrote your own compiler (in Python) for this
GoLang-style language. The last day, we peeled away the layers of the onion
for how PyPy is implemented under the hood, using our newfound compiler
toolchain knowledge. It was really fun. He has a very engaging presentation
style and a fascination with computing that is infectious. You leave the
course energized and happy to be a programmer.

~~~
ska

       "So, in 5 days, you learned all about compiler theory, ..."
    

You did not. Not to detract from the course - I have no opinion on that and
you seem to have got a lot out of it and sounds like fun. But in 5 days no
instructor or course is going to give you anything more than a fairly
superficial understanding of something like compiler theory.

It sounds a lot like a typical module from one of the more rigorous
introductory undergraduate courses on compilers, that's good stuff!

------
threatofrain
What collection of books or topics would be a suitable replacement for the CS
fundamentals most discussed by SICP? When I hear people praise this book, it's
often in somewhat vague terms.

------
blackrock
I wish they rewrote this using Python code.

Maybe someone can take up the mantle on that.

~~~
nikofeyn
why?

and just to clarify my why, it really bothers me that people who do python
tend to only want to do python, as if it's some advanced, modern language and
the only choice for doing code if you don't like c# or java or c++. it's well
over two decades old, which isn't a problem in and of itself, but python
ignored and has continued to ignore better programming language designs both
before and after it was created. how about you learn something new, and just
use a lisp or scheme, just as the course and book does, like racket? and if
one doesn't want to use a lisp or scheme, then an ml language like sml, f#, or
ocaml would be the next best choice.

python is a scripting language. it should have stayed that way, but instead,
it's used to build large systems and to teach programming to people. it's a
real shame.

and to conclude, the entire point of SICP is that you don't need much of a
language. all you need is a small collection of _fundamental_ ideas in your
language. and as it turns out, python does not even have those.

~~~
blackrock
Then rewrite it in Elixir.

