16 ms·
Paul Graham reviews Structure and Interpretation of Computer Programs (2000)
- superuser2 13y agoI'm curious... when is one "ready" for SICP?
- willismichael 13y agoIdeally before you're exposed to OOP - it will be a lot harder to grok after that.
- Shorel 13y agoBecause classes are the poor man's closures?
- base698 13y agoStructs are the poor man's classes.
- btilly 13y agoNo, because if you're starting with OO as implemented in any particular language then you can never get to insights like http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-18.html#footnote_Temp_289 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-18.html... which, since I know people won't follow the link, I'll quote from: Developing a useful, general framework for expressing the relations among different types of entities (what philosophers call ``ontology'') seems intractably difficult. The main difference between the confusion that existed ten years ago and the confusion that exists now is that now a variety of inadequate ontological theories have been embodied in a plethora of correspondingly inadequate programming languages. For example, much of the complexity of object-oriented programming languages -- and the subtle and confusing differences among contemporary object-oriented languages -- centers on the treatment of generic operations on interrelated types.
- 3rd3 13y agoI don’t quite get the last bit. Why is "centering on the treatment of generic operations on interrelated types" inadequate? Do they talk about the tree-like structure of inheritance which might be useless in scenarios where the relations can be better modelled by an arbitrary graph? Also, why would studying OO first be narrowing my ability to learn different paradigms?
- route66 13y agoAbout the last bit: http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Need_for_covariant_argument_types.3F http://en.wikipedia.org/wiki/Covariance_and_contravariance_%... is probably one of the issues.
- btilly 13y agoIt is, although programmers have mostly working solutions that they are used to for that one.
- btilly 13y agoI don’t quite get the last bit. Why is "centering on the treatment of generic operations on interrelated types" inadequate? Go to the link, and find what it was a footnote on. You'll be reading through a section that is attempting to make operations like addition work in a reasonable way across different numeric types for an abstract math package which needs to support integers, rationals, floating point, complex analogs of all of the above, polynomials over all of the above, and lots of other fun stuff.. Do they talk about the tree-like structure of inheritance which might be useless in scenarios where the relations can be better modelled by an arbitrary graph? Look at http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-18.html#%_fig_2.26 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-18.html... for a set of different geometric types that is challenging to model with inheritance. Also, why would studying OO first be narrowing my ability to learn different paradigm? Because your mind naturally goes through prepared channels. If you've got OO available to you, then you naturally solve the simple versions of problems with OO. Then when you get to the subtleties of the complex version that your form of OO doesn't work well for, it is hard to see that OO isn't a good fit, rather than being trapped into thinking that you just chose a poor initial model.
- wonderzombie 13y ago"When will you learn? Closures are a poor man's object."
- Shorel 13y agoThat's the answer I expected ^_^
- bcoates 13y agoThis is why I support exposing new programmers to Basic: unlearning bad ideas is a core skill we should start developing early.
- ilyanep 13y agoI think Dijkstra just rolled in his grave a bit.
- aswanson 13y agoIm guessing youre being sarcástic, but Basic should not be visited upon any human you wish no harm done to. It was a pox on a generation of programmers, foisted upon us under the guise of 'lets expose kids to computers! Thats a Good Thing!'
- derefr 13y agoThat's a fascinating idea. Reminds me of http://lesswrong.com/lw/us/the_ritual/ http://lesswrong.com/lw/us/the_ritual/
- aswanson 13y agoStarting a programmer off in BASIC is akin to starting an English major off in ebonics.
- arundelo 13y agoNot a very good analogy. [...] a very particular piece of grammar, expressing a nuance that standard English leaves to context. Black English is a seemingly still water that runs deep. http://www.theroot.com/views/why-dea-needs-ebonics-translators http://www.theroot.com/views/why-dea-needs-ebonics-translato...
- aswanson 13y agoI stand corrected, good link. Nonetheless, would still wish Basic never entered my life.
- tzs 13y ago
- ww520 13y agoI found the oppose to be true. The more the different things you exposed to, the more you can borrow to reflect on the new material. Exposed to a different paradigm like OOP only helps.
- shrughes 13y agoUm, no? Having more experience with programming would make things easier to understand.
- WalterSear 13y agoAccording 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?
- rmckayfleming 13y agoSICP is available online (HTML) and I recall finding an epub version someone made of it on GitHub. https://github.com/ieure/sicp https://github.com/ieure/sicp
- pdog 13y agoThe full text has been available online for years. http://mitpress.mit.edu/sicp/sicp.html http://mitpress.mit.edu/sicp/sicp.html
- deleted 13y ago[deleted]
- Simucal 13y ago"Now, when will it and The Art of Computer Programming be available in an electronic format?"
- WalterSear 13y agoThanks. 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.
- Simucal 13y agoI don't know about TAoCP but SICP has been available in electronic format for some time. They released the full book as HTML [1] but others have taken to formatting it in Mobi [2], PDF [3] and even a "Pocket" edition [4] formatted for small devices. [1] http://mitpress.mit.edu/sicp/full-text/book/book.html http://mitpress.mit.edu/sicp/full-text/book/book.html [2] https://github.com/twcamper/sicp-kindle https://github.com/twcamper/sicp-kindle [3] https://github.com/sarabander/sicp-pdf https://github.com/sarabander/sicp-pdf [4] https://github.com/sarabander/sicp-pocket https://github.com/sarabander/sicp-pocket
- dchichkov 13y agoThe external metric that one can use is: "did it make my code and my ability to explain things less complicated and more understandable to other people". If yes - that person was ready. If no, if as a result both code and the language of that person got filled with formal and obscure complications... then no. Not ready.
- gbog 13y agoEveryone here seem to think its take it out leave it, eat all of it or nothing. I don't agree. Get the book. Sneak in when you have an hour left without forcing yourself. You might get hooked as I have been. Then you'll find more hours for it. Do or don't do the exercises, it's not important. If there is a couple of paragraphs you don't understand, don't worry, skip forward a bit. If you feel it's going too deep just hang up. Maybe one day you'll come back to it. Oh, and don't overlook the footnotes, some have very interesting bits.
- acjohnson55 13y agoWhenever one is ready to devote some time and brainpower to mastering its concepts. It moves pretty incrementally, and there's nothing in there that's impossibly complicated to understand. It does probably require a bit more mental effort than understanding your typical OO paradigm. It's a great book--I highly recommend giving it a shot.
- freyr 13y agoPeter 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_title?ie=UTF8&ASIN=0262510871&channel=detail-glance&nodeID=283155&store=books http://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_dp_titl...
- S4M 13y agoIt 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.
- mbetter 13y agoTry reading it again.
- deleted 13y ago[deleted]
- freyr 13y agoHis 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 13y ago
- mikevm 13y agoThis is a good time to remind everyone of a decent eBook PDF version of SICP: http://sicpebook.wordpress.com/ http://sicpebook.wordpress.com/
- indubitably 13y agoAh, pg, assigning homework to… everyone.
- chacham15 13y ago> 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 13y ago+1 same here.
- cruise02 13y ago> 6. Who is al? Why is his name in lowercase? Anybody?
- btilly 13y agoAl 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 13y agoah..as seen in literature reference 'et al'
- btilly 13y agoExactly. With et meaning "and".
- krsree 13y agoah..as seen in literature reference 'et al'
- cruise02 13y agoAh, of course, thank you. I didn't see it anywhere on the review page or the main Amazon page for the book, so it threw me off. I was afraid I was going to have to finish SICP before I'd get this reference. :)
- tieTYT 13y agoThe 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=eSlRd6MnDv8&t=479 http://www.youtube.com/watch?feature=player_detailpage&v=eSl...
- deleted 13y ago[deleted]
- ThatGeoGuy 13y agoIf I recall correctly, the book does mention that it was designed with students at MIT in mind. I also recall that the students finish a couple calculus courses before taking the SICP course, so the math contained therein isn't exactly new material to them. For the most part I believe you're mostly complaining about chapter 1 though, maybe chapter 2 when they talk about painters and the exercise with the chessboard. Those are two that come to mind that tend to be excruciatingly long and unnecessarily difficult for beginners. I would advise you to go through the book again, and while this does come off as somewhat snooty, I would say that if you don't understand the math or physics behind some of the exercises, then you should spend time trying to figure out the algorithms for them. Most of the value of the book is actually through the exercises, as typically those are the spots where you'll eventually start to have those "aha!" moments when working with scheme. As a disclaimer, I should point out that I had quite a bit of programming experience in C++, Python, and other OOP languages before trying SICP. Luckily, I never struggled with the math, and learning Scheme came quite naturally. However, the common problems associated with thinking in Lisp do apply, and it may take several cracks at the book before you really understand the beauty or essence of what SICP tries to teach.
- ducklord 13y agoWho is al?
- axblount 13y agoAuthor lists often end with "et al" which is Latin for "and others."
- lifeformed 13y agoI'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.
- asgard1024 13y agoHe was a famous Arabic mathematician, a pioneer of algebra and algorithms (both named after him). (Just kidding. I also didn't know the answer, not having read SICP, this would be my guess, but I believe axblount is right.)
- gcv 13y agoAlso look at the "most helpful" negative review: http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=0070004846&linkCode=&nodeID=&tag= http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_pe... 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."
- sytelus 13y agoMay 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/dp/1888009233 http://www.amazon.com/Newtons-Principia-The-Central-Argument... 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 13y agoI 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.
- dakimov 13y agoWhy Paul Graham's opinion on this book matters that much? Is he any good at programming? I do not think so.
- dapz 13y agoBrian Harvey's video lectures on Scheme using SICP: http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E89002AA9B9879E http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E890... 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 13y agoLots 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 13y agooops I totally posted this to the wrong thread
- fsloth 13y agoI 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.
- jimhefferon 13y agoThe negative reviews comfort me. They make it more possible for me to believe that my negative reviews are signs of misunderstood genius. :-)
- kyllo 13y agoThanks 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.