18 ms·
Structure and Interpretation of Computer Programs (1996) [pdf]
- deleted 7y ago[deleted]
- susam 7y agoEasy-to-remember short URL created with GitHub URL shortener: https://git.io/sicp.pdf https://git.io/sicp.pdf
- ashton314 7y agoThis book more than any other has made me the programmer I am. The hardest part about telling people about this books was how to find it. +1 to the guy with the short URL to this PDF.
- sdwa 7y agoI'm a relative late comer to programming and having read the first 3 chapters within a year or two of starting to program "in earnest", I echo your sentiments. I feel like it really taught me how to think like a programmer. I should really finish it.
- fwdsh3fwddsh3 7y agoI'd fuck you. And dang obvisously who'd downvote my message
- fwdsh3fwddsh3 7y agoWho wouldn't fuck dang
- morty_s 7y agoThis book is both art and magic. It is poetic in its treatment of introductory computer science.
- nealabq 7y agoThe authors also make the book available at MIT press, but not as PDF. Thanks! https://mitpress.mit.edu/sites/default/files/sicp/index.html https://mitpress.mit.edu/sites/default/files/sicp/index.html https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html https://mitpress.mit.edu/sites/default/files/sicp/full-text/... Other versions, again not as PDF: https://news.ycombinator.com/item?id=13918465 https://news.ycombinator.com/item?id=13918465 https://news.ycombinator.com/item?id=19049834 https://news.ycombinator.com/item?id=19049834 https://news.ycombinator.com/item?id=3034587 https://news.ycombinator.com/item?id=3034587 https://news.ycombinator.com/item?id=10178544 https://news.ycombinator.com/item?id=10178544
- libria 7y agoThanks for the links. > https://news.ycombinator.com/item?id=3034587 https://news.ycombinator.com/item?id=3034587 This one is a link to a .mobi/Kindle version, for anyone searching.
- senorsmile 7y agoboth PDF and epub versions here: https://sicpebook.wordpress.com/ebook/ https://sicpebook.wordpress.com/ebook/
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- jwilk 7y agoSICP = Structure and Interpretation of Computer Programs
- ryanmarsh 7y agoThis is so great. I've been working from a terrible scanned copy for years.
- tobinfricke 7y agoThe full text has been freely available online for years: https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html https://mitpress.mit.edu/sites/default/files/sicp/full-text/... Also, the physical book is available for only $40.
- fierarul 7y agoLast I looked in Europe the price is more like $65, about the same as a Raspberry Pi 4 with 4GB of RAM. I know technical books are expensive and the book has 688 pages but it seems expensive. If somebody wants to ship their used SICP book in Romania I would love to take it. It's on my wish list since forever.
- molteanu 7y agoCheck some second-hand online stores like abebooks (mostly ships from US so it's way too expensive) or from biblio which has more accessible shipping rates [1] Salutari din Romania! https://www.biblio.com/search.php?author=&title=structure+and+interpretation+of+computer+programs https://www.biblio.com/search.php?author=&title=structure+an...
- pixelmonkey 7y agoI took a one-week SICP course with 5 or 6 other professional programmers last year. It was amazing. I wrote about my personal motivation for doing so here: https://amontalenti.com/2018/08/26/sicp-expanding https://amontalenti.com/2018/08/26/sicp-expanding As for an update: SICP was as good as I expected and definitely makes a professional programmer regain some love for the art and magic of computer science. (However, the book is a hard read without a guide. But it's really fun if you alternate between coding and reading, by using a local Racket & DrRacket install.) One can find recorded courses from MIT with the SICP authors on YouTube, so that may be one way to do this from home. Hal Abelson was recently interviewed about the lasting influence of the book in this podcast. It's a good conversation: https://pca.st/wmrdiyvq https://pca.st/wmrdiyvq
- methehack 7y agoYou probably know this, but for others reading along, Racket has a #lang sicp language to fully support using Racket to follow along. https://docs.racket-lang.org/sicp-manual/index.html https://docs.racket-lang.org/sicp-manual/index.html
- ryeights 7y agoAlternatively, install MIT Scheme (*nix/macOS): https://www.gnu.org/software/mit-scheme/ https://www.gnu.org/software/mit-scheme/
- neilv 7y agoIf MIT Scheme runs on your computer, great. IIRC, SICP support was added to DrRacket with the idea that it would be more accessible to new students (runs on more computers, student-oriented IDE that's less-intimidating than something Emacs-ish).
- Stormwalker 7y agoDoes it make sense to use Clojure while reading the book?
- formalsystem 7y agoAnyone else feel like this book is really overrated? I've enjoyed the classical mechanics book by the same authors a lot more since it goes over a particularly good application where functional ideas shine
- methehack 7y agoI totally respect and even admire dissenting opinions, but, on the contrary, this book is magic for me. For me, it connects programming to larger and vital human endeavor. K&R does that for me too, so maybe it's a me thing.
- dorfsmay 7y agoThat's an interesting comparison. K&R did nothing for me, I honestly did not understand C until I read Harbison & Steele.
- catalogia 7y agoK&R blew my mind when I was a teenager, but years flipping through it again it does nothing for me. I think the experience somebody will have with K&R depends greatly on their previous experiences.
- zabzonk 7y agoIt's certainly not "mind-blowing", and is not intended to be, but it is a brilliant example of how a technical book on a specific programming language should be written.
- Gusen 7y agoMust see PDF here: Listen to President Donald Trump demand a $4 billion dollar bribe from child rapists to "turn a blind eye" on January 3, 2019. Download the video, turn the volume all the way up and put head phones on. Trump is on a call from with Henry Porter and Gigi Hadid. (Page 63) Bribe demand @1018am https://drive.google.com/file/d/1Grdr8xF2psKNsuYlEnl9dIRV-77YG0Vr/view?usp=sharing https://drive.google.com/file/d/1Grdr8xF2psKNsuYlEnl9dIRV-77... This is the tip of the iceberg. PDF link below: Full 84 page document [updated 9Sep]: FBI_FinalDraft_26Jul2019_BSchlenker.pdf https://drive.google.com/file/d/1Sj9EN_pHmicKS6rFQlmk67knMdJc9cGk/view?usp=sharing https://drive.google.com/file/d/1Sj9EN_pHmicKS6rFQlmk67knMdJ...
- ttul 7y agoWTF is this?
- Gusen 7y agoThis is who our politicians really are. Read the PDF. This is not fiction. Watch the Buffalo Police illegally seize my apartment at 307 Summer. This was done for child rapist Henry Porter. Here is the video. See pages 7-10 for more... 18JanCh4_KnockToEnd.avi https://drive.google.com/file/d/1N2mozGdPD7HMWELjRhvIZ94eBLjXEAVX/view?usp=sharing https://drive.google.com/file/d/1N2mozGdPD7HMWELjRhvIZ94eBLj... Transcript of the event: https://drive.google.com/file/d/192B7tZa3b23Ab0UkSLGqNuLBUrDqOaAr/view?usp=sharing https://drive.google.com/file/d/192B7tZa3b23Ab0UkSLGqNuLBUrD... This is the tip of the iceberg. Full 84 page document [updated 9Sep]: FBI_FinalDraft_26Jul2019_BSchlenker.pdf https://drive.google.com/file/d/1Sj9EN_pHmicKS6rFQlmk67knMdJc9cGk/view?usp=sharing https://drive.google.com/file/d/1Sj9EN_pHmicKS6rFQlmk67knMdJ...
- dang 7y agoPlease don't feed egregious comments by replying: https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html. Flag them instead: https://news.ycombinator.com/newsfaq.html#cflag https://news.ycombinator.com/newsfaq.html#cflag
- 7y ago
- Recursing 7y agoThe ebook on https://github.com/sarabander/sicp-epub/ https://github.com/sarabander/sicp-epub/ seems to be inaccessible, trying to fetch it via git lfs gives "This repository is over its data quota. Purchase more data packs to restore access." Does anybody know where I can/should host a copy?
- aplaice 7y ago> Does anybody know where I can/should host a copy? With torrent or IPFS, perhaps? (Given the CC BY-SA license, this would be completely legal.) Also, GitHub's behaviour wrt to LFS is really disappointing — the epub file could have been stored normally with git (its size of ~ 3 MB is far less than the hard limit of 100 MB), in which case there would have been no issues of exceeding a data quota... For comparison, the linked PDF is normally indexed with git, despite weighing at 7.7 MB. Since LFS is supposed to reduce total bandwidth use for the hoster, GitHub is, in effect, punishing people for reducing GitHub's bandwidth usage... Actually, the linked PDF is originally[0] by the same author as the EPUB version you linked. However, in the original repository[0] the PDF is managed with LFS, so it's inaccessible... [0] https://github.com/sarabander/sicp-pdf https://github.com/sarabander/sicp-pdf
- dredmorbius 7y agoI've cloned and built from the repo. On Debian GNU/Linux, I had to install a few packages in addition to base tetex: latexmk fonts-inconsolata linuxlibertine fonts-linuxlibertine texlive-fonts-extra texlive-latex-extra I also downloaded locally installed the two suggested fonts to /usr/local/share/fonts/truetype/ Build took a few minutes on an older box, but looks spiffy.
- Lammy 7y agoThe contents of the book are wonderful, but I can't stop admiring the TeX typesetting itself. It's startling how effortless it is to read this document compared to 99% of Web-based reading I do every day. The things that stand out to me most are the lack of vertical whitespace "rivers" due to the smart kerning & tracking, the small-caps for technical initialisms like 'HTML', and the beautiful beautiful Garamond of the body text. I should use LaTeX more :)
- a3n 7y agoIt looks so much better than my Google books edition on Android (Moto g6).
- svat 7y agoI agree with the spirit of this comment: good typesetting is a delight, and TeX is the best tool I've seen for achieving it. We are lucky that its author made the result of his researches freely available, and that a community has kept it alive. I'll just point out that simply using LaTeX does not automatically guarantee great typesetting (you have to know what you want) though it does provide a baseline of decent paragraphs at least. Nit: TeX/LaTeX do not inherently avoid rivers (though see https://tex.stackexchange.com/q/29049/48 https://tex.stackexchange.com/q/29049/48 and https://tex.stackexchange.com/q/4507/48 https://tex.stackexchange.com/q/4507/48), and the body font in this PDF is not Garamond but Linux Libertine. The typesetting of this book seems due to Andres Raba (sarabander on GitHub), and the LaTeX is generated by a script from texinfo format: https://github.com/sarabander/sicp-pdf/tree/5b3a5b2/src https://github.com/sarabander/sicp-pdf/tree/5b3a5b2/src
- musicale 7y agoTeX isn't so bad when you use a typeface other than the eyeball-scarring, madness-inducing Computer Modern.
- Ma8ee 7y agoWhat’s wrong with computer modern?
- michaelcampbell 7y ago
- r-s 7y agoI went through SICP a few years after finishing my computer science degree and enjoyed it greatly. It was a great experience and I think made me quite a bit better developer. I also became a huge fan of lisp which I think is one of the side effects of this book.
- yumraj 7y agoQuestion: will you recommend SICP as an intro to programming book for say high schoolers? Or, does it assume some prereqs?
- ng12 7y agoIt assumes none. It walks you through the very fundamentals of computation.
- inimino 7y agoIt does not assume anything except algebra (and I think some minor calculus concepts are mentioned in passing, as using higher-order functions to estimate derivatives or some such, but not at all required). However, it is designed to be used in an introductory university course led by experienced instructors. Without support, even a highly motivated high school group would have a hard time with the material and pace. So I would say it all depends on the high schoolers, and especially on the support available.
- westoncb 7y agoThis is not true. I've watched conversations on this over the years on HN, and inevitably you get a few people saying the math is nothing to worry about, and then a bunch of people saying they had to give up because they didn't have the math background (oftentimes these are professional programmers). My recollection from the bit of time I spent with it was that most of the examples were drawn from mathematics, often times relying on implicit bits of knowledge that would lose a reader unless they'd had long interest/experience in math. I think the issue in divided opinions here is a matter of lost perception of the range of math knowledge: I've noticed this same communication difficulty when playing new people at Go and they ask whether I'm good or not. I never really know how to reply because on an absolute scale I'm an abysmal player—but against anyone who's never really studied the game I'll appear incredibly skilled. When people answer that SICP requires very little math background, I think that's an accurate phrasing relative to a more global scale of math knowledge. But in the realm of folks with no particular interest in math, it requires a relatively sophisticated knowledge of mathematics. If a high-schooler is training for math olympiads or they're on track to study math/CS/etc. at a top-tier university, they'll probably be fine. All the others will likely be completely lost. Here's another example from today's thread: https://news.ycombinator.com/item?id=21301474 https://news.ycombinator.com/item?id=21301474
- chrisa 7y agoThe original course videos are on youtube too! I found them a bit easier to watch than reading the book: https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CABEA24090 https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CAB...
- globnomulous 7y agoI just started the first video. This guy is a phenomenal lecturer. Thank you for posting the link!
- dmitryminkovsky 7y agoHad no idea these were online. Thank you!!
- zelphirkalt 7y agoPictures in the PDF are garbled. The Version built from https://github.com/sarabander/sicp-pdf https://github.com/sarabander/sicp-pdf is much better.
- susam 7y agoThe PDF in this post is built from https://github.com/sarabander/sicp-pdf https://github.com/sarabander/sicp-pdf. See https://opendocs.github.io/sicp/ https://opendocs.github.io/sicp/ for more details. If you have a direct link to a better rendering of this book, could you please share it? I would like to see which pages are rendered better in it.
- tejaswidp 7y agoI read the book a while ago, It was quite an eye opener. The one thing I haven't been able to go through was the last chapter, building a "metacircular evaluator. I saved it for a time when I understood compilers/interpreters better. Diving into codebases, like the octave and supercollider interpreters recently. might be quite interesting to re-read it.
- inimino 7y agoMy experience of the last chapter is: it's not as satisfying or as easy as the previous chapters where the solutions to exercises are self-contained. It's also less suited to doing outside of school, if you only have nights and weekends and must re-establish the context every time you sit down again with the book. However, it is still worthwhile, and definitely doesn't require any previous compiler/interpreter exposure (in fact, it might be an advantage to come in fresh, as a lot of what you do in chapter 5 is really easier than you might think if you have exposure to advanced compiler techniques).
- watersb 7y agoMy favorite class in college, also the very first class in our Computer Science curriculum. I still use it.
- blendo 7y agoWhen I took it at Boston University in 1987, it was my last class for the BS/CS. And one of the toughest because I had so much imperative/side-effect ridden code to unlearn. Does the MIT Python replacement go "functional first"?
- jcoffland 7y agoWe read SICP back in college. I loved it but I remember a lot of moaning from my classmates. I wish I had more practical need for Lisp because I loved programming in it. My favorite part of SICP is where a streaming lazy evaluated version of sin() is defined using cos() which is defined using sin().
- deleted 7y ago[deleted]
- golergka 7y agoI first found out about this book from someone reposting on HN a few years ago, and decided to explore it because of discussion in the comments. It significantly influenced me as a developer, and I still point junior developers toward it as one of the main books they should read (and by read, I obviously mean go through excercises) about the craft. Thanks for reposting this again. Please, do it every couple of months.
- zabzonk 7y agoThe foreword of this book must be the only one I have ever read where I disagree with almost every statement it makes. This doesn't encourage you to carry on, but I have (first couple of chapters), and find the whole structure and direction of the thing inimical to me. It seems to me that this is somewhat like the "dragon book" - people were exposed to it before they had read other better books.
- madhadron 7y ago> The foreword of this book must be the only one I have ever read where I disagree with almost every statement it makes. I just went an reread the forward, and nothing struck me as controversial. Could you elaborate a bit?
- dmitryminkovsky 7y ago> You are probably reading it in an Info hypertext browser, such as the Info mode of Emacs. You might alternatively be reading it TEX-formatted on your screen or printer, though that would be silly. I'm read a PDF :/
- ilammy 7y agoI guess that’s talking about reading the TeX markup itself.
- wbillingsley 7y agoOne of my favourite books, by some of my favourite authors.
- sriram_malhar 7y agoSICP shows up every few months on HN, and I upvote enthusiastically every single time! I am a self-taught programmer, and survived a long time on C/C++/Java etc. I was smugly confident in my confined space. Then I came across SICP. I discovered a world of closures, streams, object-orientation done using closures, infinite series using streams, lazy evaluation, functional programming, and so much more. It was such a sharp pivot that I registered for a PhD because I just had to know what else I took for granted. I was 42 when I registered (graduated at 48)!
- mirrorlake 7y agoRead any other good books in your time in school? I'm always looking for a good CS book to add to my reading list.
- sriram_malhar 7y agoOh yes. Grad school is all reading. I recall reading these books in their entirety. Security Engineering. Ross Anderson The Formal Semantics of Programming Languages. Glynn Wynskell. Communicating Sequential Processes. Tony Hoare. This book is surprising in its compactness and lucidity. Pi Calculus. Robin Milner. Semantics With Applications. Hanne Riis Nielson On Concurrent Programming. Fred Schneider. Specifying Systems with TLA+. Leslie Lamport. Distributed Algorithms. Nancy Lynch. Reliable Distributed Computing. Ken Birman and Robert Van Renesse. I'm sure I'll recall more as soon as I hit "reply".
- elteto 7y agoWow that is a fantastic story! Kudos for completing your PhD! Would you mind expanding a bit more about your PhD? Which school did you go to? Did you find that your age made it more difficult to get in/stay in once accepted? How did you handle family commitments (if you had them)? Reason I ask is because I've been considering going back to school to get a PhD. Again, that is quite an achievement, so congrats!
- sriram_malhar 7y ago
- acgan 7y agoHeavily inspired by SICP, I am co-teaching CS43 during Stanford Winter quarter. Code: https://github.com/stanfordhaskell/cs43 https://github.com/stanfordhaskell/cs43 Site: https://stanford-lambda.gitlab.io https://stanford-lambda.gitlab.io All of the course materials will be open-sourced @ https://github.com/stanfordhaskell/cs43 https://github.com/stanfordhaskell/cs43 (previously Clojure, now Haskell!) If anyone has concrete suggestions on how to improve our curricula, I would be happy to take any suggestions.
- 26702670 7y agoWhere might I find the class materials from when you were using Clojure?
- linuxhansl 7y agoOhh... This was one of the books we used when I studied computer science. Great book and it brings back memories. State is only introduced on page 294!!
- neilv 7y agoI'm glad about SICP being promoted and accessible to people around the world. Maybe 20 years ago, the authors put the full text for their textbook on the Web, as HTML. This made it more accessible to people, and set an early precedent for freely-available top textbooks on the Web (even though they presumably could've made more money by only selling print copies). Then, since not all students' computers could run a Web browser, Lytha Ayth manually converted the HTML to Texinfo, with ASCII art of all the figures. If one has the means to buy the printed book, doing so would seem like a nice gesture, in response to the authors' and publisher's generous sharing and example-setting.
- 8458e112e7b2 7y agoI would like to tackle SICP. I am a programming novice and would like to improve my skills. The last time I did any kind of math that was more complex then simple operations was a long time ago and math was never my strong subject. I have pretty much forgotten any kind of algebra, calculus etc I learnt. So assuming I know very little math, what is the best way/book/method to learn algebra/calculus etc to tackle SICP ? I would like to do that before I begin my SICP journey. Any suggestions appreciated!!
- Scarbutt 7y agohttps://openstax.org/subjects/math https://openstax.org/subjects/math are pretty good. Start with the Pre-Algebra book, then Algebra and Trigonometry, and then Calculus volumes, the first two volumes are more than enough for SICP. This can take you two years depending on your time.