Danny的接棒和决心
Delphi 4的仓促推出在市场上受到冷遇,销量一落千丈。原本寄望它能够再获佳绩让Delphi的总销售量再冲新高,并且为Borland带来更多的营收。结果却大失所望,品质不好的产品仍然得面对市场严峻的考验。在Delphi 4遭受了前所未有的失败、接着C++Builder 4也铩羽而归之后,Borland又开始走下坡路了。Borland好不容易通过Delphi带来的希望却在错误的决策下被牺牲了。在1999年4月Delbert终于被Borland的董事会扫地出门,结束了在Borland的日子。我认为,Delbert在Borland将近3年的时间里,对Borland造成了许多的伤害,其好大喜功的管理方式对Borland的产品线更几乎造成了无法弥补的损失,是我所认为的最糟糕的Borland CEO。更离谱的是在 Borland的董事会开除Delbert后,他居然还以合约未满为由,要求Borland支付额外的遣散费,大捞了一票,真是人心不古,工作做得如此差劲却还有脸提这种要求,在最后一刻还要敲榨Borland一回。
在Delphi 4的伤害造成之后,Delphi R&D小组要面对的是如何收拾残局,并且想办法解决造成的问题。在这个时候Chuck由于把精力放在Borland另外的产品和技术的研发上,因此无法花太多的时间关注Delphi 5。此时,在Delphi研发上一向表现良好的Danny Thorpe便逐渐挑起了Delphi复兴的重担。
Danny在Delphi 2之后便有大将之风,开始负责Delphi最低阶的编译器以及RTL(Run-Time Library)的工作。Danny是从美国San Diego大学毕业的,主修的就是编译器技术。在Delphi 4之后,Danny几乎成了RAD部门主要的Architect,负责了RAD大部分产品的研发工作,甚至又成为Microsoft再次挖角的对象。
对于Danny来说,如何重塑Delphi 5,让它从失利中重新站起、找回昔日的光荣便是一个非常重要的工作。在Delbert Yocam于1999年离开Borland之后不久,现任的Borland CEO Dale Fuller先生便被Borland邀请加盟成为Borland的代理CEO,希望能够通过Dale Fuller的经验挽救沉沦中的Borland。在Dale入主Borland之后,首先展开的工作除了整顿Delbert在位时形成的庞大无用的行销部门之外,在产品线方面则是看好Linux的未来,要求Borland的RAD部门必须开发出Linux下的RAD工具。
在Danny接掌了Delphi主要的开发责任之后,又和Chuck一起再次形成的RAD精英份子的中坚。Chuck主要负责新技术和新构想的实验,而Danny则是负责困难的编译技术以及RTL。由于Turbo/Borland Pascal以及Delphi的

肩负重任的Danny Thorpe
最佳化编译器都是Anders Hejlsberg撰写的,因此当Anders离开Borland之后几乎没有人能够维护编译器程序代码。Anders都是使用汇编语言(Assembly)撰写复杂的编译器程序代码,而且其品质是如此之好,不但连Chuck Jazdzewski都赞不绝口,而且几乎没有工程师敢随便改动这些程序代码。
因此在Anders Hejlsberg离开之后,Borland立刻采取了数项行动希望能够解决这个“烫手山芋”。他们做的第一件事情是从Delphi的编译器抽离大部分最佳化的工作。因为要在Anders的程序代码中再继续加入最佳化程序代码是件很没有把握的事情。另外,由于当时Borland已经决定开发C++Builder,而C++Builder也需要一个最佳化的编译器,因此,如果能够提供一个共同的后端最佳化编译器,那么Delphi和C++Builder不仅都可以使用,还能够解决没有人敢修改Delphi编译器的问题。这个决定就是后来Delphi 3以及C++Builder 2推出之后Borland宣称的“Delphi和C++Builder 可使用共同的后端最佳化编译器”,这个工作当时是交由Borland编译器小组的Lee他们负责的。
不过共同的最佳化编译器只解决了一半的问题,对于Object Pascal语言本身的改善仍然需要能够修改Anders撰写的编译器,那么到底谁能够进行这项工作呢?最后任务交给了另外一个软件天才——Danny Thorpe了。Danny在接手Delphi的开发大任之后,就开始为已经停止开发一段时间的Object Pascal语言本身进行演进的工作。此外,Danny也开始对Delphi底层的RTL进行改造,并且为Delphi的编译器加入更多最佳化的功能。
Danny之所以同时在Object Pascal程序语言、Delphi RTL以及Delphi编译器进行渐进的改善工作,是有许多因素影响的。首先,当然是为了接下Anders留下的工作,另外一个原因是在Delphi 3之后,必须再次对于COM的支持进行强化。最后,是为了在Delphi 4之后,准备把Delphi移植到Linux上。事实上,Borland在Delphi的R&D小组中曾经一度准备把Delphi和C++Builder移植到SUN的作业平台上,这是为了因应Borland和SUN合并进行的准备工作。甚至Delphi的R&D小组认为,既然要开发跨平台的Delphi和C++Builder,那么不如把Apple的Macintosh操作系统也纳入考虑范围。该小组在当时甚至已经列出了开发SUN和Macintosh平台的时间表,但是稍后随着和SUN合并计划的破灭以及Delbert的下台,这个跨平台的Delphi计划也就暂停了。一直等到Dale Fuller上台强力要求开发Linux平台的RAD工具之后,小组才再次激活跨平台的计划。
为了支持更好的COM开发能力,Danny修改了Delphi的编译器,直接支持COM接口的引用计数值(Reference Count)的维护工作,以免除开发者繁杂的程序代码,提供了类似Visual Basic的能力。同时Danny也在Object Pascal程序语言本身中加入接口(Interface)的机制,让Object Pascal和Java一样对接口程序设计都提供First Class的支持。Danny并且更进一步,巧妙地结合COM的接口以及Object Pascal程序语言的接口,让Delphi的程序员更方便地使用和处理COM接口。Danny的这些努力,就体现在Delphi的使用者在Delphi 3之后逐渐在Object Pascal中看到的Interface机制。对于非常熟悉Delphi的读者来说,应该可以发现Delphi 1/2中Object Pascal变化的部分很少,但是从Delphi 3之后,每一新版的Delphi在Object Pascal程序语言本身都有进步,这些都是Danny所作的努力。
在RTL方面,Danny更是投注了大量的心血,第一步是去芜存菁。Delphi经过了三四年的发展,许多RTL中的程序代码不是过时,就是需要进行最佳化的调整。因此从Delphi 4开始,Danny便逐渐整理和改善Delphi的RTL,这方面的成果从Delphi 5之后便逐渐显露出来,Delphi的RTL不但在效率方面有了进步,更提供了愈来愈多以前版本所没有的功能。当然,Danny在Delphi RTL方面最大的贡献是改善RTL使之成为跨平台的基础。Danny维护后的Delphi RTL最后也成功地移植到了Linux平台上,并且克服了许多Windows以及Linux平台差异的困难。当然,Danny Thorpe和Chuck Jazdzewski是Kylix得以推出的最重要的功臣。为了解决Kylix在Linux平台上许多的技术问题,后来还引起了Linux开发者社群围攻Danny Thorpe的精彩大戏,最后导致Danny Thorpe不再管Kylix的开发而全力投入.NET的阵营,这当然又是另外一个极为精彩的故事了。
对于Danny来说,只有一个最重要的目标,那就是重新擦亮Delphi使之再放光芒,让Delphi 4的失败能够在下一个版本中一雪前耻,并且把Delphi开发成最棒的RAD开发工具。Danny的决心也让Delphi R&D小组再次安定了军心,在历经了Delbert错误的决策、Microsoft大幅的挖角、Delphi 4的失利之后,Danny带领一些新的Borland工程师展开了艰苦的工作。
Danny的杰出表现早已深获许多人的赞扬和肯定,也充分地展现了继Anders Hejlsberg之后,Borland另外值得视为珍宝的技术天才的风采。现在,Danny不但早已独当一面,更成为了Borland .NET的Architect,负责综合整理Borland未来在.NET上的开发工具。在2002年Borland的Conference上,Danny正式接受由Borland的CEO Dale Fuller先生颁发的Borland President Awards大奖,这是继Chuck Jazdzewski、Blake Stone之后,Borland第3个获得最高殊荣的R&D人员。在Danny接受大奖之时,现场所有的BorCon参加人员都起立热烈鼓掌,看来,即使在Borland没有颁发这奖项之前,Danny早已被所有了解他的贡献的人所肯定和钦佩,颁奖只是一个迟来的仪式而已。

2002年BorCon,Danny Thorpe终于获得了
Borland President’s Awards大奖
我曾在1999年费城的BorCon见到了Danny,并且在澳洲举行的BorCon和他有简短的对话。Danny的身材不算高大,瘦瘦的,但是非常温文尔雅。和Danny谈话是一件很舒服的事情,因为你可以问他许多技术的问题,只要他有时间,会很乐意和你讨论的。
恭喜Danny!Borland又为PC软件界培养了一个天才和明星。我相信Danny Thorpe也将成为许多开发者学习的榜样,当然也包括我在内。
和对Anders Hejlsberg一样,最后让我也整理一下Danny Thorpe对于Borland和产品线作出的重要贡献和获得的殊荣,让读者也能对这位值得尊敬的软件人有更多了解:
v 负责开发Delphi RTL/编译器困难的工作
v 改善Object Pascal程序语言,加入现代语言元素——Interface
v 开发出Kylix并且解决Linux平台的臭虫
v 1999年被Borland内部评选为全Borland最重要的50人之一, 是Borland不可缺少的人才
v 2001年荣升Borland .NET Architect
v 负责开发Borland .NET下一代整合开发工具——Galileo
v 和Chuck Jazdzewski共同开发代号为Charlotte的下一代
Web Service程序语言
v 2002年于BorCon获Borland President’s Awards大奖殊荣
Borland孕育了众多的伟大软件工程师,当然有一些人我无缘认识,因此对于这些人,我只能说是“久仰大名”,例如Windows平台的系统和除错大师Matt Pietrek。但是有一些人却是我认识、甚至有过对话的。这些人每一个都令我折服,也让我向往这些伟大软件工程师到达的境界,他们是:
v Borland C/C++、JBuilder的Framework大将Carl Quinn
v 不世出的软件天才Anders Hejlsberg
v Borland首席科学家Chuck Jazdzewski
v Borland RAD核心支柱Danny Thorpe
当然,还有本书稍后会叙及的Java天才,Mr. Blake Stone。






