叙说程序猿眼中的人文世界,分享的主题如下:

 

程序那点事:面向对象统一建模语言UML的发展历史

程序猿人生我与面向对象科学家Iva Jacobson的一次Tea-Talk

程序猿人生Booch眼中的云图

开脑洞:科学的成果里,容不下也不该留下个人的痕迹!

来点人文:中国首次统一文字的历史----“车同轨,书同文”

有趣的HOOKs:

第一个面向对象的编程语言

魏中朝:ORACLE中国第一代领头羊

与James Rumbaugh面对面




程序那点事:面向对象统一建模语言UML的发展历史


面向对象的统一建模语言UML(Unified Modeling Language)的出现就像是当年秦始皇一统六国,结束战国时期七国混战那样,结束了面向对象方法论的百家齐放,各领风骚的局面。而这一对于面向对象领域来说称得上是“里程碑”出现的UML,并非出自一人之手,却是三位当时世界上最为著名的面向对象技术科学家(Rational公司管他们叫Fellow)Grady Booch、James Rumbaugh和Iva Jacobson共同发起的,在Booch方法、OMT方法和OOSE方法的基础上,汲取其它面向对象方法的优点,广泛征求意见,几经修改而完成的。
面向对象技术领域是先出现了面向对象的编程语言后,方法学家们才开始尝试用不同的方法来进行分析和设计的,也就是说先有了面向对象语言OOP,才开始研究面向对象分析OOA和面向对象设计OOD的。
面向对象的“方法战(Method War)"伴随着1989年到1994年之间,面向对象的方法从10种增加到50种以上慢慢地展开了领域争夺战的帷幕,谁都希望逐鹿中原,独执牛耳。方法的提出者们都声称自己的方法最为牛掰,技术人员的那种自信我们都是懂的。回顾历史还值得一提的面向对象方法主要有:

+ 1988年 Shlaer/Mellor OOSA(Object-oriented Systems Analysis)

+ 1990年 Rebecca Wirfs-Brock 职责驱动CRC卡片法(Responsibility-Driven CRC-cards)

+ 1991年 Peter Coad/Edward Yourdon OOA/OOD

+ 1991年 Grady Booch  Booch方法

+ 1991年 James Rumbaugh OMT(Object Modeling Technique)

+ 1992年 Ivar Jacobson OOSE(Object-oriented Software Engineering)


当然,客观地看,每一种方法自身都是完备的,自成一个体系的,当然自然也都是各有优点和缺点。九十年代开始应该是面向对象方法发展的"大年”,可是这么众多的方法和语言对于用户来说要区分出来差别还是要求很高的,关键是就像战国时期各国的文字不统一那样,严重地影响着人们的交流,也极大地妨碍了面向对象技术的发展。

面向对象建模语言最为关键的一个转折点在1994年,那一年已经服务于Rational软件(美国)公司的Grady Booch和离开GE的James Rumbaugh在Rational公司会合了。


Rational公司这家于1997年被太平洋技术软件公司(PTS)(魏中朝任总经理)引入中国,准确的说,是1997年美国才允许Rational软件进入中国(之前都是禁运的),本人有幸成为第一任技术总监,我一直十分敬重这位太平洋技术软件的魏先生,因为很多历史上和今天都很重要的软件进入中国都与他有直接的关系和渊源,包括大家熟悉Oracle、Sybase、Borland C、BO(Business Object)、MapInfo桌面地理信息系统软件等等,而当年的MapInfo团队在公司内部创业,成功孵化出来了在线地图服务“图行天下GO2MAP”,并于2005年4月被搜狐收购,搜狐把图行天下地图服务整合到搜狗中,于是搜狗地图频道在05年5月底正式面世。谈到与搜狐的渊源,Go2map创始人欧阳林回忆:“很早前有一句话叫‘出门靠地图,上网找搜狐’,没想到成就了日后的这段姻缘。”2003年2月,IBM以21亿美元完成了对Rational软件公司的收购,Rational软件正式列入IBM旗下。


回到1994年,Booch和Rumbaugh开始拉开了统一建模语言UML(Unified Modeling Language)的创立工作。初期,他们将Booch93方法和OMT-2方法统一起来,提出了“统一方法”(Unified Method,UM)0.8版本(草案),并于1995年10月份发布出来。同年秋天,Rational软件并购了Iva Jacobson 所在的Objecotry AB公司,至此Jacobson携OOSE方法正式加入,形成了UML历史上重要的三人组合。在将OOSE与之前的UM0.8整合后,1996年6月和10月分别发布了两个新的版本并将UM重新命名为UML,即UML 0.9和UML 0.91。


1996年之后其实面临的挑战是如何将学术的研究成果UML0.91推向市场并完成商用。当年的UML的套路是这样子的,首先吸引了大量的UML开发者,形成了“UML伙伴组织”,在程序猿中培养广泛的群众基础,同时也是一个打磨成果的过程,吸收程序猿们的各种反馈和建议,持续完善成果。而“UML伙伴组织”中同时吸收机构用户,到1996年10月,UML建模语言就得到了近700家公司的支持,包括业界知名企业,包括DEC、HP、IBM、Microsoft、Oracle、Unisys、MCI System等等,形成了事实上的“黄袍加身”的民间领袖地位,到1996年年底,顺势推出了UML1.0版本,那时UML已稳占面向对象技术市场份额的85%,成为可视化建模语言事实上的工业标准。

1997年1月正式向面向对象的官方组织OMT组织(Object Management Group 对象管理组织)提出初步的提案申请,到1997年底的时候OMG组织正式采纳UML1.1作为基于面向对象技术的标准建模语言!UML 1.1和UML 2.0是UML历史上两个具有里程碑意义的版本,UML 1.1是OMG正式发布的第一个标准版本,2005年发布的UML 2.0是目前最成熟、稳定的UML版本。


统一建模语言UML中折射出的人性光辉_第1张图片


程序猿人生:我与面向对象科学家Iva Jacobson的一次Tea-Talk


记得那还是我刚刚从部队转业加入太平洋技术软件PTS的不久,大约1998年,因为PTS作为Rational公司中国的唯一代理,作为OOSE的发明人,UML的共同创建人,Iva Jacobson先生专程来了一次北京,那时的Jacobson应该已经接近60岁的样子,一个很儒雅的老先生。我作为技术总监负责接待老先生,在一次喝咖啡的间歇闲聊中,我就冒昧地问了一个问题,其实也是我心里一直很好奇的,”您的公司是被Rational收购了,您还得从瑞士跑到美国,而且进入Rational后OOSE也被并入UML中了,您会不会觉得有些失落呢?“ Jacobson沉静了一小会,然后回答我:”科学没有国界,但科学家有自己的祖国!“ 我既从中听到了老先生对科学的态度,也能够感受到一种发自内心的淡淡的遗憾。

现在想写点东西的时候,才发现我并没有和Jacobson留影,多少有些遗憾,但是那也是符合当时我的状况,心思基本上全在技术上了,加之那个年代还是爱立信摩托罗拉手机最为时髦的,人们也没有条件自拍。


程序猿人生:Booch眼中的云图


熟悉Booch93方法的都应该了解,在Booch93中云图是用于代表面向对象的类的,也是Booch最为得意的成果和Booch93的一个标志,可是UML出现后,大家应该发现云图的表示已经消失了。为此,Rumbaugh有一次邀请Booch去看当时的一个叫《CLOUD(云)》的剧时,Rumbaugh善意的问起会不会因为UML中没有再出现云图而遗憾时,Booch笑一笑说,”云图还在啊,现在大家在画广域网的时候不还在用云图吗?!“ 我第一次读到这一个故事的时候,内心还是被触动了。


开脑洞:科学的成果里,容不下也不该留下个人的痕迹!


放在历史的角度来回顾统一建模语言UML的创立过程时,我总是十分的惊讶和崇敬三位科学家的格局和品格。三位在当时面向对象”方法战争“中都很牛掰的大拿,其方法都是完备的,并且也都在世界TOP3之内,为了成就UML,尤其是为了使得UML更加简洁易用,我们可以想象得到,三位科学家一定都是具有自己个性特点的,他们需要放弃自己苦心研究的很多骄傲成果、放弃自己很多的创意和创造,这个过程产生的内心冲突和斗争,进而还要协同高效一致的工作,我觉得无疑是十分挑战的一件事情。常常在想,他们能够完成UML,一定是对科学的追求和热爱远远超越了个人的得失。

其实,在UML2.0版本的推出中,我们已经能够再次看到这种精神和品格的珍贵。UML纳入OMG组织后的好处是明显的,得到了更加有力地持续性的修订与改进,UML 2.0的修订一个很大的目标就是希望形成”一个精炼的核心和定义良好的外围或扩展机制“,换句话说就是为了简化UNL1.X是其中的一个目标,但是,实际的情况并不是如意的。在2004年12月《程序员》杂志采访James Rumbaugh时,当记者问及此事的时候,Rumbaugh是如此回复的:”这是一件非常令人失望的事情UML2.0并没有简化UML 1.X。我个人更倾向于 它能 变得简化一 些 , 其他的人加入了太多太多新的特性。我认为我们没有借这个机会对 UM L 进行简化实在是个错误。但是对于许多公开的标准来说,尤其是那些有非常多的人参与的标准,是很难让标准变得简单的。因为人人都希望往标准里加入自己需要的东西,想从里面去掉它们是很困难的。所以非常不幸的是UML2.0变得更加的复杂了。“

Grady Booch、James Rumbaugh和Iva Jacobson这三位老先生在做减法,而很多科学科技工作者往往为了因为是自己提出来的,排除异己,而做加法。科学的成果里,容不下也不该留下个人的痕迹!


来点人文:中国首次统一文字的历史----“车同轨,书同文”


春秋战国时期,诸侯割据,齐、楚、燕、韩、赵、魏、秦七国混战, 各国的汉字简繁不一、一字多形,沟通起来非常不方便。秦始皇灭六国统一中国后,就决定统一七国文字,也就是历史书上说的”书同文“。”书同文“奠定了汉字统一书写的基础,秦始皇下令以秦国的“小篆”作标准,统一全国文字。故小篆又名秦篆。


秦始皇统一文字的过程中有三位功臣值得一提。第一位就是提出“焚书坑儒”的秦国的丞相李斯,化大篆为小篆,并做《仓颉篇》作为小篆的范例。这是继《史籀篇》后又一小学课本范例。小篆的鼻祖,当属李斯。第二位著名的奸臣赵高,就是指鹿为马的那位,他不只是奸臣,还是一位博学多才的知识分子,时任中车府令,他创作了一篇《爰历篇》。第三位功臣,是秦朝的太史令胡毋敬,他创作了《博学篇》,胡毋是复姓,读作“胡无”。《仓颉篇》、《爰历篇》、《博学篇》合称“秦三苍”,奠定了“书同文”的基础。

秦始皇除了统一六国,统一文字外,还统一了货币、统一了度量衡和统一了车辙,也就是”车同轨“,规定车辆上两个轮子的距离一律改为六尺,使全国车轮的距离相同。


有趣的HOOKs


第一个面向对象的编程语言


目前公认的是在1967年由Dahl和Nygaard在挪威开发的Simula-67,这个语言的粉丝并不多,没有得到程序猿们的追捧,而在20世纪80年代早期出现的Smalltalk,在继承了Simula-67的很多概念后,得到了广泛的应用,而我们现在大多数人了解的C++是在80年代后期才出现的,当然还有其它的比如Objective C和Eiffel等。


魏中朝:ORACLE中国第一代领头羊


1989年,Oracle进入中国市场,成为第一家进入中国的软件企业,经过两年的努力,于1991年正式成立了北京独资的子公司——北京Oracle软件系统有限公司,即本文所指的Oracle中国公司。

魏中朝是当时Oracle中国的第一代领航人,任董事总经理职务。我也是在那一年加盟这家公司。十几年后,魏中朝似乎早已被人们所遗忘,在业界及众多媒体眼中,这个名字变得陌生。但他给Oracle中国所带来影响却是不可磨灭的。

在Oracle刚刚打入中国市场的时候,是魏中朝带领着一个由17人组成的团队,在当时这个科技并不怎么发达的国家里打拼天下。魏以独特的经营思路带领着Oracle中国一步一步向前奋进,开辟了金融、电信、电力、政府、航天等几大领域的市场,有效地提高了Oracle在中国的市场份额,团队也由原来的17人慢慢扩大到上百人的规模。

所以,在业界,魏中朝被誉为Oracle中国当之无愧的第一代领头羊。1993年,魏中朝由于战略方面与美国总部产生分歧而离开了Oracle中国。


与James Rumbaugh面对面

来源:2004年12月《程序员》P43

正在11月中IBM2004开发者大会上,UML创始人之一JamesRumbaugh作了题为“Raising the Level ofDevelopment:Models,Architectures,Programs(MDA)”的主题演讲。会议期间本刊记者采访了James Rumbaugh,本文是采访的全文。