Patterns of Software: Tales from the Software Community Hardcover – 7 Nov 1996
Customers who viewed this item also viewed
Customers who bought this item also bought
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
In homes, schools, and businesses, computers play an ever-increasing role. But while most people today can work a computer - albeit with the help of the ever-present computer software manual - they know little about what goes on inside the box and virtually nothing about software design or the world of computer programming. This guide gives the reader an informative inside look at the world of software design and computer programming and the business that surrounds them. Of particular interest is the presentation of the ideas behind patterns and pattern languages as developed by the architect Christopher Alexander and their relation to software technology.
About the Author
About the Author: Richard P. Gabriel is Distinguished Computer Scientist at ParcPlace-Digitalk, Inc. and Consulting Professor of Computer Science at Stanford University.
Customers also shopped for
There was a problem filtering reviews right now. Please try again later.
Most helpful customer reviews on Amazon.com
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.
The first couple chapters are the strongest from a technical point of view. He picks apart tradeoffs that abstractions provide, and more clearly labels the ideas typically bundled up in the concept. For example, one advantage of OO abstraction is sharing implementation details between subclasses. Gabriel points out this is really more "compression" than "abstraction," and in labeling it one can analyse its usefulness and drawbacks more easily. I'm a fan of Christopher Alexander, and Gabriel's discussion of his work -- even without the software insights -- is the best I've read. He pulls from a wide variety of sources, from interviews to Alexander's book on Turkish rugs, to make excellent points about the balance between art and engineering.
The sections on his own history are sometimes shockingly personal and specific. The downfall of his company was tragic, but I think all companies have serious challenges and what makes a great company (and entrepreneur) is overcoming them. Like some other readers, I ended up skimming some of this hoping for more technical insight.
The last section dives deeper into the "Worse is Better" hypothesis. In it, Gabriel foreshadows the Lean philosophy, explaining why getting a mediocre product out is better in a variety of ways than getting the "best" product out. I am surprised I have never seen his writing referenced because it is so relevant and accurate a decade before the "pivot."
Hence it is that Christopher Alexander's influence lives cheek-by-jowl with stories about graduate school. The "best programming language" war is settled in the same book that reflects on how to write decent prose.
Gabriel writes well about the breadth of experience that can be encompassed by an engaged, intelligent, reflective mind.
I really enjoyed this book.
It is not about patterns itself, but about quility w/o name.