| 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. |
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...)