Are there any patterns in GoF?

I am currently participating in the Design Patterns exam (which will be held tomorrow ...). In one of the "test exams" I found the following question:

Jim Koplien said during a guest lecture that there is not even one design template in a GoF book. What is your opinion on this?

Because I was not in this particular lecture (this was the last semester;) I have no idea what he could mean. And I have no evidence that Jim Koplien said this, but I think it does not matter.

What do you think he meant with this statement?

(I'm not sure if the question is suitable for this forum, however, I wanted to ask.)

+8
design-patterns
source share
2 answers

Templates: the concept is placed in the work of Alexander

The GoF claims to inspire Christopher Alexander (as stated in the first question of the book), who popularized the term in a wider field of design. Alexander template: always an element of the template language; contributes to a deep human feeling; and is always geometric in nature. At least some of the GoF patterns do not work in at least one of these points, and some of them fail on all three. Although "pattern" is a neutral English word, the cultural and historical roots of GoF's work, combined with their call for Alexandrian inspiration, leave him the subject of judgment by the basic criteria of his ancestor, and this is not enough. Despite the fact that they know and express that they know that they disagree with Alexander, they still prefer to use the term that he created, researched and popularized, and I consider them responsible for this. (However, they were all valuable acquaintances, I was close to John Vlissides, whom we lost a few years ago, and we had an excellent dialogue with Richard Helm and Eric Gamma on the deeper issues behind this. My discussions with Ralph were less interesting as they stop at the engineering level.)

Historical roots

Words mean things. The Alexandrian sense of the term “pattern” was not well understood by GoF (or the software community as a whole) when they wrote the book, but they were based on a vulgar perception of time, which was based on three sources: 1. Erich Gamma PhD thesis; 2. The framework work of Ralph Johnson and 3. The book of C ++ idioms (you can find this in the GoF book for your own explanation of your sources in section 6.3). (Oh, Knut was also an influence.) I continued to challenge the authors, but people liked it and they liked that people liked it, so the momentum continued.

A few years later (December 2, 2004), one of the GoF will write to me to describe his “aha”, finally understand what Alexander was trying to convey. This was quite a bit than what underlies the GoF book:

Finally, "generative patterns" and phased growth came out through a long winding route .... Largely due to some interesting universal software properties (scale-out and small worldness)

A bit slow, I sometimes ... but got there at the end ...

GoF templates address the issue of random rather than significant complexity

The fact that people consider them useful, since they, unfortunately, are indictments of modern programming languages. Languages ​​do not have proper constructions to express broken symmetry, which Alexander believes is a characteristic of patterns and which are inherent in complex design (Nature of Order, p. 187: "... in general, greater symmetry is a simplified type of neoclassicism rarely contributes to the life of a thing, because in any complex whole in the world, almost always, complex, asymmetric forces arise at work — location issues, context and function — that require symmetry breaking, "op cit., pp. 63-4:" Nature also creates beautiful structures that are managed To Re-use of transformations preserving the structure. In this regard, I find it useful to note that what I call the transformation conservation structures are very closely related to what has become known as "symmetry breaking" in physics. "). Java is especially bad about this, but is also its ancestor of Smalltalk. C ++ has rich capabilities for describing local symmetry breaking, but most people really don't know how to use them. Richard Gabriel, who also worked closely with Alexander, and who, in his opinion, has languages ​​such as CLOS and Scheme, says that he simply does not understand GoF patterns because the language is correctly designed (for example, CLOS or Scheme) they do not need, I'm basically in the same camp.

Constructive movement

There is a lot of design theory that goes back to the design movement (Thackara ("Design after Modernism", 1989), Nauru, Alexander, Cross ("Developing a Design Methodology", 1984) and other authors in the 1980s). I was always amazed how little programmers know about this body of literature, and how poorly thought-out thinking of CS is connected with the obvious conclusions of the Design Movement at this time. Those of us who founded the template discipline (original of Hillside 7) back in 1993, were familiar with the main topics of this literature. A lot of literature was formed at the PLoP conferences, which radically separated from these foundations, being more focused on secret knowledge than the "quality without a name" that Alexander sought.

The origins of idioms

The reason I introduced idioms for C ++ programmers was to allow them to do object-oriented programming when the language was in their way. We now have more powerful approaches, such as DCI, that significantly reduce the need for idioms. Templates are still applied at the domain level, which is in line with Alexander’s vision. Several good template languages ​​have been written; e.g. Hanmer (Patterns for Fault-Tolerant Software, 2007); Eloranta et al. (Design of Distributed Management Systems, 2014) and Organizational Patterns that, according to Alexander, met the necessary criteria (Coplien and Harrison, 2004).

The battle is lost, but the work continues

Alexander and I (and Richard Gabriel — read his “Software Samples” —and others) share the disappointment of this early redirection of a term that was well established in design before being redefined by GoF. Yes, because they call them Design Patterns, they represent design patterns — in the context of any discussion about the Design Patterns book of the Gang of Four. In a broader outline of the theory of design and architecture, they are not: they are only idioms. Even the authors themselves say they started.

There are several attempts to restore Alexander’s vision to the software community. The ScrumPLoP® community ( http://scrumplop.org ) takes all the Alexandrian basics of templates very seriously. An old Alexandrian colleague, Greg Bryant, who was involved in IT materials for CES, contacted me and told me about his work in order to return Alexander to the software, and we are going to trade notes. I'm sure Dick Gabriel always has something in mind, although he and I haven't chatted for a while. In the meantime, I continue to work directly with a colleague of Alexander Hiroshi Nakano, who connects Alexander's ideas (which he directly expressed in terms of Tao Jing in the Infinite) directly in his parallels in Japanese culture. This is much better than trying to curb it in Western culture. This probably explains some of the frustrations in being able to understand my statement - although this is not an excuse for a professional working in the knowledge business.

Exorcism for Grumblers

Of course, all this justification is a matter of published dialectics and research, and is available to anyone who wants to spend time researching it. This is not a random question that can be quickly fired, as he was here. It took me 20 years - and I had direct access to the sources. I can appreciate that the average programmer is hard to master these things, but I would suggest doing a little more research before firing a well-researched position from hand to hand before doing one homework. This is a StackOverflow thing.

+34
source share

By GoF's own definition, it contains design patterns. Thus, by deduction, Coplien has a different design pattern definition, or Coplien misunderstands or misunderstands the GoF definition, or he claims that the GoF definition does not match the GoF patterns.

The question invites you to describe the differences between the two definitions and give your opinion on which definition you prefer. Probably your CONFIDENTIAL opinion, as in academic circles, your reasons for your opinion (methodology) are much more important than the opinions themselves.

+3
source share

All Articles