From left to right: Ralph Johnson, Richard Helm, Erich Gamma, and John Vlissides. (Photography courtesy of Addison-Wesley.)
Annually, Dr. Dobb's Journal honors individuals who have made significant contributions to the advancement of software development.
Rather than an individual, the recipient of this year's Excellence in Programming Award is a team of researchers widely known as the "Gang of Four" Erich Gamma, Richard Helm, John Vlissides, and Ralph Johnson. Although they did not invent design patterns or even write the first book on the subject, the GoF's Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1995) can be credited with bringing patterns into the mainstream of software development. In addition to enjoying widespread use within the software-development community, patterns have become standard fare in leading object-oriented design methodologies, notations, and environments. Commercial class libraries provide reusable design patterns. And research efforts are underway to build tools that generate source code from design patterns and even introduce built-in support for design patterns into programming languages.
Interestingly, the concept of design patterns, which express relationships between contexts, recurring problems, and proven solutions, have been around for years in other disciplines, most notably architecture and urban planning. Much of the work with software-design patterns, in fact, has its roots in Christopher Alexander's book A Pattern Language: Towns, Buildings, Construction (Oxford University Press, 1977).
Patterns began moving into the realm of software development in the late 1980s, when Ward Cunningham and Kent Beck applied Alexander's ideas to a small pattern language for Smalltalk programmers. This project was presented at OOPSLA '87 in a paper entitled "Using Pattern Languages for Object-Oriented Programs." Intrigued with the idea of patterns, others (James Coplien, Desmond DeSouza, Doug Lea, Richard Gabriel, and Grady Booch among them) continued collecting and sharing idioms and patterns.
Still, it was at Bruce Anderson's OOPSLA '90 Birds-of-a-Feather session "Towards an Architecture Handbook" where Richard Helm and Erich Gamma met and discovered a common vision about reusable object-oriented software. Gamma and Helm came together again at ECOOP '91, where they began putting together a catalog of patterns. The need for a definitive collection of good software design patterns quickly became apparent, and Gamma and Helm, along with John Vlissides and Ralph Johnson, published Design Patterns in 1995, which has been described as a book of design patterns that describes simple and elegant solutions to specific problems in object-oriented software design.
Coinciding with the rush to the object paradigm, Design Patterns quickly became a classic, selling more than 100,000 copies since publication. Although numerous books on software-design patterns have been published since, none have matched the stature or acceptance of the GoF's Design Patterns.
Erich Gamma started to discover design patterns while working and reflecting on the ET++ (a portable C++ class library and application framework for developing interactive graphical applications) while at the University of Zürich. This eventually grew into his Ph.D. thesis, which described a first set of patterns. After university, Gamma moved on to the research lab of Union Bank of Switzerland, where he applied objects and frameworks in the finance domain. From 1993 to 1995, Gamma worked at Taligent on an advanced incremental C++ development environment. Erich is currently technical director at Object Technology International's Software Technology Center in Zürich, Switzerland.
Richard Helm is a member of IBM Consulting Group, IBM Global Services, in Sydney, Australia. Before that, he was a technology consultant with the DMR Group, a technology consulting firm headquartered in Montreal, Canada. Helm, who holds a Ph.D. in computer science from the University of Melbourne, was also a member of the software technology department at IBM T.J. Watson Research. In 1995-96, Helm and Gamma coauthored the popular "Patterns and Software Design" column for Dr. Dobb's Sourcebook.
Although he grew up in the Congo (where his parents were missionaries), Ralph Johnson graduated from Knox College in Illinois, and received a Ph.D. in computer science from Cornell University. Johnson has been at the University of Illinois for 12 years, where he is a faculty member in the Department of Computer Science and Coordinator of Project Design Activities. He has been involved in the development of an object-oriented operating system (Choices), compiler (Typed Smalltalk), graphics editor framework (HotDraw), and a music synthesis system (Kyma). Johnson was program chair of OOPSLA '93 and conference chair of the first conference on Pattern Languages of Programming (PLoP) in 1994.
John Vlissides is currently a researcher at IBM's T.J. Watson Research Center in New York, where his research interests are in object-oriented design tools and techniques, application frameworks and builders, object-oriented visualization, and tools for user-interface development. Before joining IBM, Vlissides was post-doctoral scholar in the Computer Systems Laboratory at Stanford University where he codeveloped InterViews, a widely used set of libraries and tools for developing graphical applications. His doctoral work was on Unidraw, one of the earliest frameworks for building graphical editors. He also developed numerous InterViews- and Unidraw-based applications, including the idraw drawing editor and the ibuild user-interface builder. He has served as a consultant to several companies both before and after joining IBM. In addition to Design Patterns, Vlissides is coauthor of Object-Oriented Applications Frameworks and Pattern Languages of Program Design 2. He is also consulting editor of Addison-Wesley's Software Patterns Series. Vlissides also writes the "Pattern Hatching" column for The C++ Report. Vlissides has a Ph.D. in electrical engineering from Stanford University.
The Gang of Four's contribution to software development will be acknowledged at the Software Development '98 Conference in San Francisco and Dr. Dobb's Journal will make available financial grants to university programs of their choice.
Please join us in honoring Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. As with previous recipients of this award, they continue to remind us that a mix of technology, innovation, vision, and cooperative spirit continue to be fundamental software-development principles.
Past recipients of Dr. Dobb's Excellence in Programming Award include:
- Alexander Stepanov, developer of the C++ Standard Template Library.
- Linus Torvalds, the force behind the Linux operating system.
- Larry Wall, author of the Perl language.
- James Gosling, chief architect of Java.
- Ronald Rivest, educator, author, and computer security expert.
- Gary Kildall, a computer pioneer in the areas of operating systems, programming languages, and user interfaces.