umlchina的John Vlissides(四人帮之老四)聊天的精华(30分)

V

VRGL

Unregistered / Unconfirmed
GUEST, unregistred user!
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 1
《设计模式》作者《设计模式》作者《设计模式》作者《设计模式》作者John Vlissides
透明,think ,Qingrun 整理
9 月20 日,面向对象技术专家、IBM 研究中心研究员、软件开发的里程碑著作《设计模式》的作者John
Vlissides 在UMLCHINA (http://www.umlchina.com )的“嘉宾聊天室”里与中国的软件开发者在线畅谈。
下面是部分交流实录。
关于软件开发技术关于软件开发技术关于软件开发技术关于软件开发技术
huangcy: 您能告诉我们在框架和软件构架之间有什么重要的区别么?我经常在一些抽象的层次上对您能告
诉我们在框架和软件构架之间有什么重要的区别么?我经常在一些抽象的层次上对您能告诉我们在框架和软
件构架之间有什么重要的区别么?我经常在一些抽象的层次上对您能告诉我们在框架和软件构架之间有什么
重要的区别么?我经常在一些抽象的层次上对他们感到疑惑,无法区分。他们感到疑惑,无法区分。他们感
到疑惑,无法区分。他们感到疑惑,无法区分。
John Vlissides :首先,“框架”是代码,它体现一类软件的设计。例如,会计系统和图形编辑器。而
“软件构架”是一种成型的规范。它与建筑学中的“构架”又不完全相同,有很多具体的区别存在。对于
越大的项目构架就越重要。最明显的,构建构架是在处理关于建造物的事情。不容易发现的是,软件是很
容易扩展和改变的,有很多实际情况会限制你尽可能快的修改你的构架,并且在开发过程中也是非常容易
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 2
中断的。
Lipy: 您可以告诉我您是如何开始您的软件设计的么?您可以告诉我您是如何开始您的软件设计的么?
您可以告诉我您是如何开始您的软件设计的么?您可以告诉我您是如何开始您的软件设计的么?
John Vlissides :设计应用于每件需要继续下去的事物。我总是在写软件的时候开始这一切。后来,我
就会学会知道什么在起作用,什么却没有。在我的书中,我也仅仅是将一些我已经学会的知识和能力记下
来并发表而已。
lovelybug28: John ,您如何看待,您如何看待,您如何看待,您如何看待XP (Extreme Programming )?
John Vlissides :我喜欢在XP 中应用模式。我认为XP 的核心有五个原则:快速反馈、简单设想、渐进改
变、吸收变化、高质量的工作。如果你在一个项目的开发过程中,可以参考一下XP 编程方面的书籍和Larman
的《Applying UML and Patterns 》这本书(即将有新版本)。我认为XP 很伟大,特别是对于一些无法准确
定义需求的中小型的项目。
Sealw: 大多数项目的需求都是很难定义的,许多中国的程序员都被大多数项目的需求都是很难定义的,许多
中国的程序员都被大多数项目的需求都是很难定义的,许多中国的程序员都被大多数项目的需求都是很难定义
的,许多中国的程序员都被RUP 误导了。误导了。误导了。误导了。
John Vlissides :事实上不一定。较大的项目一般会有比较完整容易收集的需求。例如,针对航天飞机
设计的飞行控制软件就有非常规范的需求。RUP 对于它所擅长的部分的确是非常好用的——即:带有可控
需求的比较大的项目。
sealw: 是的,在成熟的工业中,需求一般都是比较规范的。但是在中国,大多数是不规范的。是的,在成熟
的工业中,需求一般都是比较规范的。但是在中国,大多数是不规范的。是的,在成熟的工业中,需求一般都
是比较规范的。但是在中国,大多数是不规范的。是的,在成熟的工业中,需求一般都是比较规范的。但是在
中国,大多数是不规范的。
John Vlissides :我谈到的是所有的人,不仅仅是中国。软件技术仍然处于幼年期,看看传统工业发展
起来需要多少时间,百年?千年?而我们才写了多少年软件,50 年?
关于写作情况关于写作情况关于写作情况关于写作情况
lipy: 请问您的新书的名字是什么请问您的新书的名字是什么请问您的新书的名字是什么请问您的新书的名字是什么?
John Vlissides :我个人并没有出版新书。我写的最新的一本书是《Pattern Hatching 》。同时我们已经
为《设计模式》的第二个版本工作了好几年了,其中大多数代码例子都是基于Java 的,现在第二版中没有
出现什么新的观点,但我感觉新鲜的东西就快出现了。大多数时候我们都在使用Java ,因为它可以最好地
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 3
表达我们想表达的思想,另外,它也很流行。顺便说一下,我是一个泛型编程(Generic Programming )的
强烈爱好者。我曾经使用Krzysztof Czarnecki 工作过。而且我还在考虑出版一系列“compound patterns ”(混
合模式),我在C++ Report 中写了许多关于它们的文章。
babysloth: 那,什么是混合模式呢?您能否给我们介绍一下您的这本新书?那,什么是混合模式呢?您能否给我们
介绍一下您的这本新书?那,什么是混合模式呢?您能否给我们介绍一下您的这本新书?那,什么是混合模式呢?您
能否给我们介绍一下您的这本新书?
John Vlissides :混合模式,请到http://www.research.ibm.com/designpatterns/publications.htm#Articles 上
查看相关的文章。顺便说一句,它仍然不是一个项目,而仅仅是一个观念。
关于学习关于学习关于学习关于学习
lipy: 我刚刚开始学习我刚刚开始学习我刚刚开始学习我刚刚开始学习UML 。您能给我一些重要的建议么?。您能给
我一些重要的建议么?。您能给我一些重要的建议么?。您能给我一些重要的建议么?
John Vlissides :你可以看一下Fowler 的《UML Distilled 》。如果你想更深入一点,可以学习Rumbaugh
的《UML 参考手册》。
Pnren: 一些人说一些人说一些人说一些人说win2000 是专门为进入互联网设计的,对么?是专门为进入互联网设计的,
对么?是专门为进入互联网设计的,对么?是专门为进入互联网设计的,对么?
John Vlissides :难道说unix 的网络价值比较低吗?
pnren :我正在自学:我正在自学:我正在自学:我正在自学Linux ,我觉得它非常复杂,不是吗?我们应该研究,
我觉得它非常复杂,不是吗?我们应该研究,我觉得它非常复杂,不是吗?我们应该研究,我觉得它非常复杂,不是吗?
我们应该研究Linux 的什么?或者说我们应的什么?或者说我们应的什么?或者说我们应的什么?或者说我们应
该如何学习?该如何学习?该如何学习?该如何学习?
John Vlissides :嘿,它可是一个操作系统!(你只需要学会使用它)不过我强烈建议学习Linux 。我曾
经看到它被证明成功应用于安全应用,特别是密码技术中。我对Linux 的内部实现了解得不多,所以无法指
出它是否使用了哪些模式。但是我肯定模式存在于其中。研究这样一个可以作为范例的软件是一个好主意。
关于设计模式关于设计模式关于设计模式关于设计模式
paofan: 模式是原理么?不仅仅是建模吧?模式是原理么?不仅仅是建模吧?模式是原理么?不仅仅是建模吧?模式
是原理么?不仅仅是建模吧?
John Vlissides :对于模式是有一些原理性的观点,特别是Alexander 的。Jim Coplien 已经完成了模式的
“禅”。
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 4
Jeffray: John ,我想问您一些关于使用模式的规则方面的问题。我的意思是说,
是否有一些选择模式,我想问您一些关于使用模式的规则方面的问题。我的意思
是说,是否有一些选择模式,我想问您一些关于使用模式的规则方面的问题。我
的意思是说,是否有一些选择模式,我想问您一些关于使用模式的规则方面的问
题。我的意思是说,是否有一些选择模式的基本原理。的基本原理。的基本原理。
的基本原理。
John Vlissides :我不能给你一套很严格的规则,只能建议:你必须在应用这些
模式的过程中来学会他们。
Qingzuozhou: 在您的设计模式中,主要是关于设计具体的小的组件。那么我如何
使用这些模式来构在您的设计模式中,主要是关于设计具体的小的组件。那么我
如何使用这些模式来构在您的设计模式中,主要是关于设计具体的小的组件。那
么我如何使用这些模式来构在您的设计模式中,主要是关于设计具体的小的组件。
那么我如何使用这些模式来构建大型系统呢?是否那些构建大型系统的设计模式
都是基于这些小模式的呢?建大型系统呢?是否那些构建大型系统的设计模式都
是基于这些小模式的呢?建大型系统呢?是否那些构建大型系统的设计模式都是
基于这些小模式的呢?建大型系统呢?是否那些构建大型系统的设计模式都是基
于这些小模式的呢?
John Vlissides :不一定使用小的组件,但是在通常的意义上,它们不能成为
大型构架的核心流程。
Qingzuozhou: 在在在在23 种模式中没有任何一种是构建基于数据库应用的,这
是为什么?种模式中没有任何一种是构建基于数据库应用的,这是为什么?种模
式中没有任何一种是构建基于数据库应用的,这是为什么?种模式中没有任何一
种是构建基于数据库应用的,这是为什么?
John Vlissides :那是因为我们没有数据库应用方面足够的经验。
Huangcy ::::John Vlissides 教教教教授,我认为设计模式是应用框架的
组件,所以当你要实现一个框架的时候,授,我认为设计模式是应用框架的组件,
所以当你要实现一个框架的时候,授,我认为设计模式是应用框架的组件,所以
当你要实现一个框架的时候,授,我认为设计模式是应用框架的组件,所以当你
要实现一个框架的时候,你需要将这些设计模式具体化。但是当我抽象软件框架
的时候,我经常会处理得
过于详细,您能否给我一你需要将这些设计模式具体化。但是当我抽象软件框架
的时候,我经常会处理得过于详细,您能否给我一你需要将这些设计模式具体化。
但是当我抽象软件框架的时候,我经常会处理得过于详细,您能否给我一你需要
将这些设计模式具体化。但是当我抽象软件框架的时候,我经常会处理得过于详
细,您能否给我一
些关于这方面的建议呢?有些时候,我认为问题太过于详细,并且我不能从模型
中抽象出正确的构架。如些关于这方面的建议呢?有些时候,我认为问题太过于
详细,并且我不能从模型中抽象出正确的构架。如些关于这方面的建议呢?有些
时候,我认为问题太过于详细,并且我不能从模型中抽象出正确的构架。如些关
于这方面的建议呢?有些时候,我认为问题太过于详细,并且我不能从模型中抽
象出正确的构架。如果框架过于详细,就会减少它的可重用性。果框架过于详细,
就会减少它的可重用性。果框架过于详细,就会减少它的可重用性。果框架过于
详细,就会减少它的可重用性。
John Vlissides :是的,你能够将模式作为一种示例来思考它们,但是…通常模
式仅仅是一个将你的需求进化到设计的起点。在Pattern Hatching 中,我使用模
式设计了一个文件系统API 。在不仅仅一个例子中,模式采用了非传统的方式。
并且从这些方式中得到了发展。模式意味着对手边的问题做适当剪裁。这就是
为什么它们不是代码,而是散文。它们教育你,使你能通过你自己的思考来证
明并解决问题。
Huangcy :我没有阅读过您的:我没有阅读过您的:我没有阅读过您的:我没有
阅读过您的Pattern Hatching ,但是我读过您的,但是我读过您的,但是我读
过您的,但是我读过您的Design Patterns ,Pattern Hatching
主题是什么?
John Vlissides :Pattern Hatching 的内容,部分是关于应用模式的注释、
部分是指南。部分是我们四个
开发模式的背景材料。
http://www.amazon.com/exec/obidos/flex-sign-in/ref=cm_rate_rev/104-5101538-2496757#rated-review
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 5
Qingzuozhou :我想知道在设计模式第二版中是否有关于数据库应用的模式。:我想知道在设计模式第
二版中是否有关于数据库应用的模式。:我想知道在设计模式第二版中是否有关于数据库应用的模式。
:我想知道在设计模式第二版中是否有关于数据库应用的模式。
John Vlissides :没有。模式年鉴有一套关于这些模式的参考。
lovelybug28: 我是设计模式的一个初学者,您能否给我一些有用的建议?我是设计模式的一个初学者,
您能否给我一些有用的建议?我是设计模式的一个初学者,您能否给我一些有用的建议?我是设计模式
的一个初学者,您能否给我一些有用的建议?
John Vlissides :你可以去阅读一下Shalloway 写的一本非常出色的新书Design Patterns Explained (编者
注:由umlchina 翻译组成员透明翻译的中文译本《设计模式精解》即将出版)。这本书对初学者会有很大
的帮助。除了这些,我的Pattern Hatching 这本书也展示了如何使用设计模式。最重要的是,你应该从应用
的角度来学习他们,而不仅仅是阅读它们。
d_jt: 我认为设计模式的核心部分是组合和虚拟继承,您同意吗?我认为设计模式的核心部分是组合和虚拟
继承,您同意吗?我认为设计模式的核心部分是组合和虚拟继承,您同意吗?我认为设计模式的核心部分是
组合和虚拟继承,您同意吗?
John Vlissides :不,恐怕我不能同意。我想这取决于你说的“核心部分”的具体含义。虚拟继承过分
依赖于C++了。不过组合是一个重要的部分,如同代理一样。但这些东西都是关于实现的。对于描述问题,
模式都是平等的。而人们面临的最大问题是他们不知道哪些问题是前人曾经解决过的。而模式有几个优点:
它们向人们展示那些反复出现的问题的优秀解决方案,这些方案是经过时间考验的;它们的名称为开发者
之间的讨论构造了一个通用的词汇表;它们提供了重构代码的目标;而且它们可以帮你对不能肯定的方法
进行检验。这些巨大的优点,才是模式的核心。所谓“重构”(Refactoring ),这是一种修改代码的技术,
它让代码更优雅,而不改变代码的功能。
fcx123: 我认为在分析模式和设计模式之间没有任何联系,对么?我认为分析着重于现实世界的设计我认
为在分析模式和设计模式之间没有任何联系,对么?我认为分析着重于现实世界的设计我认为在分析模式
和设计模式之间没有任何联系,对么?我认为分析着重于现实世界的设计我认为在分析模式和设计模式之
间没有任何联系,对么?我认为分析着重于现实世界的设计
模型。但设计是着重于如何实现它。模型。但设计是着重于如何实现它。模型。但设计是着重于如何实现
它。模型。但设计是着重于如何实现它。
John Vlissides :我认为在分析模式和设计模式之间有非常多的关系。同样的关系也存在于分析和设计
之间。你不能将分析从设计中独立出来,如果你打算这么做,那么你一定会失败的。分析模式捕捉反复出
现的领域建模问题的通用解决方案;设计模式捕捉反复出现的程序设计问题的通用解决方案。同其他模式
一样,分析模式也不能保证复用,而且分析模式特别无法保证复用。关于分析模式,最流行的一本书是Fowler
的Analysis Patterns :
http://www.amazon.com/exec/obidos/ASIN/0201895420/qid=1000995590/sr=2-1/ref=sr_2_3_1/104-510153
8-2496757
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 6
windy.j: 在《设计模式》一书出版之后,又出现了越来越多的模式。怎样学习(和选用)那些新的模在
《设计模式》一书出版之后,又出现了越来越多的模式。怎样学习(和选用)那些新的模在《设计模式》
一书出版之后,又出现了越来越多的模式。怎样学习(和选用)那些新的模在《设计模式》一书出版之后,
又出现了越来越多的模式。怎样学习(和选用)那些新的模
式,您能给我们一些建议吗?式,您能给我们一些建议吗?式,您能给我们一些建议吗?式,您能给我们一些建议吗?
John Vlissides :学习模式最好的方法就是使用它们——根据你的需要去选择,而不是先入为主的决定。
寻找新的模式则是另一种方法。看看《模式年鉴》或许会有帮助:
http://www.amazon.com/exec/obidos/ASIN/0201615673/qid%3D960385247/104-5101538-2496757 。关于模式
的选择和学习,我不能给你一套很严格的规则,只能建议:你必须在应用这些模式的过程中来学习它们。
有一个关于模式的主页:http://hillside.net/patterns/ 。
关于软件行业关于软件行业关于软件行业关于软件行业
paofan: IBM 加入到加入到加入到加入到Linux 和和和和Java 集团,这是否
暗示蓝色巨人将会更开放?是否微软和集团,这是否暗示蓝色巨人将会更开放
?是否微软和集团,这是否暗示蓝色巨人将会更开放?是否微软和集团,这是
否暗示蓝色巨人将会更开放?是否微软和IBM 代表两种不代表两种不代表两种
不代表两种不同的商业途径同的商业途径同的商业途径同的商业途径————
————垄断的途径和开放的途径?垄断的途径和开放的途径?垄断的途径和
开放的途径?垄断的途径和开放的途径?
John Vlissides :IBM 在开发源码领域也是一大巨头。我不知道这是否意味着
“两种途径”。不过它们都是商人,都是为了赚钱。微软看重对消费电脑市场的
控制;而IBM 则看重对更大范围的商用电脑市场的控制。
paofan: 中国程序员无法在一个团队中协同工作。他们认为“破解”可以显示
他们的聪明。他们用一中国程序员无法在一个团队中协同工作。他们认为
“破解”可以显示他们的聪明。他们用一中国程序员无法在一个团队中协同工作。
他们认为“破解”可以显示他们的聪明。他们用一中国程序员无法在一个团队
中协同工作。他们认为“破解”可以显示他们的聪明。他们用一
种愚蠢的方式进行破坏,而不是建设。他们攻击行业巨头,因为他们自己太渺小
。而不管微软还是种愚蠢的方式进行破坏,而不是建设。他们攻击行业巨头,
因为他们自己太渺小。而不管微软还是种愚蠢的方式进行破坏,而不是建设。
他们攻击行业巨头,因为他们自己太渺小。而不管微软还是种愚蠢的方式进行破坏,
而不是建设。他们攻击行业巨头,因为他们自己太渺小。而不管微软还是IBM 都
没办法控制破解的行为。因此一些本来清白的人也开始变成破解的信徒。没办法
控制破解的行为。因此一些本来清白的人也开始变成破解的信徒。没办法控制破
解的行为。因此一些本来清白的人也开始变成破解的信徒。没办法控制破解的行为。
因此一些本来清白的人也开始变成破解的信徒。
John Vlissides 说(迷惑的):控制“破解”的行为?(似乎没有概念)不过
Alexander 从中国文化中得到了很多灵感。关于自己关于自己关于自己关于自己
lipy :John 先生,您现在是否在中国?先生,您现在是否在中国?先生,
您现在是否在中国?先生,您现在是否在中国?
John Vlissides :不,我在纽约,但是我一直很希望能访问中国。我父亲在
1972 年访问过中国,就在尼克松访华之后。
babysloth: 现在情况怎样?现在情况怎样?现在情况怎样?现在情况怎样?
非程序员●第六期●访谈●《设计模式》作者John Vlissides
http://www.umlchina.com 7
John Vlissides :不能说一切都好,但已经安定下来了。
lovelybug28: 教授,请问您最常用的语言是什么?教授,请问您最常用的语言
是什么?教授,请问您最常用的语言是什么?教授,请问您最常用的语言是什
么?C++、、、、Java 、还是其他?另外,请问您的年龄?、还是其他?另外
,请问您的年龄?、还是其他?另外,请问您的年龄?、还是其他?另外,请
问您的年龄?
John Vlissides :到目前为止是Java ——尽管我已经没有从事大量的编程工
作了。我想,我已经老了。我已经满40 岁了,就在8 月2 日。
babysloth: 我对您是如何加入到我对您是如何加入到我对您是如何加入到我对
您是如何加入到Gang Of Four(或者应该是或者应该是或者应该是或者应该是
Gang Of Three)的故事很感兴趣。您可以告的故事很感兴趣。您可以告的故事
很感兴趣。您可以告的故事很感兴趣。您可以告诉我们相关的事情么?诉我们
相关的事情么?诉我们相关的事情么?诉我们相关的事情么?
John Vlissides :我可以送给你一篇文章的草稿,它会告诉你我们是如何到一
起的。你可以发信到vlis@us.ibm.com 来索取这篇文章。…umlchina 建议我谈
谈Erich Gamma —好的,当然-Erich 来自瑞士,但他看起来象个意大利人。在
http://www.research.ibm.com/designpatterns/pubs/ddj-eip-award.htm 有
他的一张照片(当时我们还比较年轻)。请看说明(我是左起第三个)…哦,
lovelybug28 指出我是左起第四个,我真笨!(谢谢lovelybug28 )也许这是
我无意中说出的心里话——我希望成为Erich !--lovelybug28 :对不起,:
对不起,:对不起,:对不起,John ,私人问题:,私人问题:,私人问题:
,私人问题:9.11 那天你在纽约吗,是否离世贸中心很近?那天你在纽约吗,
是否离世贸中心很近?那天你在纽约吗,是否离世贸中心很近?那天你在纽约
吗,是否离世贸中心很近?
John Vlissides :是的,听到消息的时候,我正在公司的停车场,距离大约30 英里。
Paofan: 你是否碰到过你是否碰到过你是否碰到过你是否碰到过Chirstopher Alexander ?
John Vlissides :我在OOPSLA '96 上碰到过他。
英文记录:http://www.umlchina.com/Chat/vlissides.htm
 
[red]哇,太多了,我得慢慢看。[:D][/red]
 
谢谢VRGL;
 
花了我20分钟来看。
 
接受答案了.
 
顶部