探寻软g的永恒之?BR>――评介《徏{的永恒之道?BR> 撰文/透明
从模式说?BR> “模式”这个词q入中国软g开发者的视野Q是从《设计模式》[2]一书开始的?000q?月,中国的Y件开发图书市q不如今天繁荣,怿q本书给l大多数人的都是一U耳目一新的感觉。突然之间看到如此之多精致优雅的解决ҎQ以o长期苦苦探烦设计之\的开发者们“O卯书喜Ʋ狂”了?BR> 在那个时候,我也是模式的痴迷者之一。还记得2001q_我和朋友的通信中多ơ表现出q样的痴q下面是?001q?0月给朋友Windy的一信Q?BR> 对“面向模式的设计”的开悟,在十三陵?BR> 站在镉K的绫恩殿Q宏大的建筑Q给我一U鹈鹕灌的感悟。那天John Vlissides_Christopher Alexander曄说中国的建筑l了他很多灵感。今天,我想我抓C一点大师的感触?BR> J复的构造,_y的设计,却能天衣无缝的组成如此完的建筑。无疑这是设计的成功。仔l观察之下,发现对于各种各样的徏{,其组成元件――棂椽梁柱――却都是毫无二致。这是多么高的复用程度!q体C多么成熟的设计体p!
…?BR> 在公路边Q一些徏{工人在建造一l仿古的房屋。朝代更替,光阴逝,但工Z仍然能够完美的仿造四癑ֹ前的建筑。因Z们一代代传着_而Ş象的模式语言?BR> 管我看Shalloway的Design Patterns Explained已经有一D|_在今天,我终于知道ؓ什么他如此钟情于Alexander的徏{模式了?BR>
可惜Q由于缺乏一U文化的U淀Q《设计模式》的读者们Q包括我在内Q都患上了消化不良。我大胆估计Q《设计模式》在中国软g业造成的负面效果绝不少于其正面效果。Alan Shalloway曄_“模式”ƈ不仅仅限于“设计”,甚至“设计”二字正是导致最多误会的Ҏ[3]QJohn Vlissides在他的Pattern Hatching中列举了Ҏ式的“十大误解”,其中提到“模式ƈ不仅仅是一U解x案”[4]。但是,有多h知道Qؓ什么?
正是因ؓ~Z必要的背景知识,中国开发者对模式的了解往往是片面的甚至是错误的。如果把模式仅仅视ؓ一U解x案、或者一U反复出现的情况的ȝQ那么它多只对软g开发有一定的帮助或者指导意义;如果只把模式作ؓ预先Qup-frontQ设计的ҎQ它甚至会导致过分工E(over-engineeringQ。总而言之,模式多只能一U“好东西”,至于“永恒之道”这U溢之词,即最钟情于模式如我,也是不敢出口的?BR> 建筑的永恒之?BR> 在面对一门有数十q思想基础和十余年发展历史的学U时Q我们必L认自q薄Q我们必M断学习。同Ӟ我们必须有自q思想。苏格拉底说Q“我们无知,所以我们有智慧。?BR> Z真正理解GoF的思想Qؓ了真正理解模式的思想Q我们有必要先深入其思想基础。于是,我翻开了手上的书。于是,我看C与我以往的理解完全不同的知识Q我看到了一个崭新的世界?BR> 记得上面的一个问题吗Q“模式ƈ不仅仅是一个解x案”。这句话是什么意思?L下面q段话:
……模式系lŞ成了一U语a?BR> 从数学观点看Q最单的语言是一个包括两个系列的pȝQ?BR> 1. 一pd要素或符受?BR> 2. l合q些W号的一pd规则?BR> 然而,……模式既是要素,也是规则Q所以规则和要素不可分。模式就是要素。每一模式也是一个规则,它描qC本n也是其他模式的要素的可能的排列。[5]
于是豁然开朗。从最初的定义开始,模式׃仅仅是解x案,而是一U完整的语言。作x案,模式构成了语a的要素;而作a规则Ӟ模式的意义同样重要,甚至更加重要。而这个方面常常被《设计模式》的读者们忽略了?BR> 仅从书名可以看出,作者把模式当成“徏{的永恒之道”――这U说法是否有点太不谦虚了Q请看作者的解释Q?BR> 有h已告诉我们,优秀的徏{与低劣的徏{,优秀的城市与低劣的城市之间没有客观的差别?BR> 其实Q徏{、城市的好坏之别是一个客观的问题……不q易于理解,Z么h们如此坚信好劣徏{之别没有单一坚实的基?BR> q是因ؓ产生q种差别的独特的中心特质无法命名?BR> Qؓ什么这U特质无法命名?Q?BR> 把(q种Q无名特质想象ؓ一点,我们试的每个词作Z个椭圆。每个椭圆包括这点,但每个椭圆也包括许多q离此点的其他的意义?BR> 因ؓ每个词L像这L一个椭圆,所以每个词对于作ؓ点的特质来说QL太空泛,太不明确Q范围太大。没有一个词可以表达无名特质Q因为特质太ҎQ词太广泛了。但是,它是存在于Q何h、Q何东西之中的最重要的特质。[6]
很明显,q里所说的“好”的建筑和“差”的建筑Q都不包含结构有~陷的“豆腐渣工程”。在l构工程学能够保证结构的E_、健壮之后,建筑师们惛_的便是如何让建筑真正满人的需要。在书中Q作者多ơ表C,管C建筑有极其优U的结构,却缺乏优U的设计,D大量的徏{违背h的本性?BR> 我们已经说到了“h的本性”。那么,建筑中“h的本性”在哪里Q它在数千q流传的模式语言中。一个特定的模式Q在特定的场景下Q辅以特定的相关模式Q它是W合人的本性的Q因为模式是“允许其自n内力自我疏解”的Q而模式语a又是有活力、能够自我发展的。所以,Z模式设计、设计反向媄响模式语aQ这Lq程正是“徏{的永恒之道”?BR> 在此有些个h见解Q我们已l太习惯于IT图书那种填鸭式的教学Ҏ了,我们已经太习惯于“一本入门应用、一本进阶原理、一本参考资料”的M方式了。再说一ơ,当我们面对Christopher Alexanderq些人文气息厚的技术书c时Q我们必L认自q薄和无知,我们必须用自q智慧来思考。中国h最擅长逻辑思维Q是以中国h也最Ҏ被一些似乎有意义的词汇蒙蔽双D陷入逻辑先验不能自拔。当《徏{的永恒之道》在一开始就告诉你“这U中心特质”无法命名的时候,你是不是很不能习惯?l箋M去,让你快要生锈的大脑运转v来吧?BR> 回到我们的模?BR> 我这里所说的“我们的模式”,是指“Y件开发中的模式”。介l了q么多徏{学中的模式Q对于Y件开发者有什么意义吗Q或者说得更直白一些,模式会是“Y件的永恒之道”吗Q对此,我没有答案,只有讨论。不q我怿Q没有h能够知道真理Q有讨论、有思考,我们pȝ理更q一些?BR> ׃此书成于1979q_作者又是一位徏{学Ӟ书中自然也无法给出关于Y件开发的{案Q仍然只能靠读者自己去思考。读完两遍之后,我的心得大约有以下几点:
----和徏{结构一P软g中亦有诸多的“内力”。和建筑设计一P软g设计也应该努力疏解系l中的内力,使系l趋于稳定、有生气。一切的软g设计都应该由此出发?BR> ----Mpȝ都需要有变化QQ何系l都会走向死亡。作计者,应该拥抱变化、利用变化,而不是逃避变化?BR> ----好的软g只能“生”而不能“创造”,我们所能做的只是用一个相对好的过E,量使Y件朝向好的方向发展。从q个角度来说Q开发的q代周期短好?BR> ----软g的工业化使Y件僵歅R失厠Z无名特质”、谬误百出、脱ȝ实。通过规程、制度来控制Q只会ɾpȝ内力无从疏解Q最l走向崩溃?BR> ----…?BR> 我好象没有提到模式?因ؓ整本书讲的都是模式。至于如何在软g的领域中看待模式Q那需要你自己L考、去体会了?BR> 模式到底是不是Y件的永恒之道Q最l,我还是无法给Z个答案。但是,我相信,充分理解模式语言Q充分理解模式语a和设计的关系Q会帮助我们提高设计能力Q也会帮助我们丰富模式语a?BR> 未完的结?BR> 本文卛_l束。作为对一本书的介l,我ƈ没有介绍它的著、译质量。不是疏忽,实在是不必说。作者Christopher Alexander用了14q的旉来撰写此书,译者n冰用了数q的旉来翻译此书――我们所看的IT图书Q翻译周期极有辑ֈ一q的。还需要怀疑这本书的质量吗Q?BR> 在读完第一遍以后,我写q一名为《“Y件蓝领”批判》[7]的读书心得,引v了许多争论。可惜,参与争论的网友,l大多数q没有理解我写那文章的背景知识Q所以大半的讨论都没有意义。在此,我挑选最有意义的一个回复来回答Q权当ؓ此文作结Q也希望张岩先生能看到这文章?BR> 张岩Ҏ_
Alexander是个建筑师,建筑师关心的是徏{如何能W合人的需要,也就是徏{的“Y”质量。至于徏{的“硬”质量,是由l构工程师来保的,建筑师既没有能力Q也没有责Q对徏{的“硬”质量负责。因此徏{师的地位类g软g工程中的M设计师或曰架构设计师Q现在不是也叫Architect了么Q)Q在q一族群里当然没有所谓蓝领的容n之地。但软g没有“硬”质量的要求了么Q当然是有的Q所谓编码强度是也。不L、不溢出、不误操作等{。这些是q序员来保证的QArchitect同样也管不到q一Dc因此通常意义上的Software Enginner或者Programmer相当于徏{中的结构工E师的角艌Ӏ这些h的思维方式应该是内聚的Q不能具有发散性,否则“硬”质量无从保证。而模块也是在q一层次上才开始引入的?
要知道,在徏{开发过E中Q徏{师是最不受工程化方法约束的人。因此如果讨论工E化ҎQ是不应该用建筑师的思维方式ȝ比的。徏{史上有D“佳话”:悉尼歌剧院,建筑师的发散性思维完了结构师Q结果整个徏{超预算了一个数量Q但建筑落成之后的收益却比原先预计的高了一个数量。因此创造性是“徏{师的武器、结构师的噩梦”。徏{与l构是诏I徏{界始终的一对矛盾,在Y件设计中同样存在cM的问题。因此仅仅以建筑学的视角看问题,我个Z为是有点偏颇的?BR>
我在此回{:
你的回复告诉了我很多以前不知道的知识。带着q些知识Q我又读了一遍《徏{的永恒之道》。ƈ且,我想我找C{案?BR> 建筑师不受工E化ҎU束Q但M人都受自q模式语言U束Q而模式语a本n是受工程化方法约束的。悉歌剧院的例子,是在扩充模式语言Q这是非常罕见的。当模式语言扩充之后Q再利用q些模式语言来徏{,p得到“质量提升了一个数量”的建筑Q成本却不会再“超一个数量”。不知道你最q去q大q村那边没有QPhilip Cox在那边设计了一个名叫“锦U知春”的区Q采用了很多悉尼歌剧院中曄采用q的元素Q或者叫模式Q,怿它的成本是不会超q预一个数量的,对吧Q之所以在悉尼歌剧院的例子中出现这LH境Q我怿是因为结构工E的滞后――h的思想L前的,我们应该让滞后、僵的物理去适应前的、有生气的思想Q而不是相反,对吗Q?BR>--------------------------------------------------------------------------------
[1] 现在读者可以在中国互动出版|(http://www.china-pub.com/Q购买《徏{的永恒之道》一书及其姐妹篇《徏{模式语a》(A Pattern LanguageQ和《俄勒冈实验》(The Oregon ExperimentQ?BR> [2] Eric Gamma{著Q李英军{译Q《设计模式》(Design PatternsQ,机械工业出版C?000q?月?BR> [3] 2002q??0日UMLChinad的Alan Shalloway|上交流记录Q?A class=embed_link target=_blank>http://gigix.cool2u.net/download/Shalloway.pdf
[4] John VlissidesQ《模式的十大误解》,http://gigix.cool2u.net/download/topten.pdf
[5] Christopher Alexander著,赵冰译,《徏{的永恒之道》(The Timeless Way of BuildingQ,知识产权出版C?002q?月,W?44到W?45c?BR> [6] Christopher Alexander著,赵冰译,《徏{的永恒之道》(The Timeless Way of BuildingQ,知识产权出版C?002q?月,W?1到W?0c?BR> [7] http://expert.csdn.net/develop/Article/13/13656.shtm |