听说传奇是用delphi 2007 编译传奇做的,真的吗

查看: 10969|回复: 246
国外改的传奇Delphi源码 支持刺客职业 天气系统
在线时间 小时
本人亲测,可以完美编译&&有图有真相。. o1 ^# z8 h1 p1 X, {
3 h+ y$ v, }, q3 S9 k1 u- G
本源码来自网络修改纯属学习研究以及个人爱好。N! h& E3 u9 |; y% Z* I7 Z3 @. X8 W5 r+ t
6 j7 p+ }, ^" V, H1 q
源码包含所有控件,DELPHI2007编译通过。. Q' F* g! t$ R1 G
下载地址里面包含完整资源客户端以及版本2 V, k+ d$ E$ U# X
1 ?8 h8 C6 u' U+ i
0.jpg (54.15 KB, 下载次数: 70)
02:45 上传
1.jpg (193.19 KB, 下载次数: 9)
02:45 上传
) B7 U4 J) J5 F0 r& P9 _# R
2.jpg (442.81 KB, 下载次数: 9)
02:45 上传
' p1 V$ D7 U+ C' T: F
3.jpg (388.05 KB, 下载次数: 8)
02:45 上传
. ~* [: M7 Y/ s/ v, L2 i
% T, y4 K0 ?( C# X
4.jpg (379.13 KB, 下载次数: 9)
02:45 上传
# u6 k, S) V! j2 p! G* R2 f
5 m6 f, {( _$ P! @/ v4 S* u
5.jpg (372.84 KB, 下载次数: 9)
02:45 上传
( I# m& s. ^3 H4 h
6.jpg (406 KB, 下载次数: 10)
02:45 上传
+ `3 }5 T/ Y8 n
6 @6 X/ ]&&P# ?3 ^2 U
7.jpg (365.68 KB, 下载次数: 9)
02:45 上传
8.jpg (393.17 KB, 下载次数: 9)
02:45 上传
游客,如果您要查看本帖隐藏内容请8 h' A+ z$ }4 ]& a3 i
. u&&D( [5 n% M! v6 {4 H
/ c8 t! T8 J, x# G, i' u
地址已更新&
在线时间 小时
谢谢楼主分享!
在线时间 小时
论坛里好像已经有了
在线时间 小时
图差不多呀
在线时间 小时
感谢分享。这个可以有。
在线时间 小时
全套资源一起弄出来嘛
在线时间 小时
瞧瞧看看看!!!
在线时间 小时
可以看看在在
在线时间 小时
国外改的传奇Delphi源码 支持刺客职业 天气系统
在线时间 小时
不错挺好适合用来开私服,
Powered by传奇Delphi被廉价甩卖(图)
作者:电脑报
传奇Delphi被廉价甩卖
  在开发工具领域,Borland公司一直是微软王朝的有力挑战者。然而,2008年5月,Borland公司以2300万美元的价格,将包括Delphi在内的曾经为自己创造辉煌的IDE业务出售给了另一家公司,这条新闻甚至没有引起美国主流IT媒体的关注。那么,被收购的Delphi等知名开发工具的未来将会怎样?会不会如同收购消息一样消失在人们的视野中?
  一个2300万美元的交易
  日,一条消息出现在Borland公司官方网站的新闻中,Borland正式宣布将CodeGear子公司出售给Embarcadero(易博龙)技术公司。
  CodeGear公司成立于日,是Borland的全资子公司,主要负责Borland的集成开发环境业务。
  虽然是一个成立仅两年的年轻公司,但是它旗下的产品对于大多数程序开发人员却具有传奇一样的崇高地位,这些产品包括JBuilder、Java开发工具、Delphi与C++Builder,还有刚刚研发出的PHP与Ruby的IDE开发工具。
  然而,这些著名的开发套件从此将不再属于Borland,一个传奇的时代结束了。
  集成开发环境
  集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,也就是集成了代码编写功能、分析功能、编译功能、Debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。
  其实早在两年前,当CodeGear公司还没有从Borland分离出去的时候,Borland首席执行官Tod Nielson就开始计划将IDE部门卖掉,理由是IDE部门遭受到来自微软和免费开放源代码产品的竞争,特别是来自Eclipse基金会的Java IDE,使得Borland的IDE营收比重不断下滑难以为继。
  Borland那时希望出售IDE业务能够让公司获得更多的资源,投入更多精力用在Borland新看好的应用程序生命周期管理ALM业务上。
  但当时Delphi和JBuilder等仍然散发着自己的光芒,虽然有许多买家都对Borland的IDE业务很有兴趣,但他们所提出的价格无法让Borland满意。于是在历经半年寻找买主未果后,Borland决定将IDE部门独立出去,成立专门的子公司并命名为CodeGear。
  其实这一举动本身仍然是一种待价而沽的行为,因为独立出去的CodeGear公司,除了财务仍然和Borland挂钩外,其它所有的运营都与Borland彻底分开了。这也就意味着无论任何时间,一旦有其他公司表示出购买意向,Borland都能够将这块业务干净利索地全盘出售。
  而两年之后的今天,那个曾经让无数人学会编程的Turb C,那个让无数程序员着迷于Windows编程的Delphi,最终被Borland甩卖了。2300万美元成为了CodeGear最终的价值——这个价钱在美国甚至不足以拍摄一部二流电影,Borland像扔掉一块烫手的山芋一样甩卖掉了这个曾经为它创造辉煌的IDE业务。
  Borland的失策
  廉价甩卖IDE业务,对Borland公司而言,可以说是一种莫大的讽刺,也可以说是一个失败的企业战略,让我们来回顾一下曾经的辉煌是如何演变为现在的无奈。
  上世纪80年代,Borland凭借Turbo C、Turbo Pascal、SideKick几款产品雄霸计算机编译工具和应用软件市场,并积累下庞大的资金,瞬间爆发的胜利让Borland管理层变得不可一世的自大。
  1991年,Borland斥资4亿美元并购了当时已经快速走下坡路的Ashton-Tate公司,尽管当时的华尔街分析师都认为Ashton-Tate根本不值这个价。Borland希望通过Ashton-Tate的dBase全面占领PC桌面数据库市场,与比尔盖茨一争高下,以成为PC软件界的霸主。
  然而,Ashton-Tate被Borland并购后,将近10年的辉煌也随之消逝。Ashton-Tate原本很有机会成为今日的Oracle,继续占据PC数据库市场龙头的地位,但Windows和FoxPro的出现改变了这一切。由于当时dBase并没有Windows的版本,原本DOS下dBase程序员急需一个Windows下的dBase开发工具,因此当能够兼容dBase格式的FoxPro For Windows推出之后,立刻吸引了许多原先dBase Ⅲ/dBase Ⅲ Plus的使用者。
  但Borland自我良好的感觉并没有察觉市场的变化,直到微软连续推出两个版本的FoxPro For Windows之后,Borland才终于发现dBase的使用者正在流失。
  虽然后来Borland推出了Windows下的dBase,但是它再也无力改变市场了,此时市场的发展出现了变化,PC数据库市场已经开始走入关系数据库的时代,桌面型数据库的市场已经开始逐渐萎缩且出现下滑的迹象。直到日,Borland在dBase已经完全没落之后,才迫不得已将花费数亿美元并购来的dBase廉价售出。
  虽然Delphi和JBuilder的成功帮助Borland挽回了一些损失,但微软.NET的推出的又打乱了Borland的阵脚,它开始为是否跟随微软进入.NET新平台而犹豫不决,因为Borland当时想要趁Linux的热潮改走跨平台的方向,而不是在Windows平台上辛苦地和已经成为巨头的微软竞争。
  而随着软件利润整体趋于下降,Borland必须想办法维持公司的成长,开辟新的产品线。从2000年开始,Borland推出并且扩充了Kylix产品,进军Linux编程市场。不过,随着Linux在年从爆炸性成长逐渐回归成正常的发展之后,Borland很快发现,光靠Java和Linux市场将无法获得足够的利润。
  所有知名的信息研究机构的分析都指出.NET在未来将和Java一起占有相当大的市场后,Borland才知道是不可以失去.NET市场的。于是,Borland匆匆地投入了.NET产品的研发,但是此时的天下已经是微软独霸一方了,这些失败的行动让Borland投注了过多的资源,为自己的传奇终结埋下了最终的致命隐患。
  回首今天,如果不是Borland犯了过多的错误以及失去了许多宝贵的机会,否则很有可能是主宰软件市场的另一个霸主,可以和微软抗衡,并且站稳软件大公司的地位。但是Borland就这样在盲目自大中失去了自己宝贵的机会。
  Delphi能否卷土重来
  此次收购CodeGear的易博龙技术公司成立于1993年,总部设在美国旧金山,它是一家为企业提供专业级数据库工具,用于设计、开发、管理数据库以及其中的数据的公司,它目前在全世界有12000多家企业客户,在“财富100强”中也有90多家是它的客户。公司的旗舰数据库工具包括ER/Studio、DBArtisan、Rapid SQL及Change Manager,年营收6000万美元。
  这项收购对于易博龙公司的好处是不言而喻的,首先CodeGear旗下的开发工具拥有忠实的开发者和技术社区,特别是那些追随Delphi、JBuilder和C++Builder多年且数量庞大的狂热粉丝们。这些开发者多数都是为金融服务、电信、制造、医疗和政府等从事数据库相关的开发工作。对于易博龙来说,如果能够将这些开发人员成功转换为易博龙的忠实用户,那么对于它的数据库软件销售来说,好处自然是不言而喻的。
  此外,由于应用程序不同,数据库平台也多种多样,许多企业在生产率和资源方面面临越来越多的问题。但如果易博龙能够成功地将CodeGear的全部产品整合到自己现有的产品线中,那么它就能够为自己的客户提供一套集成的产品组合,用于设计、开发、管理和优化异质应用程序及其数据库。
  CodeGear的全球营销渠道也非常健全,并购能够让易博龙自己的产品迅速进入全球数百万软件开发人员、设计师、独立软件提供商和数据库专业人士的视线之内。已经有分析家预测,如果并购消化顺利,那么将会成就一个年收入超过1亿美元,在全球拥有超过1500万用户,拥有高达10%的年利润增长率的全球最大的平台独立软件供应商。
  不过此次并购背后的资本推手也值得我们注意,因为易博龙的东家Thoma Cressey Bravo公司是一家相当知名的私人股权投资公司。这家公司在“行业合并”或“发展和收购”上有相当丰富的实战经验,它目前通过一系列的私人股权基金,管理近20亿美元的股权资本。在软件行业,这家公司已完成34次收购,其年收入总额超过5亿美元。而此次并购就是在这家公司的授意下完成的。
  因此,在这场资本游戏中,Delphi、JBuilder等这些我们熟知的软件未来的命运究竟如何,依然未知。毕竟利益和财富才是投资公司最关注的结果,至于技术的发展,对它们而言,跟其它他任何创造财富的工具没有什么区别。(苗得雨)
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看科技资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
11月7日,坚果Pro 2正式发布,并在当晚现货开卖。今天科技评测第一人王自如分享了它对...
现在一加5T手机的消息已经基本可以确认,在海外将会于11月16日发布,而国内要等到11月...
借着全面屏的这波风潮,华为旗下准备多款新机,涵盖高中低三个档次,力求吸引到更多的...
监管文件显示,科斯罗萨西周四通知纽约时报公司董事会,他将因为出任Uber的新职位而卸...
北京时间10月30日早间消息,Uber上周五宣布任命一名新的首席法务官,帮助该公司应对诸...
一名美国法官已责令进行一项新的审判,目的是判定三星应因其抄袭苹果公司iPhone外观设...
广受好评的讯飞输入法今天在安卓平台升级为全新8.0.5930版本,重点改进语音识别技术,...
如今腾讯正在极力推广TIM,大有取代QQ的架势,不过说起不同平台的版本,QQ绝对是数不...
64位处理器已经彻底普及,而操作系统们也在陆续放弃32位,比如苹果iOS,比如Ubuntu,...
小米枪战作为一款大逃杀类吃鸡手游,一开始跳伞的地点要好好进行选择,主要要考虑到前......
腾讯昨天悄悄上线了一个网页,网页中还有倒计时,表示会在11月8号公布吃鸡手游具体消......
阴阳师荒骷髅11月8日来袭,作为一个全新的逢魔之时精英BOSS,我的战场就是你的坟场。......
《绝地求生大逃杀》中的四排是需要有一些战术策略的,这样团队合作才能发挥出较好的效......
Copyright (C)
All rights reserved.
请选择一张图片分享
要转发到新浪微博,请
要转发到QQ空间,请传奇的开始--Delphi
"是惊世之作的Delphi让Borland重新站了起来,没有当初的Delphi,就没有今日的Borland!"
"是Turbo Pascal诞生了Borland,但却是Object Pascal给予了Borland重生的机会!"
创造传奇故事的主角--Delphi
没有人会知道在两年后Borland C/C++会遭遇到这么大的失败,也没有人会预料到Borland又会再次因为Pascal而东山再起。Borland奋斗史精彩的地方就在于每当似乎要不支倒地之际,Borland的R&D人员就会创造出一个明星级的产品来拯救Borland。在其他和Microsoft对抗的软件公司纷纷消失的时候,Borland却一次又一次地站了起来。"打不死的勇者"这句话贴切地形容了Borland的韧性。Borland靠Pascal起家,通过C/C++绽放光芒,进而达到了巅峰的状态,随后又再次靠着Pascal浴火重生。Borland这个从C/C++跌倒,再通过明星工具Delphi重回战场的过程可以说是惊心动魄,其中更牵涉到了Borland两位创始人Philippe Kahn以及Anders Hejlsberg相继离开Borland的密闻,也激活了Borland逐渐转型的历史轮轴。对于Borland来说,这段发展史可以算是非常关键的里程碑,更重要的是,Delphi的崛起也在软件工具业界产生了巨大的影响。Delphi不但激活了Windows平台上RAD战争的序幕,开启了Windows平台主从架构的改变,同时也对组件技术做出了巨大的贡献。直到现在,Delphi创造的组件技术仍然深深地影响了JavaBeans以及.NET的组件思想和技术,这在稍后的内文中读者可以逐渐地了解。而故事的起源便在1993年左右&&
Delphi的发展起源
当Borland以Turbo Pascal获得了成功,并且令Charles Petzold等人跌破眼镜之后,到了年的Borland Pascal 7.x,Borland似乎已经把传统的Pascal开发工具发展到了极限,再往下还能做什么呢?Borland Pascal在销售了数百万套之后,程序语言的焦点已经从Pascal转移到了C/C++,Borland Pascal无法继续快速成长,进而转入了递减的状况,Borland必须做些新的东西才能够延续这条产品线。
当时Borland Pascal产品的Architect,即Anders Hejlsberg,眼看Microsoft Visual Basic的成功,觉得当时Visual Basic是比较初级的开发工具,是一个学习Windows程序设计的好工具,但是尚无开发真正应用系统的能力。因此,Anders和Borland Pascal的小组决定展开一个规模前所未有的项目计划,这个开发工具项目在一开始便设定了数个目标,希望能够达成并且超越Visual Basic。这些初始的目标是:
延续Borland Pascal的传统,提供一个快速编译的开发环境
Borland/Turbo Pascal的高明之处便是由Anders使用汇编语言撰写的Pascal编译器不但编译快速,而且能够产出极为有效率的机器码。当时的Visual Basic只是解译器(Interpreter),无法产生真正的执行机器码,因此在这一方面Borland决定要远远地超过VB,但是Borland的挑战是要开发出一个编译速度能够媲美解译器速度的新一代编译器。
Anders另外一个重要的决定便是改善Borland Pascal程序语言,让这个新的开发工具程序语言具备面向对象的功能。这在当时是非常重要的决定,因为不但需要大幅修改编译器,也正式将Borland Pascal超越Pascal之父对Pascal定义的结构,让Pascal拥有现代语言最新的功能。虽然这个决定有很大的因素是因为Borland决定通过面向对象的方式建立新一代的Framework和组件架构,因此需要程序语言方面的支持。不过,这在当时整个信息界对于面向对象技术还很陌生的阶段,的确是一个很大胆的决策。这个程序语言的决策虽然可以吸引专业人士的激赏,不过也可能会让许多程序员无法跨越这个障碍。后来的发展也证明了这一点。
建立一个新的Windows Framework组件架构
当时VB使用的组件是VBX。不过VBX架构非常的复杂,只能使用在16位的环境,并且在可视化拖曳设计方面又不是很方便。因此Borland希望在OWL之后建立一个全新的Framework,这个Framework能够让程序员快速开发Windows应用程序,并且完整地封装Windows操作系统中的对象。此外,Borland也希望定义一个标准的组件架构,让使用这个开发工具的程序员能够通过Framework和组件架构来开发各种组件,包括可视化和非可视化组件。这个Framework就是后来的VCL(Visual Component Library)。在这方面,Borland做得非常成功。如果各位读者有VBX的经验,就会知道当时,Microsoft定义的VBX规格简直是一团混乱,根本像是拼凑出来的东西。在当时开发VBX组件痛苦不堪,后来Microsoft也彻底放弃了VBX。
拖曳、可视化的开发环境
Borland的想法是开发一个全新的集成开发环境,在这个开发环境中程序员可以使用可视化的方法拖曳Framework的组件来设计图形界面,再在其中的编辑器中使用面向对象程序语言来撰写应用程序。
这个开发工具项目的名称就是:Delphi!
Delphi的核心成员
在Delphi决定开工之后,Philippe Kahn还不放心动用太多的资源来开发这个产品,因为当时Borland正集中所有的资源,希望能够打赢C/C++开发工具一役。因此Philippe Kahn一开始只答应拨给Anders四个开发人员,先进行产品雏型的开发工作。因此,Delphi在当时被笑称为像Apple计算机一样,是在地下室开发的。
当时加入Delphi开发小组的当然就包含了Anders,第二人是Chuck Jazdzewski。其中Anders负责撰写新的Object Pascal编译器以及核心程序,而Chuck则负责设计Delphi使用的组件Framework,即VCL。在经过了6个月的初始雏型阶段之后,当Anders把开发的结果呈现给Philippe Kahn看时,Philippe立刻被它所吸引。因为当时在Borland内部也希望为Borland C/C++开发一个类似这样能够以可视化拖曳方式开发应用系统的C/C++开发工具。没有想到在短短不到一年的时间内,Anders已经从基本的构想开发出了雏型产品。于是Philippe马上批准了这个产品的开发计划,并且投入研发资源。许多后来举足轻重的人才便是从开发Delphi项目培养出来的。当时在这个项目中,各个重要的部分分别由下面的重要人员负责:
Anders Hejlsberg:编译器,Object Pascal程序语言,产品架构
Chuck Jazdzewski:Framework,组件架构设计/实现
Allen Bauer:集成开发环境的开发工具,Open Tools API
Danny Thorpe:RTL (Run-Time Library)
Zack Urlocker:产品开发方向,产品规划
有兴趣的读者可以打开下面的链接,这篇文章是由Danny Thorpe(现在是Borland .NET的Architect)撰写的,详细地说明了Delphi这个名称的由来以及开发的缘由。
/article/0,,00.html
而批准Delphi的开发,则是Philippe Kahn在因为Borland营运不佳而辞去Borland CEO之前做出的最重要而且正确的决策。没有Philippe Kahn的同意,便不会有两三年后浴火重生的Borland。
大规模的开发行动和Philippe Kahn的下台
在Borland如火如荼地进行C/C++最后决战的同时,Delphi也在快速的开发之中。1994下半年,Delphi 1.0几乎已经开发完毕,最后剩下的工作就是Beta测试的阶段。同年,Borland决定为Delphi展开一项从未进行的尝试计划,因为Borland对于Delphi信心满满。这个计划就是为Delphi进行前所未有的大规模测试,以确保Delphi的品质,避免重蹈Borland C/C++发生的覆辙。Borland为Delphi发出了成千上万的测试版本,邀请了广大的程序员为Delphi进行长期的测试。这可是空前绝后的,因为自Delphi 1.0之后Borland再也没有任何的产品能够拥有这种气魄和规模。我记得在1994年底左右,收到了来自当时Borland台湾产品经理张书良先生寄来的神秘圣诞节礼物。当时打开包裹一看,是六七片磁盘,没有任何的文件和说明。张书良先生请我安装看看这个"东西",并且请提供一点意见。
在安装了这些"磁盘"之后,映入眼帘的是一个陌生的软件。"这是什么啊?"这是我当时的第一个想法。后来玩玩此软件,发现乖乖不得了。不但大部分的Windows对象都可以拉拉就产生程序代码,更绝的是编译应用程序的速度比使用Borland C/C++的编译器快了数十倍,而且产生的是一个体积不大的原生EXE文件,执行速度更是媲美C/C++的程序代码。这让我这个惯用C/C++的程序员当场傻眼。
"这怎么可能?"在我发出呓语般的声音之后,旁边的同事也觉得怪怪的,于是一个一个地跑到我的计算机旁,看看我到底在做什么?其中当然包括了《Delphi学习手册》的作者、也是笔者的好友李增坤先生。在大家玩了之后,每个人都急着拷贝我的Delphi Beta版以便回家继续玩。后来李增坤先生更是玩得出神入化,还能够让Delphi连接到当时相当封闭的Informix数据库(因为他们的开发小组是使用Informix的),真是厉害。他是我所知的第一个Delphi好手。
"这绝对是一个Super Star!",当时我这样对张书良先生说。"真的?那么你可不可以在杂志上帮Borland写一些介绍它的文章?"张书良先生对我这么说。就是因为这段对话,让我开始和Delphi结下了不解之缘。至于我开始写Delphi书籍的缘由也是无心插柳造成的。在台湾Borland准备力推Delphi 1.0之际,张书良先生准备亲自下海,也亲自出面找到了旗标出版社合作出书,以推广Delphi。后来由于张先生工作太忙,因此又找了我和李增坤先生帮忙。本来的约定是我和李增坤先生只负责一小部分,其他的部分都由张先生完成。没有想到,签约之后张书良先生完全没有时间投入,因此只好由我和李增坤先生完成《Delphi 1.0学习手册》。由于我和李增坤先生以前没有写书的经验,投入撰写书籍的时间也不多,因此《Delphi 1.0学习手册》是台湾所有有关Delphi 1.0书籍中最晚出的一本书,远远超过当时我们规划的时程。好在当时Delphi 1.0的气势简直如星火燎原般的炙手可热,因此这本书还是卖得不错的。
1995年对于Borland来说是悲喜交加的一年。日,Philippe Kahn正式因为经营不善而辞去Borland CEO的职位,不过Philippe Kahn仍然是Borland董事会的成员之一。接任的Gary Wetsel的任务是大幅删减Borland的员工数,开始进行瘦身计划。因为当时Borland的员工数是为营收500M美金的Borland所打造的,但是在1995年Borland的营收已经下滑为不及200M美金的公司,而且一直在亏损之中,当时许多业界人土都认为Borland已经撑不过1995年。不过日的情人节似乎一夜之间改变了Borland的命运。
一炮而红的Delphi 1.0
日,是Borland永远会记得的日子,因为这一天是Delphi正式诞生的日子,也是Borland扭转命运的转折点。由于Delphi先前大规模的Beta测试计划已经在全球吸引了极大的兴趣和好评,信息业界也知道了Borland正准备推出一个跨时代的新开发工具产品。当然,更重要的是全信息界也都在静观,这个产品是否真的好到能够拯救Borland免于破产或是被并购的命运。决定生与死的日子终于在这一天揭晓。
日,也就是Borland在全球发表Delphi 1.0当天,我在Scott Valley会见了当时的Delphi主舵手,产品经理Lance Devin先生。Lance是一位非常亲切、有活力的人。Delphi在他的主掌之下,立刻在全球吸引了所有的焦点,当时媒体甚至称Delphi l.0是VBK(Visual Basic Killer)。
Delphi 1.0发表之后,立刻造成了全球的狂卖。由于Borland并没有预料到Delphi的反应会如此的好,因此一时造成了Delphi的全球大缺货。Borland从Borland C/C++3.1之后已经很久没有享受过这么美好的滋味了。
在台湾,由于早已预料到Delphi将会是一个成功的产品,因此,台湾几乎和美国同一时间发表了Delphi 1.0。而且台湾Borland不惜血本,直接从美国空运了少数的Delphi,而台湾能够取得的Delphi的数量也只是从美国抢破头才拿到的少量货。台湾Borland是在信义路的震旦行2楼会议室发布Delphi的。当天整个会议室几乎被塞爆了,因为有太多急于想一睹Delphi庐山真面目的软件人员。我还清楚地记得在发布会结束之后,会议室的门口排满了抢购Delphi的人潮。很快,所有的Delphi都被抢光了。记得当时李匡正先生没有抢到Delphi 1.0,一直到2个多礼拜之后才取得。而我呢?很幸运的是在Delphi 1.0发表之前,张书良先生就已经送了一套正式的Delphi 1.0 Client/Server版让我玩。当然我也迫不及待地把Delphi介绍给我当时的老板,希望我们的软件包能够赶快使用Delphi来写Windows的版本,但是我的老板还是坚持使用Visual Basic来写。后来我就离开这家公司,找寻愿意使用Delphi开发的软件公司。
当时Delphi在台湾书市造成的旋风真可用"洛阳纸贵"来形容,任何和Delphi 1.0有关的书籍都立刻大卖,看得每一个出版社都眼红不已。我也还记得当时第一本Delphi 1.0的书是由波全出版社推出的。根据台湾最有名的天珑书局老板彭先生说,最热门的时候一天几乎可卖500本的数量。我想这一本Delphi书籍应该是台湾有史以来销量最好的Delphi书了,估计当时这本波全的书有数万本的销量。更夸张的是后来我居然在天珑书局看到由2本影印的合集Delphi书籍,由塑料套包起来,要价是"1500"块台币,居然也很快卖完,真是令人不可思议。这即使不是绝后,也绝对是空前的。
Delphi 1.0的成功也许早在信心满满的Anders的预料之中,看看下面在Delphi 1.0中秘密内藏的Easter Egg中,Anders笑得如此的灿烂似乎就已经预见了Delphi光明的未来。
Delphi 1.0有多成功呢?根据非正式的统计,Delphi 1.0当时在全球狂卖了50多万套,这实在是一个惊人的数字。读者如果没有什么概念的话,那么我可以举一些例子来比较一下。Borland最成功的Borland/Turbo C/C++系列卖到了3.1最巅峰的时候,全球的销量才超过100多万套,这可是累积了数年、数个版本后才达到的套数。而Delphi一个版本就到达了C/C++几乎一半的销量,从这就可以知道当时Delphi有多成功了。
Delphi 1.0的大卖,立刻拯救了财务困难的Borland。Delphi的收入不但让Borland立刻再投入更多的资源到Delphi开发小组,以准备下一个版本的开发,也让当时Borland内部的Latte(就是后来的JBuilder)小组获得了更多的研发资源,成就了数年后JBuilder再次接棒;把Borland推向另一个高峰。
再见了,Borland创始人,Philippe Kahn
1995下半年,Borland发生了一件重大的事情,那就是Philippe Kahn正式被逐出他一手创建的Borland。这真是令人震惊又难过的事情,相信许多关心Borland的读者都知道这件事情。但是为什么Philippe Kahn会被踢出Borland董事会、又离开Borland呢?这可是一个秘密。
事情都是从Philippe Kahn辞下Borland的CEO后开始发生的。在Philippe Kahn被逼下CEO之后,他觉得Borland的一些开发方向他并不是很认同,因此在外面又开了一家新的公司StarFish,从Borland买走了SideKick、DashBoard等产品,并且开始研发移动和无线等方面的软件。
1995年Java兴起之后,Philippe Kahn觉得Java很有前途,并且希望结合Java以及移动和无线软件技术。其时Borland内部也在开始研发Java的产品,包含了代号是Latte的Java开发工具以及Java的JIT编译器等技术。而Borland没有预料到,由于Java的萌萌芽竟会造成Philippe Kahn和Anders的离开以及Borland Visual dBase小组的解体。
话说在Borland于Java方面逐渐有了成果之后,Philippe Kahn的StarFish公司也开始步上轨道。1995年,Philippe Kahn眼看Borland内部Java的人才素质精良,于是就开始想挖一些好手到自己的StarFish公司。在Philippe Kahn的挖角动作愈来愈大之后,Borland的董事会终于无法忍受Philippe Kahn这种挖Borland墙角的做法。于是,Borland的董事会成员一致投票决定,将Philippe Kahn逐出Borland的董事会和Borland。这对于Philippe Kahn是一个极为重大的打击,Philippe Kahn被迫离开了他一手创办和心爱的Borland。即使后来Philippe Kahn的StarFish经营得不错,以致后来由Motorola以数千万美金并购了StarFish,让Philippe Kahn大大地赚了一笔,但是他仍然无法释怀,也永远无法忘记Borland给他的成功、光荣、骄傲和屈辱。虽然Philippe Kahn一直想像苹果计算机的Steve Jobs一样有朝一日能够重返Borland,但是,很显然Philippe Kahn没有Steve Jobs那样的运气,Philippe Kahn一直无法完成这个愿望。
Anders的计划以及Zack的想法
在Delphi 1.0大获成功、如日中天之后,雄心勃勃的Anders立刻开始了下一版Delphi的开发计划。此时Delphi研发小组的资源更多,因此可以做更多的东西。不过,在1995年Delphi 1.0推出之后,信息业界有了几项重要的改变,那就是随着Microsoft Windows 95的成功,企业使用Windows平台开发应用系统已经成为既定的趋势,再加上当时数据库市场的快速发展,因此许多企业开始在Windows平台寻找Client/Server的解决方案。正由于这些需求快速而大量的兴起,造成了当时PowerBuilder和Gupta这两个主从架构开发工具的盛行。当时,PowerBuilder是Window平台下占有率超过50%的主从架构开发工具,而Gupta则拥有超过30%的市场。这真是可怕,因为光是两个工具就占据了80%多的市场。由于当时主从架构几乎由这两个工具所寡占,因此,PowerBuilder和Gupta的价格相当昂贵,我记得当时一套PowerBuilder要价40几万新台币,而Gupta也要30几万,真是令人无法相信。
在Microsoft方面,由于Delphi 1.0的成功,给了VB相当大的压力。因此Microsoft在Delphi 1.0推出之后立刻也推出VB 4.0正面迎战。VB 4.0强调的重点是VB应用程序也可以编译成可执行文件,不过,由于VB 4.0的编译器品质尚不成熟,编译出来的效果并不好。再加上它的臭虫非常多,因此VB4.0算是一个相当不成功的产品。正由于这些因素,在当时也传出了VB双数版本品质不如奇数版好的传闻。不过,在当时由于PowerBuilder和Gupta的获利非常丰富,而Microsoft也看到了主从架构将会是未来数年重要的信息架构,因此VB 4.0开始,Microsoft也开始逐渐为VB加入更多开发数据库以及主从架构的能力,并且搭配Microsoft的ODBC规格向主从架构市场进攻。
Anders在Delphi 1.0成功之后,曾经接受媒体的访问,叙述他心中的Delphi 2.0想做的功能。当时Anders就说他希望为Delphi加入Garbage Collection的功能,因为Object Pascal在建立对象方面是使用Heap-Based的方式,因此为了减少Delphi程序员可能发生的错误并简化Delphi程序代码的撰写,他希望加入Garbage Collection。现在的Microsoft的.NET就内建了Garbage Collection的功能,而这个想法在7年前便已经存在于Anders的脑中了。
除了Garbage Collection之外,Anders也想为Delphi加入更多Stack-Based的能力(是巧合吗?.NET的IL也是Stack-Based的语言),并且持续地改善Delphi的编译器,加入更多的编译器最佳化功能,让Delphi的程序代码执行速度能够超越C/C++。
从Anders的想法中,读者应该可以感觉到Anders想做的都是属于比较语言、系统和低阶方面、影响层面较大的功能。但是,由于信息市场是逐渐走向主从架构,因此Zack Urlocker等人则希望Delphi 2.0能够在主从架构方面进行大幅的强化,再搭配Borland力倡的BDE/IDAPI技术,以便和PowerBuilder/Gupta等竞争,进入获利较为丰富的工具市场,这是第一次Anders和Zack意见分歧的时间点。
后来Delphi研发小组达成了共识,那就是下一个版本的Delphi将由Anders在编译器方面主导,为Delphi开发一个真正的32位编译器,而且具备最佳化的功能(因为Delphi 1.0是16位的开发工具)。但是Delphi 2.0也将大幅加入主从架构的功能,并且通过BDE/IDAPI提供连接各种RDBMS的驱动程序,再由Chuck改善VCL架构,提供更为强劲的数据感知组件能力,让Delphi 2.0正式具备和PowerBuilder/Gupta竞争的本钱。这也埋下了日后PowerBuilder/Gupta这两个工具备受VB和Delphi强大的压力、终至快速衰退的命运。
由于Delphi 2.0开始确定走向主从架构和具备开发大型系统能力的方向,因此Anders没有多余的资源可以实现他的理想,再加上和Zack在产品发展方面日渐出现歧见,这些都是间接造成日后Anders离开Borland的因素。
Delphi 2.0,进入32位世界的开发工具
在Anders完成了Delphi 32位的编译器而且BDE/IDAPI小组也实现更多连接RDBMS的驱动程序之后,Delphi 2.0便已经准备好出征了。Delphi 2.0在推出之后果然也非常成功,Anders亲手打造的32位编译器不但编译速度奇快,编译出的应用程序品质更是无话可说。在当时,Delphi 2.0产生的执行程序代码屡获专业媒体和实验室的评比大奖,尤其在整数运算方面,更是比VC++执行得还好。在一般应用程序方面,也和VC++的程序代码不相上下。整体来说,只有在浮点数方面落后VC++。这也是后来Borland编译器小组和Anders激活Borland下一代编译器项目的原因之一,目的是为C++Builder和Delphi开发一个共享的后端最佳化编译器。不过很可惜的是,Anders稍后离开了Borland,没有参与完成这个最佳化编译器,否则Borland的编译器应该会比现在更具威力。
Delphi 2.0如同Delphi l.0一样大获成功,因为当时许多想在Windows NT下开发纯32位应用系统的程序员都愿意使用Delphi 2.0,更不用说一些企业的开发者,在不愿意忍受PowerBuilder/Gupta等使用脚本语言执行应用程序的缓慢情形下,许多PowerBuilder/Gupta使用者都转而使用Borland的Delphi,这是Borland继当初Borland C/C++3.1之后再次打入企业市场。Delphi 2.0和Delphi 1.0的总销量也超过了一百万套。在全球的市场中,Delphi在欧洲、亚洲和中南美洲都非常的成功,反而在北美的市场表现平平。由于Delphi表现得非常抢眼,给予了VB和PowerBuilder巨大的压力,因此Microsoft和Sybase在Delphi 2.0推出之后,也纷纷地准备推出VB 5.0和PowerBuilder 6.0,正式揭开了RAD工具最后的生死战。
在Delphi 2.0顺利推出之后,很不幸的是Lance也离开了Borland。接手Delphi产品经理的是Ben Riga。要怎么说这位加拿大的仁兄呢?Ben Riga也是很亲切的人,但是我当时向他建议的许多Delphi发展方向,这位仁兄都没有反映在Delphi的产品中。
例如我在3.0时便强烈建议Delphi应该在Web方面投入更多的努力,在Delphi中实现类似当时IntraBuilder的能力,提供可视化的方式开发Web应用系统,也就是像现今的Developer Express的ExpressWeb Objects组件组,或是IntraWeb组件组。如果在当时的Delphi 3或是Delphi 4便能够有这种组件组,那么Delphi的Web能力将是No.1,更不用说对于Delphi的销量会有多大的帮助。可惜笔者人微言轻,Ben并没有把这个重要的功能放人Delphi的产品开发规格中。一直到现在,Delphi 6/7才认真地考虑这个需要,虽然时间已经晚了,但是如果真的做得好的话,也比没有好。
在Delphi和VB相继进入主从架构的世界之后,便和PowerBuilder有了更激烈的竞争。在Delphi 2.0出版之后,PowerBuilder面临了更大的挑战。因为VB在易于使用和Microsoft的努力之下仍然呈现成长的趋势,但是PowerBuilder在许多场合却是直接和Delphi竞争。在Delphi 2.0推出之后,Borland也很快查觉到许多Delphi的使用者是从PowerBuilder转来的,于是当时Borland内部便拟定了置换PowerBuilder计划,希望能够持续从PowerBuilder手中抢得更多的市场占有率。
Delphi 2.0的纯32位编译器以及执行速度一直是许多人喜欢的,这也对PowerBuilder带来了压力,因为许多PowerBuilder的使用者,特别是软件公司对于PowerBuilder使用的语言PowerScript执行缓慢而不悦,但是却喜欢PowerBuilder的DataWindow。因此在当时Sybase便宣告将为PowerBuilder开发一个编译器,以增加PowerBuilder应用程序的执行速度。不过Sybase并没有在Delphi 2.0之后的PowerBuilder 5.0实现出来,一直要到PowerBuilder 6.0才推出PowerBuilder编译器,不过问题仍然多多。
当时我曾经仔细地观察台湾参加Delphi发布会的使用者以及参加PowerBuilder的使用者,发现了一个很有趣的现象,那就是一开始参加Delphi(1.0/2.0)的使用者几乎都是工程师,很少有DB Center的信息人员或是信息经理。而去PowerBuilder的使用者则甚少工程师,大部分都是穿着体面的DB Center的信息人员或是信息经理。不过这个情形在Delphi 2.0之后逐渐改变,因为当Delphi慢慢地被企业接受成为开发工具之后,也有愈来愈多的信息主管人员出现在Delphi的发布会中。
下图是我早在1999年便绘制的资料,从这个Slide中读者可以发现Delphi、VB和PowerBuilder的竞争是一个版本对应一个版本的。每当竞争对手推新的版本之后,另外的竞争对手都会立刻推出相对应的竞争版本。但是在Delphi 2.0之后,PowerBuilder便开始逐渐无法同步跟上Delphi和VB的竞争脚步,差距也愈拉愈大。
基本上Delphi、VB和PowerBuilder的竞争在Delphi 2.0时期是最为激烈的,在Delphi 3.0和VB 5.0之后大势已定。PowerBuilder已经定位成数据库开发工具,无法像Delphi和VB一样成为Windows平台中通用的开发工具。因此PowerBuilder的使用者群组便逐渐缩减到DB Center或是信息室的使用者。这个现象当时在台湾非常的明显,因为大多数的软件开发厂商、软件包厂商或是项目厂商逐渐地舍弃PowerBuilder,不是选择使用VB就是选择使用Delphi。在Delphi 3.0之后,Windows平台的主从架构开发工具市场已经是VB第1,Delphi第2,而PowerBuilder退到第3,并且和Delphi/VB的差距愈来愈大。经过了3年的激斗,传统主从架构开发工具PowerBuilder和Gupta仍然不是Microsoft和Borland的对手,即使PowerBuilder曾经拥有超过世界50%的占有率。当初Sybase也没有预料到在并购了PowerBuilder之后,这么快就损失了大片的江山。不过比起Oracle和Informix来说,Sybase下的本钱还是比较划算的,因为同时竞争的Oracle Developer 2000早已只能送给Oracle数据库的使用者。而Informix的主从架构开发工具Neon更是凄惨,在出了一个版本之后,由于体积庞大,执行缓慢,又臭虫成堆,还没上场竞争,就被丢人垃圾桶了。这对当时所有投入大量资源开发主从架构开发工具的软件厂商来说,都是受伤不轻,当然除了Borland和Microsoft之外。
PowerBuilder和Gupta数年辛辛苦苦建立起来的主从架构王国,只经过短短的1、2年就被VB和Delphi所鲸吞蚕食是有许多原因的。PowerBuilder和Gupta着重在高价、专有的主从架构市场,却不知主从架构已经逐渐成为一般信息架构应用主流,大量的程序员需要的是价格合理、功能齐全的开发工具。PowerBuilder和Gupta价格的奇高和功能的缺失,在VB和Delphi加强主从架构的功能之后便逐渐地浮现出来。此外PowerBuilder和Gupta当初风行的一个重要因素是提供了连接到各种RDBMS的驱动程序,以提供开发数据库和主从架构应用系统的能力。但是当VB和Delphi都分别提供了ODBC和BDE/IDAPI技术连接更多的数据库服务器之后,PowerBuilder和Gupta的优势也就不再了。另外一个关键性的因素是PowerBuilder和Gupta一直无法成为大众化的开发工具。除了DB Center和企业之外,PowerBuilder和Gupta无法被大量的ISV、商业软件包厂商、一般工程师、甚至是学生使用来开发各种不同的应用系统。因此PowerBuilder和Gupta只能在特定的软件族群中使用,限制了可能成长的潜力市场。
最后我认为最重要的原因是Sybase和Gupta在面对Microsoft和Borland这两个非常精于实现开发工具的厂商时过于轻心,反应的速度太过于缓慢,以致PowerBuilder和Gupta除了在数据库和主从架构功能之外,其他的功能都太过阳春。特别是在Java逐渐兴起之后,PowerBuilder和Gupta最后跨平台的诉求也在瞬间瓦解,因此失去市场也是不可挽回的命运了。
Borland C++Builder的诞生
在Delphi l.0/2.0大获成功并且对Borland产生了巨大的收益之后,来自Borland C/C++使用者的需求,即要求Borland也推出一个C/C++版本的呼声也愈来愈强烈,到了Borland无法忽视的地步。不过这对Borland来说,却是一个相当伤脑筋的事,因为Delphi是用Object Pascal写的,如何转成C/C++?如果要开发C/C++版的Delphi,那么Borland C/C++的产品线要如何处理?因此这也在Borland内部起了极大的争议,这又是另外一个故事了。不过不可否认的是,Delphi 1.0/2.0的成功正是促成了Borland C++Builder面世的主要动力。
争执的开始
Delphi 2.0的再次重大成功仿佛为Delphi研发小组注入了一支巨大的强心剂。Delphi研发小组迫不及待地要开发Delphi3.0,以便趁胜追击,进一步的拉近和VB的距离,并且再次给予PowerBuilder/Gupta重击,以便从PowerBuilder/Gupta取得更多的市场。在Delphi 2.0推出之后,根据当时Gartner Group的调查,主从架构开发工具的第一名仍然是PowerBuilder,第二名是VB,而第三名则是Delphi。Gupta的市场占有率快速地下滑,已经无法进入前三名的占有率了。不久之后Gupta改名为Centura,希望力挽狂澜,但是仍然无法改变市场的现实,并且逐渐淡出主从架构的开发工具市场。这对于VB和Delphi来说都是重大的胜利,因为VB和Delphi在短短的一两年之内就几乎瓦解了PowerBuilder/Gupta在主从架构市场数年经营的优势。虽然PowerBuilder还暂时维持第一的占有率,但是已经从50%几萎缩到了40%,而且还在不断的下滑之中。PowerBuilder在VB和Delphi的强烈进攻下岌岌可危,产品价格也在快速地滑落之中。
不过在Delphi 3.0的功能会议中,Anders和Zack却再次发生了强烈的争执,因为这两个Delphi的灵魂人物对于Delphi 3.0的走向出现了不同的看法。其时由于Microsoft的COM/DCOM等技术逐渐成熟和受到愈来愈多的使用,因此Anders希望Delphi 3能够充分地支持开发COM/DCOM的技术,并且提供比VB更方便、比VC更强大的能力。为了实现这个想法,Anders力邀Alain Lino Tadros加入Delphi的研发小组。为什么Anders会找上Alain呢?这是因为Alain曾在1996年BorCon的研讨会上以惊人的技术写了5000多行的程序代码,把VCL组件直接变成COM对象。Anders在BorCon上知道之后,立刻有一个想法,那就是如何能够延伸Alian的技术,如果通过一种方法便能够把所有或是大部分的VCL组件变成COM对象以及COM Container的话,那将是多奇妙的事情。如此一来Delphi的研发小组也不需要为实现COM/DCOM的功能而大费周折了。而Anders的这个想法也促成了后来Delphi 3中IVCLComObject接口和技术的诞生,直接把VCL转换为COM对象的神奇功能。
除了邀请Alian之外,Anders也计划直接修改Delphi的编译器,让编译器能够直接处理COM的参考计数值(Reference Count),免除Delphi程序员的麻烦,并且提供有效的执行码。如果依照当时Anders的想法并且把Delphi 3依此实现出来的话,那么Delphi将会是一个比Microsoft工具更好的COM开发工具。
不过Zack却不认为Delphi 3应该把这么多的资源花在支持COM/DCOM上。虽然Zack同意Delphi 3必须对COM/DCOM有好的支持,但是他认为Delphi 3应该在Delphi 2的主从架构获得了胜利之后,继续往更高阶的方向努力,那就是分布式架构,以便把Delphi塑造成能够开发大型企业的开发工具,把Delphi打入获利丰富的企业市场。因此Zack和当时Borland开发工具部门的负责人Paul Gross激活了所谓的Golden Gate计划,希望提供Delphi强大的中介引擎功能,因此Borland并购了出版Entera中间件的公司,让Delphi能够通过Entera连接到后端大型的系统,希望大型企业能够使用Delphi开发客户端的应用程序。
由于Golden Gate计划得到了Borland高层的支持,因此Delphi 3的发展方向很快便朝向分布式技术前进。虽然COM/DCOM的支持也在产品的计划之中,但是并无法做到像Anders所想要的境界。由于Anders的理想无法被接受,因此在Delphi 3的发展中后期阶段,Anders并没有介入太多Delphi 3的开发工作。
在Delphi 3正式发表之际,Delphi的研发小组很巧妙地平衡了COM/DCOM和分布式技术的功能,也让Delphi 3成为Windows平台中第一个提供分布式开发的开发工具。而Delphi 3当时使用的Marketing Slogan以及产品诉求的重点也是"Component Foundry",意谓Delphi 3可以轻易地建立VCL组件以及COM/DCOM/ActiveX组件。
Delphi 3推出之后,Delphi应该算是到达了巅峰的状态,销售数字也非常的亮丽,已经超过了Borland C/C++3.1的销量,而Borland也有了稳定的收入。但是人无远忧必有近虑,后来发生的数件大事几乎让Delphi重演当初Borland C/C++4.0的历史覆辙。
不知道读者看到这里有什么想法?我认为COM/DCOM和分布式技术都是重要的,后来的事实也证明分布式技术是Delphi的强项之一,而应用系统架构也逐渐走向分布式多层。不过没有像Anders的想法把Delphi塑造成无敌的COM/DCOM组件开发工具相信也是许多人的遗憾。
在Anders逐渐不介入Delphi 3的开发之后,随后发生的两件关键的事情便注定了Anders Hejlsberg继Philippe Kahn离开Borland的命运。
天才的损失和新英雄的接棒
在Anders和Zack对于Delphi的走向逐渐出现了歧见之后,Anders便没有再主导Delphi 3.0的开发,反之Zack在Delphi开发小组中的角色却日益重要,后来几乎是Delphi 3和Delphi 4的主要领导人。为什么Delphi的Architect Anders会慢慢地淡出Delphi的核心呢?这和Philippe Kahn离开Borland也有重要的关系。
Philippe Kahn和Anders共同创造了传奇的Borland,两人之间有着浓厚的感情。在Borland工作时,对于Anders任何的想法和计划,Philippe Kahn都是不遗余力地支持。也正是这个重要的支持力量,才有随后极为成功的Borland Pascal以及Delphi的问世。
但是在Philippe Kahn离开Borland之后,Anders再也没有了这股来自最亲密战友的强力支援。1997年,Borland新的CEO Delbert Yocam在掌握了大权之后,Borland整个公司开始走向第二个重要的转变,Delbert对于Borland产品的开发和趋势也有了不同于Philippe Kahn的看法。当Java在1996年逐渐快速发展之后,睿智的Anders也看到了Java成功的未来。因此在Anders不再积极参与Delphi 2/3的开发工作之后,他非常希望能够主导Borland Java开发工具的开发,期望能够像当初的Delphi 1.0一样,为Borland再次开发出全世界一级的Java开发工具。
不过,由于当时Delphi是Borland最重要的收入来源,高层仍然希望Anders继续在Delphi产品线上投入全力,因此当时的Borland CEO Delbert Yocam并没有批准Anders的请求。Borland的下一个重要的开发工具JBuilder,当时的产品开发名称为Latte,仍然交由其他小组负责。依据我的推想,由于当时Anders对于Java已经有许多的想法,因此才会有后来的VJ++以及C#,这些产品和程序语言的许多特性想必已经在Anders的脑中存在了一段时间了。
Delbert没有允许Anders带领Latte开发小组,但Anders仍然没有放弃他的新计划。也许是Anders注定和Borland的缘分已经到了尽头,这个时候正好Microsoft展开了有史以来对Borland最大的挖角行动。在Anders无法在Borland取得满意的支持之后,Microsoft提供的优厚条件顿时对Anders产生了致命的吸引力,从而造成了Borland无法挽回的遗憾。
虽然Anders没有显赫的学历,无法获得Turning Awards(即图灵奖,信息科学界最高荣誉的奖项,等同于诺贝尔奖)。但是我认为Anders的实力和贡献绝不输于任何一位Turning Awards的得奖人。Anders是最好的信息实践型人物,在2001年,他终于获得了信息界最具权威的信息刊物Dr. Dobbs' Journal颁发的Excellent Programming Awards,以表彰Anders为信息界做出的卓越贡献。我想Anders应该是许多本身没有高学历或不是计算机信息科系出身的优秀程序员最好的效仿对象。
Anders Hejlsberg这位不世出的软件天才,是目前全世界最顶尖的软件技术人员之一。论实现技术,Anders可能是目前的第一高手,因为他精通程序语言、编译器技术、开发工具、Framework以及系统架构。我虽然知道许多软件界重要的人物和好手,但是尚不知有任何人能像Anders一样在这么多领域都能成为大家。下面是笔者整理出Anders Hejlsberg到目前为止重要的功绩、贡献以及获颁的重要大奖:
和Philippe Kahn共同创办Borland
开发出Turbo Pascal,当时首创的In-Memory Compiler震惊了全世界
开发出全世界最畅销的Pascal产品,Turbo Pascal(这是许多信息人员学习Pascal和Data Structure使用的经典产品)以及Borland Pascal。Turbo/Borland Pascal合计销售超过了数百万套。Dr. N. Wirth(Pascal语言的创始人员)也应该向Anders致敬,表达Anders对于Pascal语言的贡献
Anders使用汇编语言撰写编译器,其功力无人能出其右。创造出了全世界速度最快、品质也是一流的Pascal编译器。在Anders离开了Borland之后,几乎没有人能够修改Anders的编译器
开发出影响深远的Delphi这个伟大的RAD工具
开发出VJ++语言
Microsoft .NET的Architect
Microsoft颁授Microsoft Distinguish Engineer大奖
发明C#这个又将造成重大影响的语言
获颁2001年Dr. Dobbs' Journal的Excellence In Programming大奖
一个人一生能够做出几件让全世界都津津乐道的事业呢?Anders却成就了无数PC界伟大的功绩,并且在程序语言、编译器、开发工具以及Framework方面都有重要的贡献。PC软件界因为有了Anders而精彩、丰富了许多,也创造了许多令人惊叹的故事。更棒的是Anders现在仍然在继续贡献他惊人的天分,就让我们拭目以待,看看Anders还能创造什么功迹吧。不过,不管以后如何,相信Anders应该是大部分软件人员希望学习的目标。Anders的功力也是大部分软件人员一生企望能够达到的境界。
在2002年Borland Developers' Conference中,Anders Hejlsberg是排名第一的Keynote Speaker,尚在Java的创始人James Gosling之前。根据现场同时聆听这两场Keynote Speech的听众报道,Anders的Keynote Speech是非常精彩的,而James的Keynote Speech则相对的枯燥,许多人因此而提前离席。而且Anders在开始进行Keynote Speech之时,便获得了现场所有听众起立鼓掌致敬,看来,在大多数Borland开发工具使用者的心中,Anders Hejlsberg是永远的巨星。
Microsoft的挖角和Anders的离开
Anders在不介入Delphi的开发、并且无法主导Borland Java开发工具开发的情况下充满了挫折感。没有了Philippe Kahn的强力支援,Anders虽然是Borland最顶尖的技术人才,却也无法对抗Borland管理阶层的力量。当然这也是从Philippe Kahn离开了Borland之后、Bodand开始转型有关,这在稍后Borland的转变一文中,我会作详细的说明。
虽然Anders在Borland遇到了挫折,但是对于Microsoft来说这却是千载难逢的好机会,在此时Microsoft展开了大规模的挖角行动,而且是明目张胆地进行,正是由于Microsoft如此大胆的行动,因此也造成了不久之后Borland对于Microsoft的法律控诉。
这次的挖角行动中,Microsoft同时锁定了数个Borland最杰出或是重要的人物,当然Anders是名列第一的挖角对象。时值1996年,Microsoft终于展开了行动,使用的方式是最直接的攻击。Microsoft直接派遣加长型的大轿车到Borland大门口找Anders吃饭,第一次Microsoft开出了年薪百万美元以上的条件。不过在Borland知道了这件事情之后,也很快进行了加码的动作,因此Anders并没有对Microsoft进行响应。Microsoft在苦等无应、按捺不住之下,很快就再次用大轿车找Anders。这次Microsoft提出了两百万美元以上的条件,希望Anders能够首肯。对于这次的喊价,Borland可有点为难了,因为两百万美元不是笔小数目,这已经比当时Borland许多副总裁的年薪还高。此外,如果Borland答应也加到两百万以上,那么是不是Chuck也要如此加码?其他的Delphi R&D小组要如何调整?这些都是非常棘手的问题。
不过Borland很快找到了解决的方案,那就是允许Anders从每一套卖出的Delphi版本中抽取一定数量的版权费。如此一来Delphi卖得愈好,Anders便能取得愈多的回馈。不过就我的了解,Anders注重的并不是金钱上的问题,因为在Borland创立的初期,由于Turbo Pascal的编译器都是Anders撰写的,因此当时Anders也是卖一套Turbo Pascal就可以抽取版税的。依照Turbo/Borland Pascal全世界销售数百万套来算,Anders早就是富翁了。薪水多一点,少一点并无所谓,Anders心中想的是自由发展的空间。在Borland提出了Delphi的随版抽税,再加上Microsoft并不知道Anders真正想要的东西,因此Anders仍然没有响应Microsoft提出的优厚条件。
不过,Anders实在是太重要的人物,而且Microsoft在面对Java与日俱增的威胁下,非常渴望能够有像Anders这样的人才带领Microsoft开发下一代的开发工具,这当然也是由于Microsoft以前向Borland挖来的人都做出了不小的贡献所致。Microsoft食髓知味,当然希望能够得到Borland的镇山之宝。在Anders两次不为所动之后,Microsoft决定祭出最后的王牌,由Bill Gates亲自找Anders吃饭,进行最终的挖角行动。
不管读者喜不喜欢Bill Gates,不可否认的是Bill也是一个天才。自古英雄惜英雄,在Anders和Bill相谈甚欢的情形下,Microsoft开出了年薪三百万以上、数万股的Microsoft股票这个超高的条件,再以当时Microsoft高贵的股价来计算,真是一笔庞大的数字,也许对于搞软件技术的人来说,这已经是不可能的天文数字了。不过这些条件并不是打动Anders的主要原因,Bill最后提出的条件是"答应给Anders一个小组和极多的资源,让Anders尽情地发挥"。这个条件可说是打到了Anders的心底,因为Anders正渴望有人能够支持他完成新的计划和想法。我想,在软件产业中大概也只有Microsoft能够拥有这种雄厚的资源可以挖角任何人吧。
在Bill Gates提了这样的条件之后,Borland再也没有本钱能够和Microsoft进行比价了,只好眼睁睁地看着Anders离开Borland前往Microsoft再开创下一个人生的高峰。在Anders到了Microsoft之后,Bill Gates果然重用Anders,也立刻让Anders负责激活Microsoft的下一拨开发工具计划,当然这个计划也是Microsoft对抗SUN/Java的整体计划之一。Anders到了Microsoft之后立刻展现了实力,让Microsoft的编译器技术又精进不少,最明显的例子就是Microsoft后期的Java Virtual Machine是PC上执行效率最好的,而且在2、3年后,VJ++编译出来的虚拟机械码的执行效率不但比任何的Java开发工具还快,在某些方面甚至比原生的Windows开发工具,例如Delphi、VB、甚至是VC++还有效率。这真是令人震撼,当然Anders为VJ++打下的基础现在也展现在NET的C#编译器以及.NET的JIT(Just In Time)编译器之上,.NET的JIT在许多程序代码最佳化方面比Delphi还先进。因此在2、3年前当VJ++即将推出之际,在Borland内部也引起了非常大的骚动,并且严阵以待,当然这又是另外一个故事了。
对于Anders来说,到了Microsoft之后不久又再次登上了生涯的另一个巅峰。因为当初Anders在Borland之时,就有如孙子兵法中叙述的"藏于九地之下",虽然是不世出的天才,但是仅为少数的人所知,即使是使用Borland产品的人在当时可能也不知道Anders这号人物。因为Anders和Borland的作风很像,都是行事低调,不到最后绝不随意出手。但是Anders被挖角到Microsoft之后,由于Microsoft的企业文化向来是前进、积极的侵略性方式,因此Anders也就转变为"动于九天之上",负责Microsoft开发工具大军的核心大将,不但广为人知,成为许多软件人员效法的对象,而且屡获大奖。他不但获得了信息软件业界的推崇,最后也终于获得了信息学术界的认可,可说是实至名归。
Anders的离开对于Borland来说是一个很大的损失,不过对于Delphi R&D小组来说却是有好有坏,因为Delphi开发小组虽然失去了最重要的支柱,但是也给Danny Thorpe一个快速崛起的机会,在1年后,Danny果然立刻成为了Delphi/C++Builder/Kylix中最杰出的人物之一(另外一个当然就是Anders的老搭挡Chuck Jazdzewski了),Danny也是我认为目前在Borland RAD(注)部门中功力最厉害的人物。在稍后的内文中我会对Danny进行比较详细的说明。
注:Borland RAD部门是指Borland的Rapid Application Development部门,RAD负责的产品包含了C++Builder、Delphi、Kylix以及未来的.NET以及Mobile的新产品。
巅峰之作和最后的胜利者
在Zack于Delphi 3开发的后期和Paul Gross逐渐取得了主控权之后,Delphi的发展方向也偏向了Zack希望的Multi-Tier的技术以及由Paul Gross稍后主导的Borland Golden Gate计划。1997年,Delphi还是像Delphi 1/2一样以强劲的生命力,以一年一个大版本的速度准时推出了。当时Delphi 3也称为Delphi 97。Delphi 97和Delphi l/2一样有一个最重要的战略目标以及主要的革新技术,那就是Multi-Tier和COM/DCOM的支持。因此,当时97推出之际使用的行销术语是"Component Foundry",意指Delphi 97能够开发任何的软件组件(事实上是指VCL、COM/DCOM以及ActiveX组件),而且使用组件来开发Multi-Tier的应用系统。
Delphi 97无论是在品质、功能或是市场和销售上都是非常成功的。也许是为了证明即使是没有了Anders,Borland的Delphi R&D小组仍然有实力开发出优秀的Delphi产品,因此Delphi 3一推出的品质就在高水平的地步,后来Delphi 97销售的结果也证明了它没有令人失望,Delphi 3的推出让Delphi一举突破了150万套的销售大关,也几乎成为Borland有史以来最畅销的单一系列开发工具,我也认为Delphi 3是Delphi所有版本中最好的一个。
不过,Delphi 97在即将推出之时也令一些人感到忧虑,因为在当时几乎没有任何开发工具强调Multi-Tier的开发,大多数的开发工具仍然着重在Client/Server的功能。Delphi 97将许多新功能集中在Multi-Tier的开发的确是一个不小的冒险,因为在当时Multi-Tier的观念还非常的新颖,许多人对于Multi-Tier是什么?能够用来开发什么?为什么要使用Multi-Tier等等问题都不是很清楚。更重要的是,在那个时候Multi-Tier的基础工程都尚未完全准备好,使用者要如何使用Multi-Tier技术来开发应用系统、甚至是学习Multi-Tier的技术呢?
我所谓的"Multi-Tier的基础工程都尚未完全准备好",是指在那个时候Microsoft的DCOM技术都还没有推出。那么,Borland该如何在Windows平台上提供Multi-Tier应用系统需要的分布式技术呢?说到这里,我们也不得不佩服当时Borland这些Delphi R&D小组的眼光,他们几乎已经精确地看到了未来的软件计算世界将会由网络和分布式技术主导,因此,即使是在操作系统平台尚未准备好的情形下,Borland也决定快速向前出发。
另外一个驱使Delphi 97走向Multi-Tier的重要原因便是当时Borland已经准备走向组件技术的领域,准备在中间件(Middle-Tier Software)中成为一个关键的软件开发厂商,这就是Paul Gross和Zack Urlocker激活的Golden Gate Strategy。而Paul Gross也就是由于Golden Gate计划扬名立万、进而成为当时Borland整个研发部门的副总裁(Vice President),后来又成为Microsoft下一个挖角的对象。
为了配合Golden Gate计划并且成为分布式技术的领导厂商,Borland由Paul Gross主导并购了Boston一家有名的顾问公司,这家顾问公司拥有一个颇为知名的中间件"Entera"。Entera是一个以RPC(Remote Procedure Call)通信协议为骨干的中间件,Borland希望通过Entera快速进入中间件的市场。由于Entera的客户端能够执行在Windows的操作系统中,因此,Entera在Windows平台上拥有基础的分布式技术支持能力,这刚好提供了Delphi 97需要的技术,所以Delphi的R&D小组立刻使用VCL封装了Entcra的底层API,提供了一个称为OleEnterpriseConnection的VCL组件,让Delphi 97能够和以RPC为基础的中间件连接。
因此在Delphi 97中Borland提供了三种分布式连接组件,分别是使用DCOM技术的DCOMConnection、使用TCP/IP技术的SocketConnection以及OleEnterpriseConnection。在那个时候最成熟的技术应该是OleEnterpriseConnection,而使用DCOM技术的DCOMConnection在Microsoft本身DCOM尚不成熟的背景之下,表现得并不好。至于SocketConnection,我认为Borland一直没有很认真地地实现SocketConnection,因此最好只可以用来作为学习的对象,尚未到达可以真正应用的水准。不过稍后随着时间和技术的进步,OleEnterpriseConnection逐渐没落,而DCOMConnection则反而因为Microsoft的DCOM的慢慢改善而成为比较实际的应用对象。当然,这些又属于Delphi 4的开发故事了。
虽然Delphi 97采取了比较冒险的做法,但是由于其品质良好,又支持COM/VCL组件的开发,因此也很快征服了Delphi使用者的心而大获成功。当时许多Delphi的使用者仍然是以开发Client/Server应用系统为主,不过由于Delphi 97好用的COM技术以及应用Web的WebBroker技术,再加上Multi-Tier的功能,都让使用者大呼过瘾,把Delphi作为学习这些先进技术的好工具,因此Delphi 97在当时到达了巅峰的地步。而Delphi/VB和PowerBuilder/Gupta缠斗的情形也逐渐明朗。Delphi/VB的销售量和市场占有率已经远超过PowerBuilder/Gupta 了,PowerBuilder/Gupta也注定将从通用开发工具以及主从架构开发工具市场中让出绝大的市场份额。
其时PowerBuilder仍然不肯服输,并且坚称PowerBuilder在总收入方面仍然是第一。这是因为PowerBuilder在当时仍然非常的昂贵,比Delphi/VB至少贵了两三倍以上。但是在不断地快速流失市场的情况下PowerBuilder的售价很快就出现了大幅的下降,至此Delphi和VB终于获得了全面的胜利;Client/Server开发工具的战争已止,但是接下又上演了另一出精彩的Java开发工具大战。
危机的开始
在Delphi 3再次获得了胜利之后,Delphi 4决战的目标已经从Delphi、VB、PowerBuilder和Gupta混战的形势转变为和VB对战的局势。原本Delphi有继续进击的机会,因为在当时Delphi 3的功能的确强劲,而且许多功能都领先业界至少半年以上的时间,不过可惜的是,在1996年Borland担任CEO的Delbert Yocam先生正好在这个时候开始了改造Borland的计划,几乎造成了对Delphi不可挽回的错误,这要从Zack Urlocker被Delbert Yocam拔擢成Borland Marketing的副总裁开始说起。
1996年11月,Borland邀请了Del Yocam入主Borland成为新的CEO,希望通过Delbert Yocam在管理方面丰富的经验改善Borland长久以来在公司管理方面的积弱不振。Delbert Yocam原本是Apple计算机公司的副总裁,应该是拥有丰富的管理经验,不过不知道Delbert是不是在大型计算机公司呆惯了,因此花钱花得特别凶。Delbert在一进入Borland之后立刻花了大钱更换总裁办公室里所有的家俱和装潢,其后到各地出差时又要求头等舱以及总统套房,花钱像流水一样。当时我便对这位新的CEO没有什么好印象。
Delbert在进入Borland之后一直想改造Borland。在Delphi 3大获成功之后,Delbert便把重点集中在Delphi的身上。Delbert认为Delphi非常成功,是Borland的摇钱树,因此一直想从这个产品线获得更多的收入。好大喜功的Delbert觉得Delphi的根基已经很稳固,因此可以更快速地从Delphi身上取得资源。这让Delbert在1998年下了一个严重的错误决策,几乎折损了Delphi的大好基业。
Borland和Microsoft的法律大战
在Microsoft不断地挖角,甚至把Anders也挖走之后,Borland已经到了"士可忍,孰不可忍"的地步。Microsoft挖角的动作愈来愈像是恶意挖角,似乎是想把Borland搞垮。Borland无法忍受的是Microsoft不但在操作系统和开发工具上进行不公平的竞争,现在甚至进行人事上的不公平竞争。Microsoft不思在产品上和Borland一决雌雄,反而进行挖墙角的破坏,Borland实在是忍无可忍了。
1997年5月,Delbert Yocam终于向美国法院提出了对于Microsoft的控告。当时Borland提出的控诉理由是"Microsoft对于Borland进行Brain Drain"的行动。Microsoft在30个月内从Borland挖角了34名Borland关键的开发者,而且每一名被挖角的人到了Microsoft之后都担任和在Borland类似的角色,这摆明了就是要利用这些人在Borland的知识快速地帮助Microsoft提升和Borland的差距,并且了解Borland内部的产品和技术的开发状况。这种不公平的竞争应该是没有任何一家公司能够容忍的。
在Borland正式提出了诉讼之后,具备侵略性企业文化的Microsoft当然就立刻反击,和Borland对簿公堂。Borland和Microsoft从开发工具战场一直斗争到法律战场,互不相让的情形让许多看客大呼过瘾。Borland对于Microsoft来说似乎就是打不倒的勇者,不管情势再艰辛,仍然能对抗到底,因为Borland知道,对于Microsoft一旦让步,以后就永远没有机会了。当时,业界许多人都已经预测Borland迟早会采取行动,但是没有想到这么快就勇敢地响应。Borland当时的行动引起了许多信息业界的尊敬和支持。
这场官司的进行很快就有了初步的迹象,所有的证据都对Microsoft不利。Microsoft一看情势不对,又不想让Borland真的消失,以避免吃上在开发工具市场垄断的官司,所以立刻表达愿意和Borland在庭外和解。正是由于这个原因,才有后来1999年时Microsoft对于Borland的投资,Microsoft这项投资正是这次庭外和解的条件之一。不过Delbert的运气并不好,虽然Microsoft愿意和Borland进行庭外和解,但真正和解的动作以及Microsoft对于Borland的赔偿事项却是发生在Delbert之后的Borland下一任CEO,即Dale Fuller身上,Delbert种下的稻穗却是由Dale Fuller来收割。
接二连三的错误决策
1998年,Delbert Yocam再次展现了好大喜功的本性,在没有充分地讨论以及共识之下,Delbert Yocam决定把公司名称从众所周知的Borland改为Inprise。Delbert决定如此做有数个原因:
由于Paul Gross和Zack Uplocker的Golden Gate计划让Borland进入中间件市场,因为Borland在企业市场以往没有很强的知名度,许多人认为Borland只是开发工具厂商,因此Delbert为了解决这个问题决为Borland取一个新的名称
使用Inprise的意思是指Borland可以Integrating The Enterprise。为提供企业整体解决方案的软件公司
基本上Delbert Yocam在进入Borland之后已经开始改变Borland,悄悄地进行第二次Borland改造的行动。这就是以行销为主的Borland,有别于以往Philippe Kahn所领导的以产品/技术为主的Borland。为了代表Delbert的决心并且重新出发,Delbert认为公司该使用一个新的名称
1998年4月,在Delbert的主导之下,Borland花费了数百万美元之后终于改名成为Inprise公司。不过Delbert原本是想在更改公司名称之后可以重新出发,但是没有想到,在Borland改名为Inprise之后,各种负面的效果却接踵而来。
首先,传统的Borland使用者都强烈反对Inprise这个名称,这些Borland使用者都喜欢原来的Borland。第二个问题,是许多新的使用者都听过Borland,但是在改名之后这些新的使用者找不到Borland,以为Borland已经不见了,又从未听过Inprise这家公司。第三,则是竞争对手刻意放出的讯息,故意散布Borland已经被一家叫做Inprise的公司并购了,因此希望原先的Bor]and用户能够放弃使用Borland的产品。
Delbert万万没有想到,在花了大钱更改公司名称之后,Inprise(Borland)却开始得疲于奔命地应付各种不利的后果。结果是赔了夫人又折兵,不但浪费了资源却无法在企业市场闯出名号,又折损了Borland的金字招牌。
另外一个有问题的决策是把Zack Urlocker拔擢成Borland行销部门的副总裁。由于Zack在Delphi 3出色的表现,以及和Paul Gross激活的Golden Gate Strategy让Delbert心动,并且Delbert认为通过Golden Gate Strategy可以让Borland打入企业市场,因此Delbert对Paul Gross和Zack Urlocker都印象深刻。不久之后,Delbert分别提拔了Paul Gross为Borland开发工具部门的副总裁、Zack Urlocker为行销部门的副总裁。
本质上Zack是一个非常好的开发者,对于产品也有很敏锐的感触,应该是非常理想的产品线管理人物,Borland应该让Zack好好地呆在R&D部门,为Borland的产品线运筹帷幄,好好地开发Borland以后的产品。只可惜的是"水往低处流,人往高处走",副总裁的位置放在面前,Zack当然想升官发财(谁不是呢?)。不过Zack并没有想到自己的优缺点。他固然是出色的开发人员和产品开发人员,但是对于行销却是门外汉。在Zack做了行销副总裁之后,Borland的R&D小组不但失去了一员大将,更糟糕的是Zack似乎也开始向Delbert学习,慢慢有了好大喜功的做事方式。
首先,Zack扩充Borland行销人员到达了100多人的数目。可是,当时全世界Borland的员工才将近1000多人,行销的人员居然超过九分之一的比重,实在是太夸张了。不过,这么多人的部门在当时仍然没有做出什么好的行销工作,仍然被Borland的使用者抱怨。我还记得当时我曾向行销部门要求所有开发工具的市场竞争资料,结果行销部门只说没有这种资料,当时我还很生气,这么庞大的部门居然连这么基本的竞争信息都没有。事实上,当时Delbert Yocam同意让Zack的行销部门招聘这么多人,除了是因为Zack很红之外,和Delbert想改善以往Borland做得很烂的Marketing工作也有很大的关系。Delbert认为Zack在产品线方面表现得很出色,因此也希望通过Zack的能力来进行Delbert对于Borland行销方面的改善工作。
可惜的是Zack上任之后表现得不如预期,大家对于Zack的表现也是贬多于褒。很快,Zack就失去了以往在R&D小组时的自信满满,开始逐渐消沉,最后终于离开了Inprise(Borland)。Zack从因为Borland C/C++3.0时的OWL framework快速窜起,在Delphi 3时达到生涯的高峰,一直到以行销副总裁之尊黯然离开Borland,真是令人感慨。如果Zack能够清楚了解自己的优缺点,不要去接行销的工作,而继续在R&D部门发展,也许他会有更好的成果。从Zack的奋斗过程,我认为程序员也许应该想想自己未来的发展方向,好的技术人员一定是好的管理或是行销人才吗?
一开始我知道Zack Urlocker这号人物,是在数年前我还在Georgia Institute of Technology念书时从那时著名的"Windows Tech Journal (WTJ)"得知的。当时Zack在WTJ上一直有Object Pascal的专栏,写的内容都非常好,深深地吸引了我。因此当时每个月初都开车大约半小时到最近的计算机商店购买当期的WTJ,目的就是为了阅读Zack的文章,在那个时候我就认为这个家伙真是厉害。
据我所知,Zack在1999年离开了Borland之后,加入了Active Software以及数个其他的软件公司,大都是担任行销方面的高阶主管。Zack在其后的数个职位上表现得不错,不晓得是不是因为在Borland时缴了大量学费而学习到的知识。不过不管如何,我仍然认为Zack Urlocker是一位值得尊敬的人物,因为他至少在一生中开发了2个重要而且成功的产品"Borland C/C++和Delphi",本身的技术水准也很高。相信Zack也将永远记得Borland C/C++和Delphi,这两个产品是Zack一生的成就和骄傲。再见了Zack Urlocker,相信许多的Borland C/C++和Delphi的使用者都会记得你的。
自巅峰而下--Delphi 4
中国人一直不喜欢"4"这个数字,认为它不吉利。难道说"4"对于Borland来说也是一个挥之不去的噩梦吗?当初的Borland C/C++4.0对Borland来说是永难忘怀的噩梦,到了Delphi 4,难道Borland又要重蹈覆辙吗?
时值1998年,是下一个Delphi版本应该要推出的年份,也是Delbert Yocam进入Borland当CEO的第2年。对于美国企业的CEO来说,第2年是CEO向董事会显示经营绩效以及缴出成绩单的时候了。Delbert为了能够缴出靓丽的成绩单,因此在1998年决定必须拉高Borland的营收,以冲高Borland的股票价格。但是,当时的Borland才刚进入组件和中间件的市场,尚未在企业市场占稳脚跟,因此Delbert决定在Borland的开发工具产品线中动脑筋。Delbert做的决定就是强迫规定从1998年起,在每一个Quarter(也就是每3个月),每一个Borland产品开发部门都必须推出一个新产品,让Borland每一个Quarter都有新产品可以销售,以便增加Borland的营收。
不过,DelbeN这个决定却相当的糟糕,这让Borland每一个产品部门的主管都面临了强大的压力,因为即使是产品还没有准备好推出,但是时间一到,不管产品品质如何,都一定要出货。Delbert这个错误的决定让1998年又成为Borland的噩梦年。
Delphi 1、2和3的时间间隔都是1年多一点,展现了Delphi强劲的生命力。依照原本的计划,Delphi 4也应该是在1998年推出的。但是1998年Borland在内部开始研发数项新的科技和产品,加上Microsoft不断的挖角行动,都让Delphi 4的研发工作受到了延迟。依照当时Delphi 4的研发时程,Delphi 4最早应该在1998年的第4季才能够推出。但是很不幸的是,为了达成Delbert Yocam的要求,Delphi 4在1998年的第三季就必须出货。在接近1998年的第3季之时,虽然Delphi的R&D小组仍然无法完成Delphi 4,并且极力抗拒出货,无奈在CEO强大的压力下,Delphi 4仍然必须在第3季准时出货。
从我个人的角度来看,当时Delphi 4的产品品质应该只到Beta 2的阶段,离真正能出货尚有一段不小的距离。Delbert强迫Delphi 4推出,不但打击了Delphi R&D小组的土气,如此乱搞产品线,以外行领导内行的结果只是让Delphi砸坏了自己的招牌。不过站在Delbert的角度则又不一样了,因为对Delbert来说,如果在1998还无法冲高Borland的营收,那么Delbert肯定是要下台的,因此Delbert只有孤注一掷了。
1998年的第3季,Delphi 4果然被强迫推出了。虽然Delphi 4的新功能仍然亮眼,但是品质不稳的恶名也很快地出现在使用者的抱怨之中。随后,使用者的不满愈来愈强烈,Borland面对四面八方的反弹不得不快速地做出响应,立刻开始着手Delphi 4 Patch的开发,以期快速修正Delphi 4的臭虫。依我的看法,Delphi 4一直要到Patch 2才应该是当初Delphi 4出货时的品质。由于Delphi 4的反应不佳,因此未能再次把Delphi的销售量拉上新高,Delphi原本锐不可当的气势也为之一挫。对于Borland来说,Delphi 4的销售并没有增加太多的收入,Delbert打的如意算盘当然也落空了。Delphi 4的失败也严重地影响了C++Builder的品质和销售,Delbert恶搞产品的开发之后不但又让Borland开始赔钱,终于也自尝恶果,在1999年被Borland的董事会开除。不过。无论如何,Delbert的决策已经对产品造成了巨大的伤害。
虽然Delphi 4的诞生过程充满了困难,命运也很坎坷,不若它的兄弟般好命。但是Delphi 4却意外地向全世界揭露了Delphi另外一个Architect的庐山真面目,那就是Chuck Jazdzewski。在Delphi 4中,使用者只要开启About对话盒,并且按下"Alt+chuck",那么就可以看到下图的画面。这个简短的画面是Delphi R&D成员之一偷偷使用V8录下来并且放入Delphi 4中的,这也是第一次Chuck露脸于全世界。Chuck事先并不知情,而在以往的Delphi 1/2/3中放的人物图片则一直是Anders。这些隐藏的有趣图片以及Delphi R&D开发小组的名单在Delphi中称为"Eastern Eggs"。
直到1999年,在费城举行Borland Conference时,我才真正有机会见到Chuck,并且和Chuck当面讨论一些事情。Delphi 4的失利让Delphi从巅峰的态势往下沉沦,要等到Danny Thorpe继Zack之后掌握Delphi的研发大权后才能再次向前挺进。
Delbert最后的挣扎
由于Delbert错误的决策先后让Delphi 4和C++Builder 4失利,Borland每季又开始亏损了。显然,Delbert自己也心知肚明,如果再没有任何建树的话,他很快就要下台了。为了做最后的挣扎,Delbert决定和其他公司合作。1998年正是Java快速兴起的年份,SUN在JavaWorkshop失利之后,便一直想找一个好的Java开发工具。而当时Borland发表了JBuilder 2,虽然JBuilder还不是Java市场上最受欢迎的Java开发工具,但是JBuilder是最快速成长以及最受好评的Java开发工具。SUN看到了JBuilder的潜力,因此对于JBuilder拥有强烈的兴趣。
SUN显示了对JBuilder的兴趣,无疑给了Delbert Yocam打了一针强心剂,几乎在绝望中的Delbert似乎看到了一丝曙光。Delbert很快便和SUN接触,看看SUN能够提出什么条件。Delbert的如意算盘是让SUN花大钱并购Borland,如此一来,JBuilder不就自然成了SUN的产品了吗?由于在那个时候Borland的股价已经跌到了3到4美金之间,而SUN的股价却高高在上,大概是在80多美金。因此,如果Delbert能够促成合并,那么Delbert Yocam便可以大捞一票,甚至在并购之后,Delbert还有可能成为SUN的副总裁,继续位居要津。
不过世事不能尽如入意。SUN只对JBuilder有胃口,对Borland其他的产品却没有多大的兴趣,因为Delphi/C++Builder等都不属于Java系列的产品。而且Delbert Yocam又狮子大开口,希望SUN以每股20几美元的代价收购Borland的股票,当场吓得SUN退避三舍,这件事情后来也就不了了之了。当然,Delbert Yocam很不甘心,因为促不成这宗合并案子,再加上Borland被Delbert搞得乌烟瘴气,下台的命运也就不可避免了。
也许是"天将降大任于斯人也,必先苦其心志,空乏其身"吧,Borland在Philippe Kahn离开之后,历经了数任CEO,但是一直没有找到真正好的CEO,能够适当地带领Borland走向光明。不过Delbert Yocam似乎是黎明前的黑暗,在Delbert不名誉地离开Borland之后,Borland也即将看到未来之光。
Danny的接棒和决心
Delphi 4的仓促推出果然在市场上反应很差,销量上也一落千丈。原本寄望能够再次获得好成绩让Delphi的总销售量再次冲上新高,并且为Borland带来更多的营收。但这一切都很快地幻灭了,品质不好的产品仍然得面对市场严厉的考验。在Delphi 4遭受了前所未有的失败、接着C++Builder 4也铩羽而归之后,Borland又开始走下坡路了。Borland好不容易通过Delphi带来的希望却在错误的决策下被牺牲了。在1999年4月Delbert终于被Borland的董事会扫地出门,结束了在Borland的日子。我认为,Delbert在Borland将近3年的时间里,对Bodand造成了许多的伤害,其好大喜功的管理方式对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让Delphi从失利中重新站起、找回昔日的光荣便是一个非常重要的工作。在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的最佳化编译器都是Anders Hejlsberg撰写的,因此当Anders离开Borland之后几乎没有人能够维护编译器程序代码。Anders都是使用汇编语言(Assembly)撰写复杂的编译器程序代码,而且其品质是如此之好,不但连Chuck Jazdzewski都赞不绝口,更麻烦的是当时Borland几乎没有工程师敢随便更动这些程序代码。
因此在Anders Hejlsberg于Delphi 2离开了Borland之后,Borland立刻采取了数项行动希望能够解决这个"烫手山芋"。Borland决定的第一件事情是从Delphi的编译器抽离大部分最佳化的工作。因为要在Anders的程序代码再继续加入最佳化程序代码是Borland当时没有把握的事情。另外,由于当时Borland已经决定开发C++Builder,而C++Builder也需要一个最佳化的编译器,因此,Borland认为如果能够提供一个共同的后端最佳化编译器,那么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之所以同时在ObjectPascal程序语言、Delphi RTL以及Delphi编译器进行渐进的改善工作,是有许多因素影响的。首先,当然是为了接下Anders留下的工作,另外一个原因是在Delphi 3之后,必须再次对于COM的支持进行强化。最后,是为下在Delphi 4之后,准备把Delphi移植到Linux上。事实上,Borland在Delphi的R&D小组中曾经一度准备把Delphi和C++Builder移植到SUN的作业平台上,这是为了因应Delbert和SUN合并时进行的准备工作。甚至Delphi的R&D小组认为,既然要开发跨平台的Delphi和C++Builder,那么不如把Apple的Macintosh操作系统也纳入考虑。Delphi的R&D小组在当时甚至已经列出了开发SUN和Macintosh平台的时间表,但是稍后随着和SUN合并计划的破灭以及Delbert的下台,这个跨平台的Delphi计划也就暂停了。一直等到Dale Fuller上台强力要求开发Linux平台的RAD工具之后,Delphi的R&D小组才再次激活跨平台的计划。
为了支持更好的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更是投注了大量的心血,Danny的第一步是去芜存菁。Delphi经过了三、四年的发展,许多RTL中的程序代码不是过时,就是需要进行最佳化的调整。因此从Delphi 4开始,Danny便逐渐整理和改善Delphi的RTL,这方面的成果从Delphi 5之后便逐渐显露出来,Delphi的RTL不但在效率方面有了进步,更提供了愈来愈多以前版本的Delphi所没有的功能。当然,Danny在Delphi RTL方面最大的贡献是改善RTL成为跨平台的基础。Danny维护后的Delphi RTL最后也成功地移植到了Linux平台上,并且克服了许多Windows以及Linux平台差异处的困难。当然,Danny Thorpe和Chuck Jazdzewski是Kylix得以推出的最重要的功臣之一。为了解决Kylix在Linux平台上许多的技术问题,后来还引起了Linux开发者社群围攻Danny Thorpe的精彩大戏,最后导致Danny Thorpe

我要回帖

更多关于 delphi 做生产排期 的文章

 

随机推荐