Talk:Pattern language

Title?
There is a stub on this same subject at Pattern Language. I'm not sure which is the correct capitalization but since this seems to be a specific term it may be treatable as a proper noun (thus it would need to be capitalized). Whatever the articles final title both entries need to be merged. --mav 06:47 24 Jun 2003 (UTC)

A pattern language is a generic thing that can be applied to any discipline. _Pattern Language_ is the title of a book by Christopher Alexander. I think they should be separate articles, but I haven't read the book. I hope someone will take that on... Wordie 18:55, 21 Oct 2004 (UTC)


 * I think a more appropriate title for such an article would be Pattern Language (book) - having articles that differ only in a minor point of capitalisation is likely to just lead to confusion. Such a page could then be added to Pattern language (disambiguation). - IMSoP 19:27, 21 Oct 2004 (UTC)


 * The book is called (carefully, I know, by the authors) A Pattern Language. Thus the page for the book would properly (and unambiguously) be called A Pattern Language (book). I have read the book, and it deserves its own page.dilgreen 13:34, 21 February 2006 (UTC)


 * Perhaps we could title the general page Pattern Languages (plural) because it is a general concept that has been applied, although somewhat differently, to a fair number of different fields. I agree that there also deserves to be a separate page labelled "A Pattern Language" or perhaps, "A Pattern Language -- Christopher Alexander, et. als." Truthtable1 21:09, 16 January 2007 (UTC)

What?
The description on this page is all very general. I'm still not sure what a PL even is -- even after looking at the links. Would something like UML be a pattern language? Is it a general term ("pattern language") that can be applied widely, or a specific term ("Pattern Language") for what Christopher Alexander was describing? (Which was what again?) Someone please make this article more clear. It's like an article about computer programming that doesn't talk about what types of programs might be possible, nor any examples of particular programming languages! - dcljr 02:30, 17 Jul 2004 (UTC)


 * I agree. Considering that Wikis were first created for the discussion of pattern languages, it seems like we should have a better entry on the subject. (I would write one myself, but I frankly have only the faintest idea of what a PL is -- in fact, I originally visited this site in order to learn more, and gained very little.)   &mdash;  Adam Conover &dagger; 04:14, Jul 17, 2004 (UTC)


 * OK - I made a couple of small refinements to the text today. I will attempt more having read these comments. I'm an architect, studied with Christopher Alexander, so have an idea of what pattern languages mean to me. However, I do think that the concept as applied to programming has different emphases, strengths and weaknesses, so I may skew the page somewhat (I've done a little programming, but am a rank amateur in terms of theory).dilgreen 13:38, 21 February 2006 (UTC)


 * I think that the concepts of a Pattern and a Pattern Language are best explained by examples rather than by definitions. Unfortunately, this means that it takes time.  At least I have not found a "quick" way to explain these to adults so that they immediately differentiate a Pattern correctly from other related but different concepts such as stories, examples, templates, scripts, concepts, principles. And, as Dilgreen rightly points out, Patterns and Pattern Languages have played out somewhat differently in different fields.  Not surprisingly, given the differences in cultures, training, goals, contexts, etc., Christopher Alexander's work has a very different (but not totally unrelated) flavor from Patterns in Software Engineering.  One problem is that many people try to equate a Pattern with a concept that they are already familiar with.  This is a mistake.  It is something like other things but also different.  Another problem is that when people first see the term "Pattern Language" they typically assume that it is a language for expressing patterns rather than a language made up of patterns. It might be worth explicitly making these points and differentiations right up front.  ?? For instance, "A Pattern is different from a Template in that a Template has specific and predetermined points of customization.  A Pattern is more flexible than that."  Does that sound useful or more confusing?Truthtable1 21:24, 16 January 2007 (UTC)


 * Here is my attempt: A Pattern refers to the named solution of a recurring problem. The concept is different from other related concepts such as templates or concepts.  A template typically implies that the points of variability are predetermined.  A Pattern is meant to be more flexible than that. In addition, a Pattern generally has a number of distinct parts which are at different levels of generality.  For example, a Pattern contains an explication of the forces at work in the problem and its solution. These forces are laid out at a high conceptual level. A Pattern is generally introduced with a very specific and evocative exemplary  image.  At the end, one tries to summarize the essence of the solution in terms of a very general schematic diagram.

A Pattern Language is an inter-related lattice of Patterns that tries to cover a field of design. Since the original work of Christopher Alexander and colleagues in architecture, Pattern Languages have been applied to fields as diverse as Object-Oriented Design, Human Computer Interaction, Change Management, Software Project Management, Socio-technical endeavors, and Pedagogy. As might be expected in such diverse fields, the Pattern Languages are not identical in terms of format, coverage or origin. Truthtable1 01:05, 19 January 2007 (UTC)


 * I believe I either started this article, or edited an early draft. A pattern language is just what it says: a language.  It has grammar, syntax and vocabulary.  Customarily (as in Alexander) it's described as a picture or design (the vocabulary part), with places the design fits (syntax) and rules that make it useful in that place (grammar).  The advantage over other forms of design is that one can design very complicated things in a piecewise way, by breaking apart a problem into smaller pieces (decomposition), and applying a proven design from the vocabulary to each piece (application or unification).  Then the design can come together (synthesis).  I know it works with software, because I use it every day.  I'm starting to see applications everywhere, which is a little spooky.  Alexander claimed in his book that he didn't invent the design system, he noticed it while looking at old-world cities designed to comprehensive building laws. I hope this helps.  I think I'll rewrite anything that looks incomplete. Ray Van De Walker 04:05, 30 January 2011 (UTC)


 * I think I've finished my rewrite for now. I worry that the intro is too long, but note the comments above, whcih complained about vagueness.  The vagueness seemed to happen on: 1. What is this thing for? (short)  2. Why is it good? (short)  3.  What is it? (longer, because I added a brief example for each part, usually not done in an intro.  But, you smart guys complained about vaguness, so these are needed, right?) Ray Van De Walker 05:24, 30 January 2011 (UTC)

Further disambiguation?
This article could probably benefit from being split into pattern language (architecture) and pattern language (software engineering). --erauch 05:05, 27 Aug 2004 (UTC)

Agree - see my note in 'What' above. I'm not up to the Wiki specifics need to do it though. Anyone interested in working with me on this one (preferably a programmer with some knowledge of pattern languages as used in that area)?dilgreen 13:40, 21 February 2006 (UTC)

I also wonder whether pattern language really stemfs from within architecture (see origin!), which is important to evaluate whether this method is really adequate for architecture!?


 * I do not think it should be split. The same logic also applies to mechanical engineering, chemical engineering, military formations, sail plans, navigation, and almost every other synthetic field I know anything about at all.  It's very abstract, but I think if you split it, you will lose the abstraction that lets it be widely applied. Ray Van De Walker 04:09, 30 January 2011 (UTC)

Attention
I've listed this article on Pages needing attention. - dcljr 04:36, 29 Aug 2004 (UTC)

10 Dec 2006: I've remarked article for restructure. It seems that none of the problems has been corrected yet. (See the other titles in talk page) most importantly, This article could probably benefit from being split into pattern language (architecture) and pattern language (software).


 * Don't split, I'd say. The idea of pattern languages (as defined by Alexander) is that it would be applicable to different domains, not just architecture and computers. Splitting an article about pattern languages in software construction would possibly be appropriate once there is enough material on that, and this material justifies such a split. Until then, there should be different sections (but not different articles) about "Pattern languages in architecture", "..in interaction design" (the more creative/psychological aspect of computer science), "..in software construction" (the more technical aspect of cs) and "..in other fields" (if any material can be found on that). --Lhead 21:02, 11 March 2007 (UTC)

Expanded, clarified
Ok, I've added a significant amount of material and tried to distinguish between the general ideas and the specific applications. I am no pattern language expert -- I hope others will run with it! wordie 12:55, 8 Sept 2004 (UTC)

Total rewrite
I tried to totally rewrite this article. Lots of important issues were missing in the previous version, and I found none of the existing explanations helpful. The rewrite is yet unfinished, so I hope there will be some more experts around .. --Lhead 04:54, 27 March 2007 (UTC)
 * Whoo, this sounds agressive :) ok, not everything was so bad in the old version, but I still believe the new rewrite is benefitial for the article. --Lhead 20:43, 30 March 2007 (UTC)

Non-constructive cleanup :(
Nah, perfect. After the last cleanup (or amputation, I should say..), there is not much left of my structural skeleton :( For those interested in working on this article, I suggest a look at my older version, . It's messed up with unfinished notes, which are bad style for a wikipedia article, but should be good starting points for further writing. -- Lhead 00:19, 11 April 2007 (UTC)

I returned some of the removed sections, this time with complete sentences :) The section I added ("application domains") is far from perfect, but it's simply necessary to have this information in the article. Feel free to improve or replace it - but don't just delete (for whatever reason). Thanks, --Lhead 17:29, 18 April 2007 (UTC)

Very Abstract Introduction
Current article begins with such high abstraction that I can't find a place to stand. I prefer the opening on this old page such as http://en.wikipedia.org/w/index.php?title=Pattern_language&oldid=117887280 —The preceding unsigned comment was added by Cgmusselman (talk • contribs) 01:48, 2 May 2007 (UTC).
 * Hm ok, feel free to change back to the old introduction :-) Or write your own, based on what you find in the history and the current version. I sometimes tend to overcomplicate things. --Lhead 09:18, 2 May 2007 (UTC)

May I suggest that "too abstract and ambiguous" is a "recurrent problem" within the "context" of "trying to explain what the heck a pattern language is"? ;) Perhaps someone should craft a pattern to address it...  In the meantime, I would disagree with the proposed definition: "a special form of textual documentation, used to document successful solutions to typical challenges in a design process."  There is nothing about patterns that suggests they must inherently be expressed in text.  Also, they often do not document exact solutions.  Frequently, they document values -- the writer's opinion about which values are more important and which ones are less.  For example, in Alexandre's book, he does not tell you how many windows to put in  your room.  But he does tell you what to consider when you are deciding (use them to direct light, and try to put space next to them where people can sit).  In the "ChocolateChipRatio" example, it doesn't tell you how many cups of chocolate chips to use.  It tells you to maximize them, and it tells you that the pattern author believes they are widely considered the tastiest part of the cookie. So a PL more correctly documents design values ("best practices", according to some author's definition of "best".)

It is also worth remembering that the goal of this article, like all wikipedia articles, is not to be an authoritative reference for PL experts; it is to provide a starting point for laypeople who want to learn.

Perhaps some self-referential examples are in order here? Wikipedia itself makes use of lots principles that could be considered patterns, when instructing people about how "design" good articles. They often contain information about when to use the principle (and when not to), as well as the reason why the principle is recommended.


 * Avoid first person pronouns
 * Provide context for the reader
 * Avoid weasel words

No, they aren't structured the exact way Alexandre suggests, but I think this form of illustration could still be helpful for people trying to wrap their heads around the idea, who are starting from having no idea what a PL is.

Wordie 00:17, 27 June 2007 (UTC)

Ok, so we have these different attempts of definition..

Dearden/Finlay:
 * "A pattern may be defined as a structured description of an invariant solution to a recurrent problem within a context. A pattern language is a collection of such patterns organised in a meaningful way." (Dearden/Finlay)

myself:
 * "A pattern language is a special form of textual documentation, used to document successful solutions to typical challenges in a design process."

wordie:
 * "A pattern language is a structured method of describing good design practices within a particular domain. It is characterized by


 * 1) Noticing and naming the common problems in a field of interest,
 * 2) Describing the key characteristics of effective solutions for meeting some stated goal,
 * 3) Helping the designer move from problem to problem in a logical way, and
 * 4) Allowing for many different paths through the design process.
 * Pattern languages are used to formalize decision-making values whose effectiveness becomes obvious with experience but that are difficult to document and pass on to novices. They are also effective tools in structuring knowledge and understanding of fundamentally complex systems without forcing oversimplification -- including organizing people or groups involved in complex undertakings, revealing how their functions inter-relate as part of the larger whole." (wordie)

For some reason I didn't like your introduction at first. Maybe I thought it must all fit in one sentence. But in the end, your version seems like the best to read and understand. Change back? Hm, wait..

One problem I see is that your definition doesn't explain what a single pattern is. And I see some conflict arising about that question: Does "pattern" mean the piece of text, or the idea / phenomenon behind? If patterns can be "discovered" as something that existed before, then it's more the idea. In the Dearden/Finlay definition, pattern means the piece of text ("a structured description"). So maybe it's both? Or it depends on who you ask.

What I didn't like about your chocolate chip ratio pattern is that it still feels too specific to me. As for my understanding of patterns, there must be something reusable about them, something beyond the cookie and chocolate situation (what about coffee and sugar?). On the other hand, I didn't want to remove it.

I would agree to recover your version of the intro, but followed by some additional explanations about what a single pattern is supposed to be, and about the use in different domains - just to give an overview. Then, these explanations can be extended in the following sections.

-- Lhead 00:55, 4 July 2007 (UTC)


 * Hello LHead, you are correct that most definitions are a single sentence, and that the style guide promotes that. However, it allows for certain exceptions, and I believe that this should be one.  The four points in my definition are paraphrased from Alexandre's book, and seem to be (from my experience with software patterns) paradigmatic.


 * I agree that a brief definition of a single pattern should be included in the article. However, it does not belong in the definition (that is, the initial paragraph).  There's a whole article on what a single pattern is, and for good reason -- it's hard to explain.  The definition in this article should define "pattern language" so that people have a clue what it's about -- not how its components work.  Incidentally, this is basically Alexandre's point about why we use pattern languages in the first place: to document "why", not "how". (In architecture, you document "how" with a blueprint.  It's the "why" information that is missing.)  So, I suggest that the definition should tell the reader what a pattern language is in terms of "why" people use them/find them useful.


 * That said, I agree that there should be a short description of what a single pattern is. It can go in its own section (which is how it was in my last edit).  In fact, in that vein, I am going to restore the "bulleted-style" definition, but minus the second paragraph (can go later in the article too).


 * As for the use of patterns in different domains, I don't think that should go in the definition either. It could warrant its own section, or indeed several of them, branching off to the various independent articles on patterns in education, software, etc etc.
 * Wordie 16:28, 26 September 2007 (UTC)

Simple statement of composition needed
I would like to see a simple statement added to the introduction that describes the composition of a Pattern Language, such as:


 * "A Pattern language is a collection of design patterns." or "A pattern language is an organized collection of design patterns within a specific domain."

I teach students how to use design patterns and build pattern languages. One of the early stumbling blocks some students reach is confusion around the difference between the two terms "pattern Language" and "design pattern". I sometimes struggle to help them gain clarity. This article would do well to help differentiate and properly relate the two terms. --Maxelrod (talk) 14:50, 28 January 2009 (UTC)

Semiotics
LHead has asked "Does "pattern" mean the piece of text, or the idea / phenomenon behind?". I suggest that we do not need to answer this question in this article. Debating matters of etiology is beyond the scope of an encyclopedic article -- perhaps it belongs in a WikiBook on the subject. Besides, if a pattern language was documented in audio recordings, or in a person-to-person retelling using sign language, it would still be a pattern language. The definition can be suitably broad that this question need not be addressed. The subject is slippery enough without getting into the-signified-vs-the-signifier. Wordie 16:28, 26 September 2007 (UTC)

Should patterns be reuseable?
LHead has raised concerns that the ChocolateChipRatio pattern is too specific and, in order to properly shed light on patterns, should be reuseable.

I agree that patterns should be reuseable -- in the domain for which they are defined. Obviously this example is trivial to the point of being fanciful: that's the point, after all, in a beginner-level explanation. However, I would argue that it correctly demonstrates reuseability by being applicable to the field of interest in question: cookies with chocolate chips in them. That could be double-chocolate chip cookies, walnut and chocolate chip cookies, peanut-butter chocolate chip cookies, gluten-free chocolate chip cookies... (see where I am going with this?). A chocolate-chips-in-cookies pattern should no more be applicable to sugar-in-coffee, than a windows-in-rooms pattern should be applicable to doors-in-garages. Wordie 16:28, 26 September 2007 (UTC)

Change to definition and opening sections
I have changed the definition to the "bulleted" form shown above, minus the explanatory paragraph tacked on to the end (not necessary). I have added material and reordered the first few sections to clarify who this "Alexandre" guy is, and to show the relationship between a single pattern and a pattern language. I am not able to work on this further -- no time, and I believe it needs significant restructuring. It is currently written at a level that is, in my view, far too in-depth. There is some "balancing of forces" that needs to happen here; on the one hand we want to be accurate, and not omit so much information that we distort the subject. On the other hand we have a reading public, many of whom know nothing about design in general -- let alone architecture, or software engineering, or methods of documenting these. I hope someone can take on the task of simplifying and streamlining it -- perhaps breaking off into other articles as needed. Wordie 16:57, 26 September 2007 (UTC)

Moved material to "Design pattern"
Redistributed info between "pattern language" and "design pattern" in a way that I hope causes both articles to make sense by themselves, while referencing each other appropriately. Also removed material that was highly speculative ("possible values"), POV ("interesting... important... happily..."), or so specific that it is really about Alexandre's book, not pattern languages as a whole (details about typefaces). I do understand that the guy's ideas are very influential; maybe that info can go in an article about him, or the ones about his books. As it is, pattern languages are hard enough to explain without any abstruse info that isn't absoluletly necessary to get the idea across. I also removed the sections on specific fields of application, since that information is already referenced clearly (and, I believe, adequately) under "Usage". I agree that the info is important, but a reader who wants it can go read the individual articles. I don't believe the info about software engineering patterns is necessary in order to understand what patterns are, therefore it deserves to be in its own article -- not this one. I hope the article is one that the lay reader can "enjoy rather than struggle with"! Wordie (talk) 23:35, 28 March 2008 (UTC)

Too long
The Pattern language should talk about some simple concepts and categories, and leave details from other application domains to specific pages on those topics.

The article should be able to be reduced by abut 50%, and merging similar paragraphs in the Origins, Usage, and Application Domains would help quite a bit.

Design Pattern (architecture)

Design Pattern (computer science)

Design Pattern (interaction design)

Wikip rhyre (talk) 04:09, 27 June 2009 (UTC)

Wiki way ward cunningham genesis missing
Sadly, for all its verbosity, the article does NOT mention c2.net, the Portland Patterns Repository, which were early Wiki software implementations.

Wikip rhyre (talk) 04:09, 27 June 2009 (UTC)

Who is Alexander?
The page has a lot of references to "Alexander" early on but I suspect the page has been edited so that Christopher Alexander and his relevance isn't mentioned until quite a long way down the page. Probably could do with mentioning him in the intro if he is going to be referenced so heavily in the page.

217.156.203.60 (talk) 10:26, 4 April 2011 (UTC)
 * Well spotted; fixed. __ Just plain Bill (talk) 14:36, 4 April 2011 (UTC)

Could also consider reducing the references to him, as they give the article an "advertising-like" feel. Often with infomercials and the like you get either the pronoun "I" or the seller's name bombarded at the audience over and over and over again. This has sort of the same quality. Blcklbl (talk) 17:36, 26 November 2011 (UTC)

Update for Recent Developments?
I think the content here is good for general audiences, but really needs updating, from what seems largely 9 year old text.

Some increasingly important details might be added, regarding the method and practice of researching, describing and applying patterns, that approach making PL a new kind of scientific method. It seems to me what makes CA's "big idea" important is that it offers a general method any profession can use, for making explicit the ancient non-verbal methods of holistic design, as a concrete practice of discovering and recording unifying responses to complex situations. Simply the effort to list all the "forces" to be dealt with forces the practice to turn attention back and forth between theory and reality in a much more informative way than most sciences use.

Another thing to bring up is the practical use of PL for documenting naturally occurring patterns and systems displaying holistic design, so the context in which intentional design patterns need to operate can be more closely studied. At PURPLSOC this year there were several papers that explored ideas for how PL could become a science. I wrote long papers on that both for that meeting and the PLoP meeting in the fall, both of which seemed well received.

How I introduce it starts with showing how familiar natural design processes and purposeful design processes really go through many of the very same stages of progression as they proceed. So one can learn a lot about purposeful designs by studying the growth stages observed in natural design examples, especially if planning for engaging living systems. I don't think I'd get to suggesting any edits till January '16, but thought I'd pose these questions, and see if there's a response. talk JessieHenshaw (talk) 21:45, 17 December 2015 (UTC)

Guiding Patterns of Naturally Occurring Design: Elements Guiding Patterns of Naturally Occurring Design: Mining Living Quality

Article is poor quality - in dire need of a rewrite and references
The introduction does a rather poor job on describing what a pattern language actually is, the language is ambiguous, and it is much too long.

I specifically tripped over these sentences (which, incidentally appear verbatim at http://groupworksdeck.org/pattern-language): "A pattern language is an attempt to express the deeper wisdom of what brings aliveness within a particular field of human endeavor, through a set of interconnected expressions arising from that wisdom. Aliveness is one placeholder term for "the quality that has no name": a sense of wholeness, spirit, or grace, that while of varying form, is precise and empirically verifiable."

I think this statement should be replaced with something shorter, in simple and clear language, and properly sourced. I don't think the term "aliveness" is helpful in this introduction, even though it might have been used in Alexander's book.

As far as I understand it, a pattern language is a specific way of representing knowledge by describing specific building blocks (the patterns) and the relationships and interconnections of these blocks.

"Some advocates of this design approach claim that ordinary people can use it to successfully solve very large, complex design problems." Who?

Bullet points in the introduction should go to a separate section. Description of syntax, grammar etc. could do with some cleanup.

95.91.236.15 (talk) 01:02, 25 December 2015 (UTC)