Bookshelf Classic: Design Patterns
This is an odd book. It is a classic, yet among the least useful books in my library. The authors Gamma, Helm, Johnson, and Vlissides, affectionately referred to as the "Gang Of Four," wrestled with Object-Oriented Programming (OOP) to produce a catalog of solutions. Inspired by the pattern languages used in architecture -- notably by architect, design theorist, and professor, Christopher Alexander -- they worked to imbue software development with the same formality, benefits, and gravitas of the age-old discipline.
To some degree, the "Gang Of Four" succeeded. They explored and reinforced a working vocabulary regarding software design such as Model View Controller, Singleton, and Factory. Unfortunately, they also promoted jargony and academic terms such as adapter which is better known as wrapper, observer for publisher/subscriber, and compositor and composition for formatting classes.
OOP, while still popular, is waning, yielding to both new styles such as functional or lambda programming, and to old styles such as procedural programming. I ran across a YouTube video by Brian Will, coder and instructor, arguing why OOP is bad. Philosophically, I don't go as far he does, but he makes compelling reasons why one should favor procedural over OOP. When I recall, more than once, the difficulty I faced when making a change to an OOP program without violating its encapsulation and overall design, I'm inclined to think he has a point.
Similarly, Linus Torvalds of Linux and Git fame, ranted (humorously) on why C++ is a horrible language when someone mentioned Git would have been better written in C++ rather than C.
And so goes the usefulness of this book. The concerted effort of the "Gang Of Four" to lead a conversation in design, to make sense of object-oriented programming when it was relatively new, undeniably makes this book a classic. The book stumbles when it gets formal; the programmers I work with just don't talk this way.
To some degree, the "Gang Of Four" succeeded. They explored and reinforced a working vocabulary regarding software design such as Model View Controller, Singleton, and Factory. Unfortunately, they also promoted jargony and academic terms such as adapter which is better known as wrapper, observer for publisher/subscriber, and compositor and composition for formatting classes.
OOP, while still popular, is waning, yielding to both new styles such as functional or lambda programming, and to old styles such as procedural programming. I ran across a YouTube video by Brian Will, coder and instructor, arguing why OOP is bad. Philosophically, I don't go as far he does, but he makes compelling reasons why one should favor procedural over OOP. When I recall, more than once, the difficulty I faced when making a change to an OOP program without violating its encapsulation and overall design, I'm inclined to think he has a point.
Similarly, Linus Torvalds of Linux and Git fame, ranted (humorously) on why C++ is a horrible language when someone mentioned Git would have been better written in C++ rather than C.
And so goes the usefulness of this book. The concerted effort of the "Gang Of Four" to lead a conversation in design, to make sense of object-oriented programming when it was relatively new, undeniably makes this book a classic. The book stumbles when it gets formal; the programmers I work with just don't talk this way.
Comments