Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The book that has changed my life the most, so far, has been The Structure and Interpretation of Computer Programs by Abelson and Sussman.

In 2010 I started a job that was far, far ahead of my skillset. I'd written fewer than 10,000 lines of code in my life, and I was completely ill-prepared for the work I was supposed to be doing. I picked up SICP about a month or two into that job.

Fast forward a year, and I felt that I knew more about programming than half the people I worked with, and I'd moved to a smaller, more awesome company doing work that I think is much more fun.

A year since then and I've picked up half a dozen new languages, given talks at user groups on some of them. Next year I'm aiming for conferences.

Pick up this book. It gives you superpowers.





And here's a re-typeset version in PDF format: http://sicpebook.wordpress.com/


This PDF looks really great, thank you for mentioning it!


And an epub for anyone with Nook or other epub-friendly device: https://github.com/ieure/sicp. Check the pull requests for a few updates as well.


"A year since then and I've picked up half a dozen new languages"

Definitely not an attack or a skeptic, indeed, it may play into your assessment of the worth of the book...

But 12 months, 6 languages - how well do you feel you've mastered any/all of those?


This book won't make you into a wizard like the one you see on the cover. What it will do is open your eyes.

I mean, it teaches scheme for Pete's sake. Playing Devil's advocate here, who honestly uses that in pratcital everyday systems? Nobody reads the book and immediately goes "Wow! Now that I learned Scheme, which is totally the best language, I'll use my Scheme powers to create the coolest software in the world!"

The reason why this book is so cherished is because it treats scheme as a building block for implementing the most interesting ideas and patterns from systems you use every day.

Rusty on recursion? That's chapter one. You'll be thinking with recursion and will understand most of its implications by the first few dozen pages.

Think you know about OO? Build your own object-orientation system in Chapter 2. Yes, on top of scheme.

Write your own programming language (well, implement eval anyway) in a few short pages in Chapter 4. (The result is about thirty lines).

How do Von Neuman register machines work? If you don't already know, you'll be writing a simple compiler in Chapter 5.

This up-close-and-personal whirlwind tour of these important CS concepts was very enlightening to me when I read it. This book isn't about how to learn languages; rather, it's about working with ideas: why abstractions are important, how to reason with them, and how to implement them using whatever bare tools you've got.

(Schemers: before commenting, realize that i wasn't poking fun at our favorite language; rather, i'm merely asserting that scheme isn't the point of the book)


I certainly don't think I've mastered any of them - even the languages that I use every day. But I can write real-world, useful programs in all of them.

The 'superpower' that the book gave me was a set of tools to think about computation in a language-independent way. Once I had that, then every new language was "oh, here's a nice syntax for doing something I already know how to do in Scheme".

The new languages I learned were from a variety of paradigms - functional (Haskell, OCaml, R), object-oriented (Java, Python) and array-based (Q, Matlab). I haven't learned a logic-based language yet, but I've written an evaluator for one (section 4.4 of SICP) so I don't expect picking up Prolog to be difficult, if I ever choose to do it.


"...here's a nice syntax for doing something I already know how to do in Scheme..."

That's a very nice line. I like that very much.


Interestingly, the book jokingly uses sorcery as an ongoing analogy for computing. Programs and algorithms are "spells," computational processes are "spirits" which are conjured and controlled by spells, programming languages are the arcane symbols and runes wizards use to compose their spells, and software bugs are the flawed spells which novice sorcerers often cast (sometimes with disastrous consequences).


This is exactly what gets me through my chemistry classes.

It's pretty ridiculous, but I think it puts the person back into the comfortable mindset of control. Rather than learning a big, scary thing that is beyond you, you are merely manipulating the world with your powers to accomplish tasks. For whatever reason, that paradigm is more intuitive for certain people.


I keep promising/threatening to make up business cards with the title "Angel Choreographer". I don't just know how many can dance on the head of a pin, I direct their steps on a regular basis.


Thanks, my sister egged me on to cleaning out our childhood closets at our parent's house this past weekend. Lots of old stuff, unused for years, sat there gathering insignificance. Looking at the pile of junk and stuff that was still salvageable and donateable, I saw SICP in a box of textbooks. And rescued it.


What work did you end up doing, and what work did you come from?


Could you please elaborate on your programming journey? I'd be very interested to know.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: