AntonRich

AntonRich

Started reading SICP on a whim

I don’t know what happened today. But I just started reading SICP which I meant to do for a long time.

The book itself:

I’m not even sure whether I’ll finish the book. Yet, I see that it is written in an interesting way. Which at least makes a good past time reading : )

Is there anybody who finished it?

P.S. I’m doing it with Racket and the package called sicp.
It’s nice that Racket has a repl.

Most Liked

gfqdjb

gfqdjb

For those who might not know, there’s a full course taught by the authors of SICP (Harold Abelson and Gerald Jay Sussman) that you can use to complement the book:

There’s also a JavaScript adaptation of SICP, published by MIT Press in 2022. You can read it for free here:

Just a heads-up: some people criticize the JavaScript version for using questionable coding practices, like overusing the ternary operator instead of standard if...else blocks. So the examples might not always reflect what you’d call “good code”.

If you’re looking for other solid introductions to computer science and programming, these books are often highly recommended:

Some folks even argue that DCIC is the best foundational CS book out there. I haven’t read any of them myself, so I can’t say for sure, but they’re worth looking into.

SebAlbert

SebAlbert

I read a print copy of SICP (2e) during Covid, up to the last section in chapter 4, where they would start implementing something like Prolog if I remember correctly. One day I’ll want to finish the book.

SICP was a great shift in gears on my journey to becoming polyglot, a great introduction to “lispy” thinking. I read it after diving deep into Python, but it still improved my understanding and appreciation of Python as a dynamic and well-designed language (if you focus on the parts that functional programmers like). And it laid the foundation for my learning of Clojure, which I highly appreciate.

For what it’s worth, I don’t see how the JavaScript version should use more if/else than ternary. The whole point in SICP and Scheme (and the lispy languages) is that most things should be expressions, not statements.

On the side note of HtDP, I tried the beginnings a couple of times, but can’t find patience for the dogmatic style of writing stuff down upfront before coding. Writing code is too intermingled with my thought process. (not vibe-coding, and not committing or opening a PR too quickly, but just seeing my thoughts in code on the screen and then moving them around)

gfqdjb

gfqdjb

I think shifting between Pyret and Python was also a good move.

Just to expand on what I said earlier, SICP was the textbook for MIT’s former introductory programming course, 6.001. That course was taught at MIT for over 20 years until it was replaced in 2008. Since then, the introductory programming courses have been taught in Python.

Here’s what Gerald Jay Sussman, one of the authors of SICP and a former 6.001 instructor, said about the book/course being replaced and the switch from Scheme to Python:

Costanza asked Sussman why MIT had switched away from Scheme for their introductory programming course, 6.001. This was a gem. He said that the reason that happened was because engineering in 1980 was not what it was in the mid-90s or in 2000. In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. Code ran close to the metal, even Scheme — it was understandable all the way down. Like a resistor, where you could read the bands and know the power rating and the tolerance and the resistance and V=IR and that’s all there was to know. 6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want.

But programming now isn’t so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don’t know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course.

So the good thing about the new 6.001 was that it was robot-centered — you had to program a little robot to move around. And robots are not like resistors, behaving according to ideal functions. Wheels slip, the environment changes, etc — you have to build in robustness to the system, in a different way than the one SICP discusses.

And why Python, then? Well, said Sussman, it probably just had a library already implemented for the robotics interface, that was all.

Source: international lisp conference -- day two — wingolog

If you want to follow MIT’s current introductory programming path, these are the courses available on MIT OpenCourseWare:

There is also a full-semester version of 6.0001 with the same content but a slower pace:

All of these courses use the same textbook:

So there you have it, another solid book to add to your reading list.

Where Next?

Popular General Dev topics Top

justinjunodev
Figured this would be a cool topic and maybe provide some inspiration for those who are just starting to work from home. Feel free to sha...
New
AstonJ
I just watched this: (tldr: remove bad choices so you don’t need to use willpower) It got me thinking about ways to incre...
New
jaywengrow
Hello! It’s Jay Wengrow, author of A Common-Sense Guide to Data Structures and Algorithms. My book now has a supplemental website, where ...
New
AstonJ
Thought it might be worth having a dedicated thread for standing desk treadmills (for those interested, here’s our general thread on stan...
New
OvermindDL1
What shell(s) do you use, why do you use them, and how do you have them configured? Note, this is about shell’s, not terminals, terminal...
New
dwaynebradley
For those that are interested, Snyk (developer security tool) announced support for Elixir earlier this week: Just thought I’d pass it...
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 28379 760
New
chaptuck
I am thinking about getting a fitness tracker of some kind (probably one from Garmin). Have any of you developed your own widgets, watchf...
New
AstonJ
Do we have any digital nomads here? Anyone fancy it? If so, which countries would you consider? I’ve been toying with the idea for a wh...
New
Margaret
Hello DevTalk Community! Once again, The Pragmatic Programmers are looking for developers who’d like to help shape the future of our boo...
New

Other popular topics Top

siddhant3030
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor? Also, I want to know if someone is using it for program...
New
dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
New
AstonJ
I have seen the keycaps I want - they are due for a group-buy this week but won’t be delivered until October next year!!! :rofl: The Ser...
New
AstonJ
If you are experiencing Rails console using 100% CPU on your dev machine, then updating your development and test gems might fix the issu...
New
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
Maartz
Hi folks, I don’t know if I saw this here but, here’s a new programming language, called Roc Reminds me a bit of Elm and thus Haskell. ...
New
PragmaticBookshelf
Build efficient applications that exploit the unique benefits of a pure functional language, learning from an engineer who uses Haskell t...
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
sir.laksmana_wenk
I’m able to do the “artistic” part of game-development; character designing/modeling, music, environment modeling, etc. However, I don’t...
New