从设计模式到梁思成

来源:互联网 发布:立体雕刻软件 编辑:程序博客网 时间:2024/04/26 01:54
Design Pattern已经成为软件设计中一个耳熟能详的词语了。并且,多半会联想到GOF的那本设计模式的名著。事实上,对我来说,尽管四位作者都是大牛,花边 新闻也关注了不少,但让我写出凭记忆写出四位作者的名字还是困难的。没办法,对老外的名字就是如此的不敏感。然而,GOF却很好记。
Gang of Four,第一次看到的反应,F4?F4挺有学问啊。起初,对于把GOF翻译成四人帮颇不以为然。干嘛搞这么个哗众取宠的翻译啊!后来才知道,感情这GOF是从四 人帮翻译过去的。看来,新中国不仅输出paper tiger这么个新词,原来四人帮也是一例。提到四人帮,想到小时候背得的一首诗:
黄浦江上一座桥,
江桥腐朽已动摇。
请指示,是拆还是烧?
如今,那个黄浦江已经不在了,新的黄浦江还未垮掉。该有人写新诗讽刺新四人帮或五人帮什么的了吧?或许,新诗已经写好了,只是我等凡夫俗子无缘得见。
扯远了,还是说设计模式。
Wikipedia上有关于Design Pattern的详细介绍,只是,拜G_F_W所赐,我在家无法访问。
Design Pattern受建筑师克里斯托弗的书《A Pattern Language》所影响,把建筑设计中的概念引入到软件设计中。这无疑是一个创举,有着深远的意义。建筑设计和软件设计都是大规模的设计活动。规模大, 就不可能像微雕或者小型设计一样艺术化特点非常明显。我认为,凡是大规模的设计都需要一些像模式这样的东西。正如Kent所言的隐喻,我们必须意识到,拿 建筑设计来比软件设计,只是两者在某些方面有相似性。如果认为两者等同,那就是糊涂。什么都拿建筑模式来套,那就是不可理喻了。至少,对于建筑设计来说, 还要考虑建造,而建造的成本比设计高的多。而软件的构造成本几乎为0.这就导致我们往往忽视了一些设计检验的工作。例如,大型桥梁的设计可能需要做风洞试 验,高层建筑要做地震的应力分析。而这些,在软件设计中重视的程度和建筑设计都不能相比。迭代模型和测试驱动都降低了对质量验证的难度和成本。
等等,说了半天设计模式,这个,和梁思成有啥关系呢?貌似提到梁思成,应该联想到的是林徽因,徐志摩,泰戈尔才对。要不就是北京旧城保护,日本京都,奈良什么的。和软件开发有什么关系?这还要从何祚庥谈起。
尽 管大家对何祚庥褒贬不一,尤其是那句”谁叫你不幸生在中国“招致网民的声讨。我不曾查看这句话的前后文,但是从字面上来看,看不出对煤矿工人的冷血来,相 反,倒是透着一股浓浓的悲哀和无奈。还曾经看过一段他为克隆人伦理问题的辩论,理由是,同卵双生的双胞胎基因完全一样,也没有发生社会认知问题,克隆人的 相似程度不可能比孪生双胞胎更高,所以,伦理问题完全可以解决。我认为,这段论述是公允的。问题是很多人可能还停留在克隆人就是复制一个一模一样的人的认 知水平。克隆的只是基因,年龄,知识,社会身份都是不能克隆的。
何祚庥也批判过梁思成,有人据此攻击何祚庥,并联系到梁思成的死。对此,我没什么了解。倒是确实找到一篇何批梁的文章《论梁思成对建筑问题的若干错误见解》 ,原载《学习》杂志一九五五年第十期。我是本着八卦也要专业的精神找到这篇文章,然而,其中的一段论述吸引了我,就是其中的第三部分”所谓建筑上的‘文法’、‘词汇’论乃是一种形式主义的理论“:
梁 思成认为建筑和语言文字一样,一个民族总是创造出他们世世代代喜爱、因而沿用的惯例,成了法式。并认为:构件和构件之间,构件和它们的加工处理装饰之间, 个别建筑物和个别建筑物之间,都有一定的处理方法和相互关系,所以我们说它是一种建筑上的“文法”。至于象粱、柱、枋、檩、门、窗等等,那就是我么建筑上 的“词汇”,是构成一座或一组建筑的不可少的构件和因素(参看《建筑学报》一九五四年第一期)。
    梁思成还根据这样的观点推论出:“如同文法对于语言、文字之运用有一定的拘束性一样,‘型范’、‘法式’、‘做法’对于材料、构件之运用也有它的拘束性。 但在这拘束性之下,也有极大的运用灵活性,能有多样性的表现。”(《新建设》一九五四年二月号)有时又说道:“文法有时候是不讲道理的东西’(《祖国的建 筑》)。接着,他又得出了一个关于创造中国自己民族形式的断语:
    “……不熟悉自己的建筑的‘做法’或‘法式’,我们似乎是不可能创造出一座新中国的建筑,犹如不学习并熟悉中国语言文字的词汇和文法就不可能写出一篇中文的文章一样。”(《新建设》一九五四年二月号)
    梁思成还提出一个建筑的“可译性”的理论,认为:“如同用同一文法,把词汇组织起来,可以写出极不相同的文章一样,在建筑上,每个民族可以用自己特有的法 式,可以灵活地运用建筑的材料、构件,为了不同的需要,构成极不相同的体形,创造出极不相同的类型,解决极不相同的问题,表达极不相同的情感。结论是:凡 是别的民族可以用他们的民族形式建造的,另一个民族没有不能用他们自己的形式建造的。”(同上)
条件反射式地注意到‘型范’、‘法式’、‘做法’等词并联想到建筑模式。忽然想到,梁思成和
克里斯托弗有没有学术渊源呢?而梁思成的这些思想的渊源又在何处?一查之下发现,梁思成曾就读于哈佛大学约半年,学习世界建筑史。而克 里斯托弗大约在30年后在哈佛取得建筑学的博士学位。可惜,我没能找到两者在学术上有何联系,因此,此前关于建筑模式也受到梁思成启发的猜想也就仅仅是猜 想。要证明的话需要查阅大量梁和克里斯托弗的论文才能下判断了。然而,梁思成的思想却并非创造,而是有迹可循。一方面,固然得益于其对世界建筑的研究,另 一个重要的来源,就是被其称为完全读不懂的伟大的《营造法式》。其后来写了《营造法式注释》。我还没看过这本书,大略看了一些目录和简介。其中已然有建筑 模式的开端。而该书成书于公园1100年左右的宋代。
嗯,以后和人吹牛的时候,可以说,设计模式的起源没准在中国呢。^_^
另外,何先生对梁的这个批判,尽管还是在一个合理的范围内,并没有人身攻击。只是在那个年代,以何先生当时的地位,后果比较严重。这个批评,在我一个程序员的眼里看来,属于外行批评内行,何先生大概是不懂建筑设计的。
软件开发和物理观察是迥然不同的两个过程。物理研究的方法总体来说是一个发现的过程。所有的物理发现,要么通过实验可以反复再现,对于不可实验的(例如天 体物理)也需要通过检验预言加以巩固。而软件开发很大程度上是一个创造的过程。也就是是说,在”创造“这一点上,必然和诸多的创作活动有相通之处。模式就 是诸多相通处之一。沿着梁先生的思路,文学创作也必然是有许多模式的。诗、词、歌、赋、杂文,不同的文体是不同的模式。不同的结构也是模式,起承转合也是 模式。其他艺术,如国画,音乐,皆如此。对应到软件开发,则有分析模式,架构模式,设计模式。有人说模式的存在源于语言的缺陷,还有人证明《设计模式》一 书中的16个模式在动态语言中都不再是模式,因为太简单,不值得称之为模式。窃以为,模式源于语言缺陷一说有待商榷。其一,新语言中必有新模式,模式不等 价于语言。强如自然语言,也有设计模式层面的对应物,修辞。汉语中的典型例子有:排比,比喻,拟人等等,比兴则既可以是设计模式,也可以是架构模式。其 二,内置的模式越多,语言就越弱而不是越强。语言应该为模式提供舞台,而不是赤膊上阵。Fisher原理,以及”坏就是好的“信条教导我们,这样的语言越 是在某个领域特别管用,在别的领域就越加困难。管用程度和狭窄程度正相关。
通过把软件开发和其他创造活动类比,我们可以看到,软件开发具有的两面性。一方面,是工程性,这一点是被广泛接受的。另一方面,是艺术性。由于软件总是和 商业、科学、技术绑定在一起。我们并不乐意或者说下意识地避免和艺术搭上边。事实上,我们大可不必。创造力不是天马行库,胡思乱想。软件开发也不必担心背 上艺术的名声就意味着像空中楼阁一样不可靠。艺术创作也是有章可循的,艺术工作者对基本功的强调并不亚于程序员对基本功的要求。因此,艺术创作,特别是大 规模创作的工作经验也是值得软件开发借鉴的。
这是在了解梁思成的时候想到的。
原创粉丝点击