7 ms·
> I disagree. There's over 200 pages before they even introduce mutation and impure functions. That's kind of the point. I tend to be the one defending SICP on
by neilk 15y ago
> I disagree. There's over 200 pages before they even introduce mutation and impure functions.
That's kind of the point. I tend to be the one defending SICP on this board, but only for someone who wants the very particular kind of education SICP brings.
Meanwhile, over in languages people are using, you don't have the option of living without mutation. Time to learn how to protect yourself, or not, with closures.
Recursion has a bigger speed and space penalty. You need to tell people when to use maps and folds and when not to.
SICP doesn't really do combinators, and they are very useful in JS.
Also, a lot of libraries in JS use chaining, so a grounding in their theory (maybe even a discussion of monads à la Haskell) might be very fruitful. SICP has nothing like that.
Callbacks are everywhere in JS programming, so a discussion of how to avoid spaghetti would be good.
Latency is a much bigger deal for JS -- how to balance very fast local resources with potentially never-returning remote resources -- and techniques for beating that are not to be found in SICP, as far as I remember.
And of course there's no discussion at all of UI or media in SICP.