←back to thread

460 points pieterr | 2 comments | | HN request time: 1.885s | source
Show context
abeppu ◴[] No.42158611[source]
> In fact, I’d go further and say that it’s the only computer science book of that age that I’d happily and usefully read again without it being just for historical interest: the content has barely aged at all. That’s not all that unusual for mathematics books, but it’s almost unheard of in computer science, where the ideas move so quickly and where much of what’s written about is ephemeral rather than foundational.

I recall that when MIT stopped teaching with SICP, one of the main claims was that programming now is often not about thinking abstractions through from first principles, and creating some isolated gem of composing definitions. Instead, we interact with and rely on a rich ecosystem of libraries and tools which often have individual quirks and discordant assumptions, and engineering then takes on a flavor of discovering and exploring the properties and limitations of those technologies.

I think now, (some) people also are at the point of not even directly learning about the limitations and capability of each tool in their toolbox, but leaning heavily on generative tools to suggest low-level tactics. I think this will lead to an even messier future, where library code which works on (possibly generated) unit tests will bear some fragile assumption which was never even realized in the head of the engineer that prompted for it, and will not only fail but will be incorporated in training data and generated in the future.

replies(3): >>42158671 #>>42158711 #>>42159102 #
chongli ◴[] No.42158711[source]
I recall that when MIT stopped teaching with SICP, one of the main claims was that programming now is often not about thinking abstractions through from first principles, and creating some isolated gem of composing definitions.

Which is a category mistake that they actually address in the lectures. SICP is not a programming course, it’s a computer science course. Computer science is not about computers, let alone programming, just as geometry is not about surveying instruments and astronomy is not about telescopes.

When they stopped teaching SICP — in response to the pressure to teach more modern tools — they abandoned their scientific principles to satisfy commercial concerns. They stopped teaching computer science and became a vocational school for the tech industry.

replies(5): >>42159290 #>>42159490 #>>42159706 #>>42163180 #>>42164796 #
1. abeppu ◴[] No.42163180[source]
I'm fine with the claim that CS is not about computers as astronomy is not about telescopes, but there are pure CS courses that don't cover programming and do cover automata, turing machines, computability, complexity etc and don't cover programming. SICP is about programs in a running language rather than abstract idealized computations, and is centered around reading and writing programs as examples. I think its success stems from its grounding in exhibiting such examples that ordinarily would not become accessible to students so quickly.
replies(1): >>42164534 #
2. chongli ◴[] No.42164534[source]
If you watch the lecture videos they make it a point of emphasis that they’re not interested in teaching LISP and that the course is not a LISP course. To show running programs they had to select some programming language. This was a regrettable concession because some students will inevitably think the course is about that language and miss the general principles they’re trying to teach:

1. Primitive operations

2. Means of combination

3. Means of abstraction

These are the three main features of programming languages, according to Sussman and Abelson. They wanted us to stop bikeshedding over the superficial details and just look at a tool for these 3 features, then be able to implement the algorithms and data structures we already know. This is how you become a wizard who can cast magic spells.