UML软件工程组织

什么是模式的语言(Pattern Language)?
(Java Research)原创

 模式的语言(Pattern Language)到底是什么意思,在模式学界颇有一些误解。为了说明这个概念,我引用四人帮成员之一,Ralph Johnson 在一次小范围交流中的解释,相信大家读过以后会有更为明确的理解:

The term was invented by Christopher Alexander, and most people are trying to use his definition. If you haven't read "The Timeless Way of Building" by Christopher Alexander then you should FIRST do that. There is no substitute. It is his term, we should use the same meaning that he does. I think that the variety of meanings you see are either because people do not understand his ideas or just because his ideas are subtle and different aspects of them come out at different times.

中文翻译:
这个词是Christopher Alexander发明的,大多数的人们使用的都是他的定义。如果你还没有读过Christopher Alexander写的《建筑的永恒之道》,那么你应当首先阅读这本书。没有可以替代的东西。 这是他的词汇,我们应当使用他所给出的含义。我相信你所看到的大部分不同的解释,要么就是因为人们没有理解好他的思想, 要么就是因为他的思想很微妙,在不同的时刻人们看到的是这些思想的不同侧面。

There are two different meanings to the term "pattern language", either a set of patterns that a designer uses (patterns in the head) or a document that describes those patterns (patterns on paper). Paper never perfectly captures what is in our head. Two people can use the same set of papers, but will not have the exact same thing in their heads. Nevertheless, we'll say that two people use the same pattern language if what is in their heads is roughly the same, even if it has never been written down.

中文翻译:
“模式的语言”这个词有两个不同的含义,一个含义就是一个设计者所使用的一系列模式(也就是在头脑中存在的模式), 另一个含义就是描述这些模式的文件(在纸上存在的模式)。文章从来就不能完美地捕捉住我们头脑中的东西。 两个人看到的是同样一些文章,但是他们反映到头脑中的东西却不相同。尽管如此, 我们说两个人因为使用的是同样的模式的的语言,如果他们头脑中的东西是大致一样的,尽管这个语言从来没有被写下来过。

Note that Christopher Alexander is an architect, not a programmer. His definition of a language is not formal. It is not the same thing as a computer language. If a computer scientist had been coming up with terms, he probably would have chosen something different. But it actually makes a lot of sense if you forget the technical sense that we give to the word "language"

中文翻译:
请注意Christopher Alexander 是一个建筑设计师,不是一个程序员。他的语言的定义不是形式语言的。 这个语言和计算机语言不是同一个东西。如果当初是一个计算机科学家给出这些词汇的话, 那么就会使用一个不同的词。当时,如果你忘记“语言”这个词的技术含义的话,那么这个词还是很有意义的。


版权所有:UML软件工程组织