Scheme it's far easier to grasp. With SICP you basically rewrite a Scheme within a Scheme. And you teach Calculus to the interpreter to solve further problems.
Yep, and there's a Texinfo version too. With Chicken, 'sudo chicken-install srfi-203 ; sudo chicken-install srfi-216; Emacs, Geiser and this ~/.csirc, you can run SICP exercises
on really constrained environments.
I fondly remember doing a course in my CS degree that was basically working through SICP as a class, taught my an ancient but very fun and enthusiastic tenured professor. When he retired I think the curriculum was updated to JavaScript (??) or as the new professor called it "scheme in drag". I'm glad to have taken the original course..
To do that with Scheme/SICP, you actually have to understand the CS principles behind it. Not as much with Python, which is likely why it became a more popular choice.
I remember when universities wouldn't teach languages higher level than C/++ because "the languages changed too quickly and the 4 year degree would be obsolete by the time the students graduate". Instead, they focused purely on the low level engineering aspects of the software meeting the hardware, with only advanced classes focusing on things like AI research (pre-LLM days) or modelling fluid dynamics on specialized hardware.
Of course, this is also why most companies worth working at didn't care if you had a CS college degree or not to build a wordpress website or a SOAP/REST API. Aside from some very basic lessons learned from experience (generally understanding computational complexity and maths) most software jobs didn't need any knowledge of assembly at all, or how to write an interpreter or a garbage collector.
I spent years knowing nothing but C and I’d say it handicapped me in many ways. (I recall insisting that it would be impossible to do anything without assignment.)
After getting my eyes opened a little bit, I read SICP and it was mind blowing. I read a little Haskell, wrote a little Clojure and a lot of Scala. And even though the day job now is Java and Python, I’m much better off for having bothered to learn it.
That's what I'm trying to say. SICP teaches you to think differently and "grok" the CS concepts. This isn't always the case with other approaches, which can be much more reliant on blind copy-and-paste and library functionality.
Online SICP: http://sarabander.github.io/sicp/