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)?
1–10 of 32 posts
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)?
Besides exposing me to Lisp, SICP taught me how much joyful - not just fun - programming can be.
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.
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
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…
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...)