Patterns of Software: Tales from the Software Community
Richard P. Gabriel
Gabriel has collected a number of his "Journal of Object Oriented Programming" columns into a thoughtful and readable anthology. The columns have been grouped into a few post-facto categories, decided long after the essays were first written. As may be expected, some of the individual columns do more for me than others. The section on his glorious rise and glorious falls into the `others' category, but I didn't read this to improve my understanding of Gabriel himself.
The better parts of this book reflect on software reuse, conceptual compression, subclassing, and abstraction. Nearly ten years old at this writing, the book reflects wisdom sorely won during the era of extravagant subclassing, before a better balance with aggregation was achieved. He also describes, at length, the evils of bad abstractions - the kinds that don't include all they should, and do include much of what they shouldn't. Unfortunately, his sourness on subclassing and abstraction prevents him from detailing their proper uses. "Abstraction is about ignorance," he quotes, but doesn't distinguish helpful from un-helpful forms of knowledge and un-knowledge, at least not in ways I can use.
The most useful of these essays emphasizes the value of writing - I mean prose, intended for human consumption. Perhaps Gabriel is a bit strident in stating the importance of person to person expression, but perhaps neglect of the topic warrants an exaggerated response.
This book includes a special treat, a six-page foreword by Christopher Alexander - the architect who introduced the concept of a Design Pattern. If you don't already know, he's a real building-type architect, not just a lead engineer of some kind. It's amusing, but I think rewarding, that he seems to feel better understood by builders in the thought-stuff of programs than by many in the physical world of concrete, steel, and glass. I enjoyed that section even more after reading a few of Gabriel's notes on Alexander's successes and surprising failures.
This is a philosophical book, intended for experienced software developers - nearly all of whom have been language designers, at least in small, at one time or another. The technical density tends towards the low, though, and it's really not for beginners.
//wiredweird
Ссылка удалена правообладателем
----
The book removed at the request of the copyright holder.