畅销25年,销售百万册,这本神书和背后的软件大神

1997年,在从瑞士苏黎世飞往美国亚特兰大的飞机上,长途的旅行让大家都疲惫不堪。

可是却有一对儿"好基友"兴奋异常,两个人都是程序员,他们要去参加在亚特兰大举办的OOPSLA大会,OOPSLA是一个和面向对象编程有关的会议,每年一届,影响力颇大,随后还会屡次出现。

甲:兄弟,旅途漫漫,无心睡眠,要不搞点儿事情?

乙:好啊,你有什么建议?

甲:你听说过Java没有,最近好像要火起来了。

乙:知道啊,大有盖过C++和Smalltalk之势。

甲:我之前用Smalltalk写过一个自动化的单元测试工具,叫SUnit,要不我们一起整个Java版本?

乙:没问题,我很擅长设计模式,我们可以试试"用模式来生成架构"。

两个超级程序员打开笔记本,卷起袖子,在万米高空来了一次结对编程,很快,一个叫JUnit的工具就新鲜出炉了。

JUnit一经推出就以火箭般的速度蹿升,迅速成为Java必备的工具,成为极限编程,TDD的有力支撑。

扫描二维码关注公众号,回复: 10213585 查看本文章

飞机上的对话当然是我杜撰的, 这两位在飞机上结对编程的程序员,一个是极限编程创始人,TDD的倡导者Kent Beck,另外一位就是我们故事的主人公Erich Gamma。

1

这一年Erich Gamma 36岁,已经成为软件开发的一代宗师,不是因为JUnit,那只是一个顺手写的小工具而已。

Erich Gamma的江湖地位是由他和另外三人合著的一本书奠定的。书名很长,叫做《设计模式:可复用面向对象软件的基础》。

搞软件开发的人都知道这本书,很多人还买过,但是看没看完就不一定了,也许就在你的某个箱底、桌子腿儿,显示器下压着。

这本书各种语言的版本的销量达到了百万册级别,考虑到它是一本技术书,并且出名的艰涩难懂,这是一个非常恐怖的数字。连这本书的作者之一Richard Helm说:最让我吃惊的是几十年后它还卖得这么好!

2

Erich Gamma 是瑞士人, 毕业于苏黎世大学,在那里获得了计算机科学的博士学位,这在程序员中是不多见的。

1984年,Erich Gamma和同事设计了一个叫ET的框架,用于在Unix下开发GUI程序,虽然ET在项目中有成功的应用,但是Erich 他们认为ET的设计太过僵化,尤其是用面向对象的方式思考的时候。

到了1988年他们做了重新的设计,用C++重新开发,新框架叫做ET++

这是使用ET++开发的程序,嗯,界面还是比较丑陋的。

虽然界面很丑,但是我严重怀疑这个框架对Erich Gamma思考设计模式,以及以后领导着开发Eclipse等IDE有着深远的影响

不信你翻看《设计模式》这本书,第二章的研究案例就是一个图形化的文本编辑器:文档结构,格式化,多窗口,滚动条等等。其实OOP应用得最成功的领域就是图形系统,因为那里的一些概念可以和OOP中的继承,组合,多态等做到完美的结合。

Erich他们还到OOPSLA上发了一篇论文,讲述了ET++所做出的重要创新,你看有了成果以后要注意出去到各个会议去宣传啊,这样才能认识更多的牛人。

Erich 在OOPSA 1990年的会议上遇到了Richard Helm博士,Richard Helm当时在IBM的Waston开发中心,也在研究面向对象的设计和复用,两人一见如故,就双方共同关心的话题深入地交换了意见,一致决定将设计模式进行到底。

后来,同在IBM Waston研究中心的John Vlissides博士,以及伊利诺大学的Ralph Johnson博士也加入进来,四人帮(Gang of Four)组队成功!

在1994年波特兰的OOPSLA 大会上, 《设计模式》这本OOP领域圣经式的著作正式问世,它的热度一直持续到今天,成为难以逾越的经典。光是看看有很少周边书籍就知道设计模式有多热门了:《重构与模式》、《设计模式精解》,《Head First 设计模式》,《Java与模式》,《JavaScript设计模式》......

3

上世纪90年代中期,Java借着互联网的东风开始崛起,成功地找到了自己的根据地:服务器端开发。

但是这个时候的Java却没有像Visual Studio, Delphi这样的IDE,很多人直接用编辑器来写程序,我记得我还用过一个非常简陋的IDE叫jCreator。

Java的拥有者Sun公司在2000年推出了NetBeans,可是很不好用,当然无论什么工具都会有一批忠实的拥趸,前几天我还看到有人在twitter上庆祝NetBeans 20岁生日快乐,真是挺有趣的。

Java IDE这块蛮荒之地率先被Borland征服, 天才程序员Blake Stone 帮助JBuilder走上了IDE的霸主之路,市场占有率超过50%。

JBuilder 3.5版本是一个纯粹由Java开发的IDE,这在当时挺让人震撼的!

我们的主人公Erich Gamma在干嘛呢?

他还在瑞士的苏黎世,1996年加入了一家叫OTI的公司,领导着OTI在苏黎世的软件开发中心。OTI由于在Smalltalk 上的优势,被IBM看重而收购, Erich Gamma也终于成了IBM的一员,和四人帮中的另外两位汇合了!

业界大鳄IBM自然也看到了Java 的未来,开始从Smalltalk向Java转型,IBM原来就有一套IDE 叫做VisualAge, 有Smalltalk版, C/C++版,甚至还有COBOL版, 现在要搞一个VisualAge for Java了。

但是VisaulAge是用Smalltalk编写的,需要Smalltalk虚拟机来运行,现在要写个Java IDE,还得附带一个Java虚拟机,这就太过分了。

IBM也走上了JBuilder 的道路,用Java来开发一个叫做VisualAge Micro Edition的IDE,内置IBM自家的Java虚拟机J9, 其中UI Framework部分就是由Erich Gamma领导的苏黎世团队开发的。

Erich利用自己在设计模式领域的经验,把这个UI Framework做得很出色,尤其值得一提的是,他力主抛弃很差劲的Swing, 转向开发一套新的UI组件,即SWT。

后来的故事大家就知道了,IBM把这一系列工作开源,变成了Eclipse。Erich Gamma 成为了Eclipse Java Development Tool (JDT)的负责人,实际上,Eclipse虽然也支持C/C++, Smalltalk,Python等其他语言,但主要用户还是Java程序员。

免费的Eclipse一经推出,就迅速攻城略地,把其他IDE打得溃不成军,最后连JBuilder也迁移到了Eclipse平台上。

如果你看过Eclipse的代码,就能看到设计模式在其中大量应用,为插件体系提供了有力支持,背后还有成千上万的单元测试来支持,是OOP设计和自动化测试的精彩案例,Erich在其中扮演了核心设计者的角色。

4

Eclipse之后,Erich 在IBM又领导着开发了Jazz平台,把需求、设计、开发给连接起来,这个工具在IBM内部被广泛使用,在外界没有形成像Eclipse那样的影响力。

2011年,Erich Gamma 50岁, 不知道是在IBM呆得不爽,或者是微软的诱惑太大,Erich 跳槽去了微软,加入Visual Studio Team ,领导着微软在苏黎世的开发团队。  

写到这里不由得感慨一下:牛人就是牛人,根本不用挪窝,公司就会给你配置团队。

Erich Gamma离开IBM以后,我就觉得Eclipse要完,因为灵魂人物走了,果然后面几年都没什么让人眼前一亮的东西,最后被JetBrains的IDEA超越。

Erich 在微软做的第一项工作就是Monaco,一个用JavaScript实现的编辑器,在浏览器中运行,可以看出Erich还没有离开他的老本行:编辑器和IDE,只不过编程语言从Smalltalk, C++, Java转向了JavaScript。

虽然Monaco编辑器在Visual Studio Online,Onedrive online 中广泛应用,但毕竟是内部项目的应用, 后来Erich 团队使用Electron把monaco编辑器包装了一下,变成了大名鼎鼎的VS Code。

VS Code 2015年推出,4年以后,根据StackOverflow 2019年做的调查,它已经是世界上最流行的开发工具。

一个人这一辈子能搞出一个Eclipse就不得了了,可是Erich 居然还能再搞一个VS Code!实在是让人佩服,这真的需要深邃的洞察力和强悍的技术实力,非一般人可及。

VS Code为什么能这么牛呢?关键点就是Erich Gamma和他那帮苏黎世的老伙计们充分地吸取了Eclipse插件的教训,设计了进程隔离的模型,做了良好的抽象,详情可以看看这篇文章《VS Code为什么这么牛?

5

设计模式

JUnit

Eclipse

Jazz

VS Code

每一项单拎出来都可以在计算机历史上留名,而Erich Gamma 参与了全部的工作,他没有创造开发语言,几十年来致力于创造开发工具,然后用开发工具占领了世界!

 

1961年出生的Erich Gamma 已经59岁了,接下来他还会创造什么呢?让我们拭目以待!

往期精彩回顾

那些神一样的程序员:Bill Joy

有这么一位软件大神,他很少讨论高并发,海量用户......

那些神一样的程序员:高纳德·克努特

那些神一样的程序员:Unix的发明人

那些神一样的程序:Delphi,C#,TypeScript之父

我是一个线程

CPU阿甘

JavaScript:一个屌丝的逆袭

我是一个网卡

更多精彩文章:请点击《我写公众号这1460天

发布了456 篇原创文章 · 获赞 3134 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/coderising/article/details/104912533
今日推荐