Live data from Hacker News

SICP: The only computer science book worth reading twice? (2010)

simondobson.org

111–120 of 189 posts

Re: SICP: The only computer science book worth reading twice? (2010)

#111

Earlier quoted context omitted.

> SICP is not a programming course, it’s a computer science course. I don't see what you mean by this at all. Furthermore this doesn't strike me as a useful distinction when a) it doesn't cover most topics labeled by consensus as "computer science" and b) it very clearly does teach a great deal about programming. Why not say it teaches computer science and programming skills? Why do these have to be exclusive? There'…

I don't see what you mean by this at all The goal of the course is not to teach programming skills, it's to teach computer science. The difference is explained quite thoroughly in the lectures. One might even say that answering the question "what is computer science?" is one of the core goals of the course and a major part of the philosophy of the professors who created the course. The argument being made by the comp…

> The goal of the course is not to teach programming skills, it's to teach computer science.

Who cares what the goal is? It teaches programming skills too. The intent is irrelevant and for the most part so too is the distinction (outside the american education system, anyway).

> Furthermore, it's a mistake to believe that the discipline is all about the tools.

Who outside the american education gives a damn about "the discipline", if that refers to anything meaningful outside the american education system in the first place? It's arbitrary and has no purpose or benefit aside from organizing the education system. This is a course that miraculously, against all odds, manages to teach useful skills in addition to jargon patterns of thought. Why not celebrate this?

Anyway, programming is a useful pedagogical tool for teaching CS. CS is a useful pedagogical tool for teaching programming. To brag about not teaching one is just hobbling your own insight into the value you provide students.

I myself have a CS degree from a prestigious institution and largely enjoyed my education. But this attitude you alude to is just jerking off for the sake of jerking off. Particularly in the case of SICP.

Re: SICP: The only computer science book worth reading twice? (2010)

#112
post #43

Earlier quoted context omitted.

Have you seen "Software Design for Flexibility: How to Avoid Programming Yourself into a Corner" by Chris Hanson and Gerald Jay Sussman It's from 2021.

I hadn't, that looks excellent.

Unfortunately, while I really want to love Software Design for Flexibility, it's clear that Hanson and Sussman haven't really solved (or even come close to solving) the problem they have identified in the book.

The introduction to that book is brilliant at identifying just how much room software has to grow (you can find similar talks from various Strange Loop sessions Sussman has done), and is really quite inspirational for anyone seriously thinking about the future of computing.

But the rest of the book fails to provide a coherent answer to the questions that are brought up in the intro. It shows off some neat functional programming tricks, but repeatedly fails to deliver on solving the (admittedly ambitious) challenges it provides for itself.

I'm still glad I have a copy, and have re-read the first half multiple times now, but sadly it's not the book it wants to be. To be fair though, that is because we haven't come close to understanding computation enough to solve those problems.

It's a very ambitious book that falls short of it's own ambitious.

Re: SICP: The only computer science book worth reading twice? (2010)

#113

Earlier quoted context omitted.

> while using CS background to fully understand frameworks already existing. Most frameworks today are so complicated that you typically cannot understand them fully, and even understanding them somewhat partially is more than a full-time job.

I wish someone told me this back when I was trying to get a programming job as a self taught programmer. I would do things like try to build a simple React clone thinking it would help me overcome imposter syndrome to fully understand things from the base up, but it was pretty futile because no one really has time to wrap their head around something that big unless they are paid full time to do it.

[deleted]

Re: SICP: The only computer science book worth reading twice? (2010)

#115
post #109

I considered reading SICP recently but this changed my mind: > It's old and feels old. originally in scheme, they recently re released the book in JavaScript which is more approachable to today's audiences and there are still good things in there about encapsulation and building dsls. ymmv. Though the language and programming design concepts hold up, we're playing at higher levels of abstraction on more powerful mach…

Scheme as basically an implementation of the untyped lambda calculus will eternally be a good frame work to think about the problems of computation in.

In the more practical area Racket (the most modern Scheme) has basically any practical functionality you would want, while amazingly remaining a platform for an incredible amount of experimentation in computation and programming language theory.

But SICP is a book that is for people interested in the study of computation what programming languages can be. If you're worried about getting a job in software it won't be all that useful, but it will remain a classic for anyone interested in engaging in creating the future of software.

Re: SICP: The only computer science book worth reading twice? (2010)

#116
post #79

Earlier quoted context omitted.

There's a SICP edition done in Javascript.

Have you looked at it? It's an abomination. The point of SICP isn't Scheme or the syntax of Scheme, but what it represents. Whoever made the Javascript rewrite didn't understand that. You can't write a metacircular interpreter in Javascript, because Javascript is not homoiconic.

You can't write a metacircular interpreter in Javascript, because Javascript is not homoiconic.

Is that a downside? I never wrote or used metacurcular interpreter in my life and still don’t know why I had to read about it. Is it an interesting implementation technique of lisp? Yes. Does anyone really need that?

You can rip off that part and everything that follows and that will be enough for a regular programmer. No one itt needs to know how to design metacircular interpreter on register machines.

Re: SICP: The only computer science book worth reading twice? (2010)

#117
I picked up SICP expecting to read something really interesting or profound with the way it's been hyped up over the years however it's more of a how-to manual for working with Scheme/LISP and frankly that didn't interest me. Unfortunately most people have come to accept that LISP isn't a particularly effective way of programming even if some people get really excited by the idea of mutable and interchangeable data and code it's just not as powerful as they make it out to be and the obfuscation of program flow and execution and the lack of separation/delineation of data and code proves to be a hinderance more often than it is helpful. This doesn't discount LISP's contribution to computer science historically and how it's influenced modern day language design over the years, just that in my opinion LISP/SCHEME is more of a historical curiosity than a modern day guide to effective programming. (And certainly one that has no place as the introductory class at MIT). Anyway I've said something negative about SICP so prepare for this to be downvoted to the bottom :)

Re: SICP: The only computer science book worth reading twice? (2010)

#118
post #38

It’s interesting, SICP and other many other “classic” texts talk about designing programs, but these days I think the much more important skill is designing systems. I don’t know if distributed systems is consider part of “Computer Science” but it is a much more common problem that I see needs to be solved. I try to write systems in the simplest way possible and then use observability tools to figure out where the de…

I find books like SICP interesting and not very useful. I love reading them because I like this stuff, but I don’t get to apply their teachings in real world software. It’s a problem because naturally I want to spend my time reading these kind of books, but if I do that I would be jobless. I need to divide my time between reading pearls like SICP and boring Kafka/Postgres/Golang/K8s/AWS documentation.

One of the problems I've seen is that when new learners and self-taught individuals ask for advice, a lot of software engineers give recommendations based on what they wish their job was or how they would like to imagine themselves.

Re: SICP: The only computer science book worth reading twice? (2010)

#119
post #44

SICP helped me understand early on that there were many models of programming, even though I'd learned a limited number in my undergraduate. It was one of the books that helped me feel equipped to read the docs of any language, library or framework and have some notion of how to orient myself.

One of the best programming classes I had in college was a comparative languages course where multiple languages were covered, each in two week or so blocks.

Re: SICP: The only computer science book worth reading twice? (2010)

#120

My favourite part of SICP and something that has stuck with me for years is the idea of "wishful programming". That is where you build something top-down by simply wishing you had the lower-level routines. Then, of course, you actually go and build those lower-level routines until you reach the bottom. I find this way of thinking works really well with test-driven development. Write a test against functionality you w…

Interestingly, Dr. Donald Knuth used pretty much that approach when writing TeX --- he started by writing out the sort of formatting/tagging which seemed appropriate, then theorizing about the sort of programming which would be appropriate for markup (hence macros), then worked on the implementation.

I've been trying a similar thing for my own effort to create a library for modeling G-code in OpenSCAD --- hopefully with the recent re-write in "pure" OpenPythonSCAD it will become something usable.

Post reply on HN