4 ms·
I read SICP for the first time in February this year, 15 years into my programming career and 12 years after graduating from a CS department. It's a very easy a
by smikhanov 10y ago
I read SICP for the first time in February this year, 15 years into my programming career and 12 years after graduating from a CS department. It's a very easy and enjoyable read, even the code blocks are readable, unlike coding examples in most (all?) modern programming books. I literally loved every page of it.
There's just something special in the way material is presented in SICP, in the order of topics, in the text's tone: it remains enthralling without being difficult, it teaches without being indulgent. It absolutely is meant to be read.
- sotojuan 10y agoThe tone of the book is that of learning programming and computer science for enjoyment, learning, and fun. That's what makes it timeless. A "stronger" example of this tone would be The Little Schemer series.
- catnaroek 10y agoSadly, SICP is lacking in mathematical rigor. Often, the book rushes to give broken code snippets based on insufficiently deep analysis of the problem at hand (e.g., interval arithmetic in chapter 2), and the exercises consist in fixing the code after taking additional information into consideration. It would be preferable to first carefully write a formal specification, and then write the right program without so much trial and error.
- sotojuan 10y agoTo be fair, it was written to be a student's first introduction to computer science. I think it's fine if you don't have to prove everything. Ironically, Chapter 1's reliance on math for examples and exercises turns people off!
- catnaroek 10y agoThis is getting it backwards. The first introduction to CS is precisely when proofs matter most. I agree that, ultimately, not everything has to be proven correct. Often there isn't even a well defined criterion for software correctness. But proofs absolutely matter in certain domains (algorithms, databases, compilers, etc.), and there's no way you can be ready to prove things about moderately tricky programs if you don't have practice proving things about toy ones.