Background: SICP was the textbook for my undergrad intro to CS class, though I was already a self-taught programmer at the time.
SICP provided a different way of understanding programming. I enjoyed the class, did well, and became a big fan of Scheme for quite some time.
But the text was written for a different era, one dominated by C, PASCAL, and COBOL and when parallel programming was rare. In a time where almost all programming required working with low-level, basic programming constructs designed around the CPU's architecture, using Scheme to teach future non-academics was a great way to open their eyes to different ways of thinking about programming.
But it's close to the 40th anniversary of the first edition and past the 25th anniversary of the second. A four core CPU is low(er) end. Phones have 4+ cores. Even watches have dual-core CPUs. Ruby, Java, JavaScript, Python, Go, Rust, and a zillion frameworks are all available and widely used.
It wasn't possible to get performant Scheme on the hardware of the time. Now that we have the hardware, other languages have taken what Scheme could do and done it better.
Are the concepts useful? Certainly. But if your goal is to be a better programmer now, I'd pick a different book. If you're a Python programmer, pick a (modern, recent) Python book. If you're a JavaScript dev, then a (modern, recent) JS book.
If SICP was teaching woodworking, it would be the no power tools, start with a standing tree method. It's fascinating, it's neat, there are cool concepts to learn. But it's of little relevance, day-to-day, in a world filled with tools that let you focus on the goal instead of a million tiny details.
> focus on the goal instead of a million tiny details.
This attitude is why my 16 core machine with 100Gb of ram feels about as fast as my Windows 95 machine felt 25 years ago. It's why software seems to scale with the computers that run it.
GP: Read SICP. even if you don't end up writing any Scheme, you'll be a better programmer for it.
Starting with hand planes, dovetail/carcass saws, and chisels... and then moving to a table/bandsaw, jointer, planer etc. IS the best way to learn woodworking. Diving into riving wood, green joinery, etc. brings you to the next level.
Power tools are accelerators, not fundamental tools. Your analogy of woodworking is excellent, but I believe you draw the wrong conclusion from it.
aside from the fact SICP now has a javascript edition, if you pick a book that focuses on whatever random modern javascript/python programming language you're not really studying anything like the material in SICP.
SICP is more like studying the actual composition of wood itself than it is about tools. this is still important whether youre using new or old tools.
Not only that. Now precisely because multicore is the only path to follow when we reach the end of the Moore’s law, we need more than ever functional programming. Is no coincidence that there are so much new languages that are trying to use those concepts, including a big revival of Lisp.
Functional programming doesn’t help with multicore. The real problem with multicore programming is data dependency, of which mutability is merely a special case. functional programming doesn’t help prevent you from depending on a certain computation and forming the bottleneck of your program.
Many ideas that come from lisp, and for which lisp was long ridiculed, are now mainstream, like garbage collection, closures, a big runtime, a huge library (nowadays lisp is criticised for its small library), typed data (instead of typed storage), exploratory development in an interpreter coupled with an optional compiler...
I don't consider languages with these features lisps, but I think the GP's statement is only quite mildly hyperbolic.
That's not a revival of lisp itself, just it's ideas becoming pulled into more mainstream languages. I wouldn't call Python having a REPL to be a lisp revival, but you can disagree.
SICP provided a different way of understanding programming. I enjoyed the class, did well, and became a big fan of Scheme for quite some time.
But the text was written for a different era, one dominated by C, PASCAL, and COBOL and when parallel programming was rare. In a time where almost all programming required working with low-level, basic programming constructs designed around the CPU's architecture, using Scheme to teach future non-academics was a great way to open their eyes to different ways of thinking about programming.
But it's close to the 40th anniversary of the first edition and past the 25th anniversary of the second. A four core CPU is low(er) end. Phones have 4+ cores. Even watches have dual-core CPUs. Ruby, Java, JavaScript, Python, Go, Rust, and a zillion frameworks are all available and widely used.
It wasn't possible to get performant Scheme on the hardware of the time. Now that we have the hardware, other languages have taken what Scheme could do and done it better.
Are the concepts useful? Certainly. But if your goal is to be a better programmer now, I'd pick a different book. If you're a Python programmer, pick a (modern, recent) Python book. If you're a JavaScript dev, then a (modern, recent) JS book.
If SICP was teaching woodworking, it would be the no power tools, start with a standing tree method. It's fascinating, it's neat, there are cool concepts to learn. But it's of little relevance, day-to-day, in a world filled with tools that let you focus on the goal instead of a million tiny details.