A Philosophy of Software Design

Walter Bright newshound2 at digitalmars.com
Sun May 24 01:39:48 UTC 2026


by John Ousterhout

https://www.amazon.com/Philosophy-Software-Design-2nd/dp/173210221X

I did not know it, but I've been looking for this book for a long time. I'm 
about halfway through it.

It's about managing software complexity. Complexity is the bane of all 
significant software. Over the years I have battled it, and have circled into 
many of the techniques described in the book. Those who have seen my talks know 
that a recurring focus is how to use D to manage software complexity.

This book is an easy read, and only $10. It's worth far more.

For example, the title of Chapter 10 is "Define Errors out of Existence". I've 
been trying to do that since the 1980s.

Back in the 80's, a C compiler was required to support strings of at least NNN 
characters in length. So most C compilers would put a check in for that, and 
issue an error message on overflow, and then recover from the error.

My compiler took a different approach. It would just keep enlarging the string 
buffer until it ran out of memory. Then there was only one error message - "out 
of memory" - and the compiler would abort. This applied to all sorts of 
arbitrary limits the C spec placed on things. There was no need to add error 
recovery code.

But still, the D compiler is overly complex, and so is Phobos. We've still got a 
lot to learn.

I've not vibe coded enough to see it for myself, but I've been told that AI 
generated code simply generates code until it works. It doesn't do very well at 
managing complexity. Something to watch out for.


More information about the Digitalmars-d mailing list