Live data from Hacker News

Ask HN: SICP is often recommended as mind opener, what did you learn from it?

news.ycombinator.com

1–10 of 32 posts

Ask HN: SICP is often recommended as mind opener, what did you learn from it?

#1
We all know SICP is recommended by experienced developers all over the internet as a mystical book that turns your mind inside out and makes you a better programmer and computer scientist after you work through it.

If you are someone from that gang, what did you learn from SICP that really caused this transformation? What did it do differently than other programming languages or CS books?

Have you had similar experiences with other books (Lisp based or not)?

Re: Ask HN: SICP is often recommended as mind opener, what did you learn from it?

#4
post #3
post #2

Besides exposing me to Lisp, SICP taught me how much joyful - not just fun - programming can be.

Why exactly did it make programming joyful?

Because it turned out Lisp is the language that comes most natural to me and I'm most productive with.

Re: Ask HN: SICP is often recommended as mind opener, what did you learn from it?

#7
I didn't study SICP directly, but took a course which was inspired by it.

Perhaps the question needs the qualifier of whether you've encountered lisp before or not.

> ... What did it do differently than other programming languages ...

Ah. I don't think anyone would ask this if they knew lisp.

At the very least, you can approach languages like JavaScript, C, C++, Python, (etc.) with broadly the same brush where you're writing sequential code that essentially modifies structures in place. -- Especially with C, it's easy to imagine some kind of machine executing the statements. (Obviously, exact idioms vary between languages, etc.).

Whereas with lisp, you don't modify structures in place, and you're not writing code as sequential statements.

An example I still think is kindof neat from the SICP was writing the same functionality both as a 'low-level' recursive function, as well as making use of higher order functions to achieve the same thing.

> Have you had similar experiences with other books

I liked the ideas suggested in "Philosophy of Software Design".. it really emphasised the differences between an interface and its implementation; and how complexity arises from if the you need to know more than the interface provides, or if the interface requires more than it needs to.

Re: Ask HN: SICP is often recommended as mind opener, what did you learn from it?

#8
I didn't read the book, but I watched the recorded [lectures][1]. I got the sense that course was the tip of an iceberg of an entire academic discipline of programming philosophy and practical wisdom. On its face, though, it is an introduction to programming that starts with symbolic substitution, moves on to mutation and other tricks, and then I think gets into interpreter design.

If you want your mind blown, read "The Little Schemer" (or the original "The Little Lisper," or another of its variants). I particularly like the section near the end where the Y combinator is (secretly) described. The goal of that book is to "teach you to think recursively." It's not about writing recursive functions at work, but about appreciating the self-referential properties of algorithms.

[1]: https://www.youtube.com/playlist?list=PL8FE88AA54363BC46

Re: Ask HN: SICP is often recommended as mind opener, what did you learn from it?

#9
post #7

I didn't study SICP directly, but took a course which was inspired by it. Perhaps the question needs the qualifier of whether you've encountered lisp before or not. > ... What did it do differently than other programming languages ... Ah. I don't think anyone would ask this if they knew lisp. At the very least, you can approach languages like JavaScript, C, C++, Python, (etc.) with broadly the same brush where you're…

> Whereas with lisp, you don't modify structures in place, and you're not writing code as sequential statements.

Because lisp is an impure functional language, you absolutely can modify structures in place and, while it doesn't have statements but side-effecting expressions, it is just as sequential as any other language.

Similarly, you can code without nodify structures in place and in an otherwise functional style in many languages (without TCO, recording specifically gets problematic at some point, but then Lisps don't necessarily have TCO, so...)

Post reply on HN