3 ms·
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 solv
by crystal_revenge 2y ago
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.
- WillAdams 2y agoA more humble book, with a more grounded approach might be: _A Philosophy of Software Design_ by John Ousterhout (the guy behind Tcl) https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design https://www.goodreads.com/book/show/39996759-a-philosophy-of... Written as the textbook for a software engineering course, it developed out of that course being taught multiple times _and_ all the code reviews which that entailed. Previous discussions/mentions here which had a notable number of comments: https://news.ycombinator.com/item?id=41017367 https://news.ycombinator.com/item?id=41017367 https://news.ycombinator.com/item?id=34733120 https://news.ycombinator.com/item?id=34733120 https://news.ycombinator.com/item?id=17779953 https://news.ycombinator.com/item?id=17779953 https://news.ycombinator.com/item?id=8055868 https://news.ycombinator.com/item?id=8055868 I re-wrote my current project in the course of reading it (I would read a chapter, then read through the code and where appropriate apply the relevant principle) and once I finish the current re-write (from OpenSCAD to Python) will be repeating that process to see if what I was supposed to have learned stuck/survived the re-write.