一直想写篇文章,讲述我个人在过去10多年来工作中经历的一些事情,以及这些日子
中那些我心目中的伟大的工程师们对于信息界的贡献。如果读者和我的年龄差不多,
那对于这些内容可能会更有兴趣,因为它们揭示了当时许多软件兴起和没落的过程以
及原因。虽然这些事情距离我们很遥远,但我相信许多人仍然对于背后的故事感兴趣。
即便没有经历过那段美好的回忆,那也可以把这些内容当成一个有趣的故事来读吧。
不过我想,更重要的是让我们一起认识一些伟大的人物,我个人对于其中的许多人都
非常佩服,也非常羡慕。甚至我常常在想,如果自己也有他们的环境,是不是也能够
和他们一样这么有成就呢?这些人对于以往都有着重要的贡献,对未来也仍将有着重
要的影响,因为他们都有一身不凡的技术。对于许多重要的人物,我都尽量收集了他
们的照片,让各位也能够认识这些优秀的工程师、杰出的人物。
当然,如果各位能够从这些内容中学习到失败的教训以及成功的经验,那么本书就更
有价值了。
Borland的兴起
记得大学时,第一个在PC上使用的软件就是SideKick。这个至今让我仍然无法忘记的
软件,也曾让许多人津津乐道,而Borland当时也就是以SideKick成为全球知名的软
件公司。不过Borland第一个奠立创业基础的软件,却是我大二用来交作业的Turbo
Pascal,而Turbo Pascal也是我听到的第一个关于Borland的有趣的故事。
当年Philippe Kahn(Borland的创始人)和Anders Hejlsberg到美国创业时,便由Anders
以汇编语言撰写了Turbo Pascal的编译器,而Philippe则包办了Turbo Pascal其他的
部分。在这两位仁兄开发完Turbo Pascal之后,穷得快连登广告的钱都没有了。Philipp
e
为了在Byte杂志(还记得这个著名的杂志吗?)刊登Turbo Pascal的广告,和Anders商
量了一个方法,那就是直接约Byte杂志的人到当时Borland的办公室讨论刊登广告的
事情。
当Byte的人到了Borland之后,Philippe、Anders和公司的助理小姐故意忙着接电话,
接受Turbo Pascal的订单,并且告诉Byte杂志的人等一下。过了一阵之后Philippe
才进入房间向Byte的人道歉,说他们的Turbo Pascal受到市场的热烈欢迎,订单源源
不断地到来,因此可能不需要在Byte杂志刊登广告了,接着Philippe向Byte的人展示
Turbo Pascal这个产品。由于在当时的机器中Turbo Pascal能够在极少的RAM中常驻
执行,又提供闪电般的编译速度,这立刻让Byte杂志的人当场震惊。凭着专业知识和
丰富的经验,Byte的人立刻知道这将是一个革命性的软件,因此马上希望Philippe能
够在Byte杂志刊登Turbo Pascal的广告,并且愿意以半价刊登。当然,Philippe也立
刻爽快地答应了,于是一个革命性的软件Turbo Pascal终于在Byte杂志刊登出来了。
当时售价49.99美元的Turbo Pascal立刻为Borland带来了大量的财富,Turbo Pascal
也马上成为PC上除了基本的Basic之外最畅销的开发工具,由此正式揭开了Borland影
响PC开发工具近20年的历史的序幕。
Turbo Pascal是由Anders Hejlsberg亲自开发的,并且和Philippe Kahn谈好的条件
是Borland每卖出一套Turbo Pascal,Anders便从中抽取一份版权费。由于当时软件
的价格不算便宜,能够写编译器的人更是少之又少,所以编译器工程师通常都能够获
得优厚的报酬。因此当时Anders Hejlsberg在完成了Turbo Pascal、并且和Philippe
Kahn谈好了合作条件之后,Anders理所当然地认为一套Turbo Pascal会定价数百元
美金,因为这不但是当时一般编译器的价格,而且Turbo Pascal还内含了一个开发环
境和编辑器(Editor),这是当时许多工具没有提供的。
没有想到极具商业头脑的Philippe Kahn了解到:如果把Turbo Pascal定价在数百美
金,那么Turbo Pascal可能只会卖出数百到数千套,无法冲出大量的销售额。因此,
Philippe Kahn
以极大的勇气,瞒着Anders Hejlsberg只把Turbo Pascal定价为49.95美金。这种价
格在当时对于编译器和开发工具来说简直是不可思议的低价。当Anders Hejlsberg知
道了Philippe Kahn的定价后,简直快气昏了。因为在这么低的价格下Anders的版税
金一定少得可怜,因此当时Anders说他把最好的Pascal开发工具拿去让一个白痴销售。
没有想到的是,Philippe Kahn的定价策略获得了极大的成功。Turbo Pascal以极佳
的品质和令人不可思议的低价格成为当时最具吸引力的Pascal开发工具。当然,在
Turbo Pascal卖出了让人难以置信的成绩之后,Anders便再也不提他把专业Pascal编
译器让白痴去卖这件事了。
关键产品--SideKick
虽然Turbo Pascal快速地让Borland在当时全世界的程序员中成为最响亮的软件新星,
但是真正让Borland打人一般计算机使用人群、快速成长为软件巨人的大功臣的,却
是Borland早期最重要的产品--SideKick。
在Turbo Pascal之后,Borland接着推出了SideKick这套软件。SideKick可以说是随
后著名的内存常驻软件(Terminate and Stay Resident-TSR)的始祖,也是Borland跨
出开发工具领域、让几乎所有PC使用者认识Borland的关键软件。SideKick在当时以
许多丰富的小工具和记事功能让它成为每一个程序员爱不释手的工具。还记得当时我
每天都会使用SideKick的ASCII对照表和计算器的功能,因为在汇编语言(Assembly)
盛行的时期,查阅ASCII对照表和在2进制、10进制以及16进制之间进行转换是每日必
要的工作。
当然SideKick也很快成为了畅销软件,在全球狂卖数10万套,继续把Borland往顶尖
的软件公司推进。
所谓的TSE代表Terminate and Stay Resident。这个意思是说,这类软件在执行后会
隐藏在内存的某个位置中,但是并没有出现在屏幕上。不过使用者通过一个快捷键就
可以立刻调出这类软件让使用者使用,在使用完毕之后又可以按一个快捷键再度隐藏
它。这样的软件运行方式在当时是一项全新的创举。
以我的眼光来看,SideKick这个软件对于Borland来说是非常关键的作品,因为我将
SideKick归类成"消费型软件"产品。所谓消费型软件,是指可以被所有计算机使用者
使用的软件,而不是只给程序员或是开发者使用的软件。凡是现今比较会赚钱或是规
模比较大的软件公司大都属于开发"消费型软件"的公司。例如Microsoft除了有和Borlan
d
竞争得你死我活的开发工具之外,最重要的是Microsoft拥有两大"消费型软件":Window
s
操作系统和Office。这两类软件才是Microsoft最赚钱的产品。Oracle是另外一个很
好的例子,数据库几乎是现在任何应用都需要使用的软件。同样,SideKick就属于这
一类型的软件,因为SideKick可以被所有的开发者使用来增加生产力,而不管开发者
使用的是什么语言。因此当Borland推出SideKick之后,立刻在全世界狂卖,也成为
继Turbo Pascal之后Borland最赚钱的产品。我认为在后来的数年之中Borland走得比
较辛苦,便是因为Borland再也没有推出像SideKick一样属于"消费型软件"的重量级
产品,而只有属于程序员和开发者小众市场的产品,这是非常可惜的事情。而"消费
型软件"也是到现在我仍然认为Borland应该推出的产品。
由于SideKick的TSR技术是当时独一无二的,而且是如此的好用,这引起了当时许多
人的好奇,并且成了所有软件厂商模仿的对象,我还记得稍后许多的计算机信息书籍
都以如何学习TSR技术作为卖点。也是因为SideKick和TSR太成功了,因此Borland立
刻进行了两个工作。第一当然是马上开发下一版的SideKick,让SideKick继续执类似
软件的牛耳,以防止其他软件公司推出类似的软件来分食SideKick打下的天下。
很快地,Borland便推出了SideKick的后续版本,不但功能更多,而且SideKick从原
本完全以开发者为中心的软件转变为适合所有计算机使用者使用的消费型软件。看看
左图,从产品封面以"Desktop Organizer"为主题便可以了解到SideKick在当时的定
位。果然,后续的SideKick又持续地大卖,这让Philippe Kahn非常振奋,也让他雄
心大盛,开始想要通过SideKick的成功主导PC软件的标准,这当然就是SideKick一举
成名的TSR技术。
在Borland通过Turbo Pascal和SideKick大获成功之后,也因TSR技术成为大多数开发
者津津乐道的软件公司,许多软件公司都开始模仿Borland的TSR技术开发大量的TSR
软件。不过当TSR技术大量被运作之后。最后却造成众多的TSR软件彼此冲突,无法正
确地相互共存,这主要是因为许多TSR软件都使用了相同的快捷键来调出/关闭软件,
或是隐藏在相同的内存位置。我还记得,当时同时使用几个TSR软件时,必须遵照一
定的运行次序才可以正常使用。
为了解决这个扰人的问题,Borland开始广邀软件公司,想要以Borland为首制定TSR
的标准。如此一来,只要所有的软件厂商遵照Borland制定的标准,那么所有的TSR软
件就可以彼此正确地运行在PC之中。当Borland公布了这个想法并且发表了初步的TSR
标准规格之后,却立刻引起了Microsoft的紧张。因为当时TSR是如此的流行,Microsoft
害怕TSR技术由Borland主导之后会让Borland成为PC软件的霸主,进而严重影响Microsof
t
想主宰PC的计划。
因此在Borland开始正式制定TSR标准之际,Microsoft便站出来反对Borland定义的TSR
标准,并且声明Microsoft将在未来的DOS操作系统中加入对于TSR的支持,因此没有
必要再额外制定TSR标准。当时的软件公司,包括Borland在内,都无法和Microsoft
对抗。在操作系统厂商表明了反对立场之后,Borland的这个构想很快便迫于形势而
放弃了。关于TSR的争议应该算是Borland和Microsoft之间的第一场战争。虽然在没
有引起太大的烽火之前便很快收场,不过也算是Borland和M1crosoft第一次真正的交
手。也正是由于这次的相争,让Microsoft惊讶于Borland快速的兴起,并开始正视
Borland这家在当时还算小的软件公司。
虽然在有关TSR的技术之争中Microsoft赢得了胜利,不过很奇怪的是,此后TSR软件
反而开始慢慢地退烧。除了一些少数的公用程序软件仍然使用TSR之外,之后便没有
什么重量级的软件是使用TSR技术开发的,这算不算是另一桩Microsoft介入之后搞砸
的技术呢?
最后再叙述一个从Borland老员工处听来的有趣故事。许多人一直想要知道:Borland
的总部在哪里?或是想要知道:为什么Borland会选择Scott Valley作为总部?事情
的经过是这样的:
当年Philippe Kahn和Anders Hejlsberg到美国准备开始创业时,由于没有资金,
Philippe Kahn就在西餐厅打工,负责端盘子的工作,而Anders Hejlsberg则努力的
在开发Turbo Pascal。
当Philippe Kahn存了一笔小钱之后,两个人便开始了创业大计。首先他们必须找到
一个公司的总部,可是要在哪里实现Philippe Kahn和Anders Hejlsberg心中的理想
呢?虽然当时他们住在L.A.附近,但是光凭Philippe Kahn存的一点小钱是绝不够在
L.A.大展鸿图的,因此Philippe Kahn和Anders Hejlsberg决定到比较偏远的地方试
试。于是这两位仁兄便开着Philippe Kahn的破车往南出发了。听说当Philippe Kahn
把车开到Scott Valley附近时刚好没有汽油了,眼看四周的环境觉得还不错,就决定
在这个地方展开Philippe Kahn和Anders Hejlsberg的创业之梦。就是这个决定让原
本默默无闻的Scott Valley在数年之后竟成为一个家喻户晓的高科技盛地。
和Borland的缘由
Turbo Pascal是我在大二、大三撰写作业时的最爱,几乎所有的作业都是使用Turbo
Pascal完成的。当然其时Horowise的Data Structure这门课也是使用Turbo Pascal
过关的,因此从那个时候开始,我便非常喜欢Borland这家公司,慢慢地也开始对Borlan
d
有了特别的感情。
在我大二时,Microsoft推出了Microsoft Pascal,但是它和Turbo Pascal的确有一
段差距,我使用了一次之后便把它丢到垃圾桶。稍后Borland也推出了Turbo Basic
1.0。我记得这个编译器非常的棒,编译速度就和Turbo Pascal一样快,是一个非常
有前途的产品。但是不知道为什么它只有1.0,之后便和Microsoft Pascal一样消失
了。后来听说是Microsoft和Borland互相交换条件,Microsoft不进入Pascal的市场,
而Borland则退出Basic的市场。至于是不是真的确有其事,我就不得而知了。
我在大二初次接触到了C语言,第一本阅读的书便是王兴隆先生写的C语言书籍,也从
此开始和C语言结下了渊源。平生第一个使用的C编译器便是Lattice C,不知道还有
没有读者记得?当时使用两个5?磁盘抽换以便编译C程序的情景,真是麻烦得不得了。
稍后Borland终于推出了风行天下的Turbo C编译器,从此之后Turbo C便成了我不离
身的工具,而Borland也通过Turbo C这第三项畅销产品迈向了世界前10名的项尖软件
公司。
当完2年的兵之后,我在中研院首次使用了C++语言。第一个使用的C++编译器则是Zortec
h
C/C++,这家公司稍后被Symantec收购成为Symantec C/C++的核心部门,这个故事稍
后再说明。后来Borland也推出了它的第一个C/C++编译器Turbo C/C++1.0,但是和
Zortech C/C++比较之后,我还是觉得Zortech C/C++比较好,因此就继续使用Zortech
C/C++。一直到Borland的Turbo C/C++2.0编译器推出之后,才逐渐成为C/C++语言的王
者,而我也像以往一样把Zortech C/C++换成了Turbo C/C++。
在我1991年到Georgia Institute of Technology念硕土时,终于使用自己的零用钱
49.99美金购买了生平第一套正版软件Turbo C/C++4.5,随后又购买了Borland
Pascal。在毕业前的一个Quarter,Microsoft推出了Microsoft C/C++6.0以及MFC 1.0,
由于MFC是第一个C/C++的Framework,因此也花了一些钱购买了一套Microsoft C/C++以
便学习MFC。但是在收到Microsoft C/C++之后,我却很失望,因为Microsoft C/C++
6.0仍然没有Windows图形集成开发环境,还是在DOS下的集成开发环境。而且以我的
眼光来看,MFC 1.0并不好用。Microsoft C/C++6.0的C/C++最佳化编译器在当时也是
一个笑话,不但产生的程序代码效率不好,甚至会产生错误的程序代码。许多IT杂志
也称Microsoft C/C++6.0是一个平庸的(Mediocre)产品。因此我就把它丢在一边再也
没有使用。在Microsoft C/C++6.0推出之后不久,Borland终于发布了Borland
C/C++3.0,而这套软件也开启了Borland雄霸C/C++编译器长达五六年之久的序幕。
Borland C/C++3.0推出之后,由于拥有第一个在Windows下稳定的图形集成开发环境,
而且它产生的最佳化程序代码也是Microsoft C/C++6.0望尘莫及的,因此,很快地几
乎所有的C/C++程序员都转而使用Borland C/C++3.0。那个时候几乎所有的公用程序
或是Shareware都是使用Borland C/C++开发的,许多硬件厂商的驱动程序也是使用
Borland C/C++3.0来撰写的。
1992年我取得Georgia Institute of Technology的硕士学位之后,最想进入的公司
便是Borland和Microsoft,不过最后我还是决定回台湾工作。在此时Borland也逐渐
进入了最巅峰的时期,因为Borland推出了Borland C/C++3.1。
Borland在Borland C/C++3.0获得空前的胜利之后,并没有松懈下来,因为Borland知
道Borland C/C++3.0还缺一个最重要的胜利因子,那就是如同Microsoft的MFC一样的
C/C++ Framework,因为Borland也看出了Framework将会是未来C/C++产品中最重要的
一环。不过Borland此时来到了一个重要的十字路口,那就是到底要自己开发一个和
MFC抗衡的Framework,还是直接采用Microsoft的MFC?如果要使用MFC的话,那么
Microsoft会愿意授权给Borland吗?如果Borland要自己开发Framework,那么势必要
花上一些时间,但是Borland想趁Borland C/C++3.0如虹的气势再下一城,以便彻底击
溃Microsoft C/C++。因此,最后Borland决定向一家叫White Water的公司购买一套由
这家公司开发的一个Framework,这套Framework便是后来鼎鼎大名的OWL的源流。而
Borland也因为向White Water购买了这套Framework,因而也引进了一个日后非常重
要的人物,那就是后来负责开发Delphi的一员大将--Zack Urlocker。
C/C++的光荣战役
Borland购买了White Water的C/C++ Framework之后,便更名为OWL(Object Windows
Library),并且很快地推出了以OWL 1.0为核心的Borland C/C++3.1。由于OWL比当
时的MFC 1.0封装得更为完整且好用,再加入Resource Workshop可视化能力,以及
Borland C/C++3.1本身最强劲的编译器和集成开发环境,因此立刻风靡了全世界,
其受欢迎的程度更是远远的超过了它的前一版本Borland C/C++3.0。
Borland C/C++3.1的畅销,立刻让Borland在C/C++市场一举击溃Microsoft C/C++,
市场占有率超过了50%,是全球第一的C/C++产品,也把Borland推上了最高峰,成为
全世界第三大的软件公司。
在当时,我所工作的开发小组也立刻改用Borland C/C++ 3.1来开发Windows下的MRP
系统,而Borland C/C++3.1也是我使用过的Borland最稳定的C/C++版本之一。由于那
个时候一天到晚都使用C/C++工作,因此就有了一些小心得。稍加整理后我便投稿到
刚成立不久的《RUN!PC》杂志,也许是我的运气不错,《RUN!PC》很快发表了我的文
章。就在这篇文章发表之后,台湾的Borland分公司注意到了我,开始和我联络,并
且从此展开了我和Borland的互动。而Borland C/C++3.1也是第一套Borland免费送我
的软件,当然代价就是希望我多写一些Borland产品的文章。
接着Borland又计划推出Windows版的Borland Pascal。不过在Borland开发Pascal For
Windows时,当时(现在也还是)最具盛名的Charles Petzold(我看的第一本Windows
程序设计的书就是这位仁兄写的,相信许多人也是看他的书一路学来的)就说除了
C/C++之外,Borland不可能做出能够在Windows下执行的Borland Pascal。不过很明
显地,即使是Windows API的大师Charles也错了,Borland不但做了出来,而且
Borland Pascal For Windows还非常的畅销,当然Borland Pascal For Windows也是
后来Delphi的根基。
当时的Borland可说是不可一世,不但产品大卖,而且日进斗金。Borland在Scott
Valley豪华的总部也是在那个时候由Philippe Kahn大手笔地花了一亿多美金搭建的
(想想10年前的60多亿台币可以盖什么样的房子?)。不过也许是Borland太成功了,
因此也开始让Philippe Kahn渐渐地养成了好大喜功、目中无人的态度,这也种下了
Borland开始走向衰退的因子。
在Borland最强盛的时期,当然也就是Microsoft最痛恨Borland的时候,发生了一个
著名的事件和一个著名的虚拟人物。由于当时Microsoft的开发工具一直打不过Borland
的产品,因此在Microsoft的开发工具刊物上便出现了一个作者,不断地以文章嘲笑
Borland,这个作者的笔名是Buck Forland。由于这位作者的文章内容以及他的笔名
引起了当时Borland的不满以及大量Borland使用者的强烈抗议,稍后这位作者突然消
失。因此有许多人推测这个作者应该是Microsoft的某位工程师,由于一直无法打败
Borland的产品,恼羞成怒,因此才会以这个笔名来发泄。如果各位读者到现在还摸
不着头脑,不知道为什么这个笔名会引起轩然大波,那么请试着把Buck Foland这两
个英文字的第一个字母一对调就知道为什么了。现在各位是否会心一笑了?
■ 在Borland C/C++3.1大获成功之后,Borland却开始松懈了,并且开始走下坡路。
当然这有许多的原因,我所知的其中最重要的原因有数项:Philippe Kahn和当时
Borland C/C++的产品经理闹翻了。这位Borland C/C++的产品经理的名字是Eugene
Wang,Eugene是一位非常聪明的越南人。他一手把Borland C/C++带到了世界第一的
地位,并且在Borland C/C++3.1成功之后有了更伟大的想法,那就是想在下一个
Borland C/C++版本中完整地以OWL封装所有的Windows APl。因为OWL 1.0虽然比
MFC 1.0来得优秀,但是OWL的隐忧就是尚未完整封装所有Windows的APl。此外Eugene
还计划以OWL为核心,开发一个类似今日Borland C/C++ Builder以可视化组件为开发
方式的开发工具。请各位读者想一想,如果在当时Borland能够开发出这种C/C++开发
工具,那将会是一个多么可怕的产品,稍后Microsoft的Visual C/C++1.0只是能够在
集成开发环境中自动产生MFC的程序代码就立刻轰动了C/C++市场,造成了大量程序员
转入Microsoft的阵营。而且,即使是目前的Borland C/C++ Builder,使用的
Framework仍然是以Object Pascal为核心的组件Framework,而不是纯粹的C/C++程
序代码。如果当时Eugene能够做出他心中的下一版Borland C/C++,那么我想,到现
在Borland C/C++可能还是市场中第一的C/C++开发工具。
不过很不幸的是,Eugene稍后和Philippe Kahn发生了激烈的争执。一气之下,Eugene
离开了Borland。而Philippe Kahn则认为Borland C/C++的地位已不可动摇,因此也
没有想立刻开发下一版的Borland C/C++。这样一拖竟然浪费了将近2年的时间,更大
的麻烦是Microsoft可没有白白浪费这2年的时间。Microsoft Visual C/C++1.0在
Borland C/C++3.1发布两年之后推出,并且立刻获得市场好评。Visual C/C++不但在
编译器方面能够和Borland C/C++3.1相抗衡,在集成开发环境方面更大幅领先了Borland
C/C++3.1,还能够自动产生MFC的程序代码,再也不是昔日的吴下阿蒙。直到此时,
Philippe Kahn才从梦中惊醒而急于开发下一代的Borland C/C++4.0。但此时为时已晚
,
C/C++的开发工具已经发生了剧烈的变化,Borland的C/C++开发工具市场从此就开始逐渐
地被Microsoft蚕食了。
Eugene在离开Borland之后,立刻被Symantec所网罗,稍后Eugene也在非常短的时间
之内为Symantec开发出了著名的Symantec C/C++。Symantec C/C++在当时被所有的技
术刊物评比为拥有最棒的集成开发环境和最有创意的C/C++开发工具,由此可见Eugene
的功力。不过Symantec C/C++稍后也终究不敌Microsoft Visual C/C++,这个故事
的原因在稍后"四大C/C++ 编译器之争"的章节中再详细地说明。最后听说Eugene跑去
做生意了,并且在前几年写了一本教导科技人员如何面试的书籍。一直很痛心Borland
失去了这么一位优秀的人材。我常常想,如果当初Eugene没有离开Borland,那么历
史可能就不是现在的这样了,Sign!!!
■ Philippe Kahn大手笔地花了400多Million美金买下了Ashton-Tate公司和dbase。
当时许多人都批评Philippe Kahn做了不值当的事情,因为Ashton-Tate不值这么多钱。
但是由于当时Borland多的是现金,因此Philippe Kahn也不在意。不过Borland逐渐
走向衰败的主因并不在此,而是在Borland买下了dbase之后,并没有立刻积极地开发
dbase For Windows,反而把dbase丢在一旁。Philippe Kahn会如此做的原因便是当时
Borland的另外一个和数据库有关的产品Paradox卖得也很好,因此Philippe Kahn并不
急于开发dbase For Windows。不过Philippe Kahn忘记了一件事情,那就是当时市场
上拥有大量使用者数目的dbase程序员需要一个好的Windows版dbase,但是Philippe
Kahn购买了dbase却不提供Windows版的解决方案,因此当稍后Microsoft以极小的代
价买下Fox这家公司,并且在数年之后推出FoxBASE For Windows,吸引了大量原先的
dbase程序员以及Paradox的程序员之后,Philippe Kahn才警觉事情不对而匆匆忙忙
地开发dbase For Windows。但是当dbase For Windows推出之后,Microsoft早已推
出了两个FoxBASE For Windows的版本,占据了大部分的市场,dbase For Windows其
势已不可为了。
■ Microsoft开始向Borland挖角。由于Microsoft在许多的开发工具战役中一直被
Borland打得灰头土脸,更何况Borland C/C++3.1几乎抢占了大部分的市场,因此
Microsoft便开始准备好好地对付Borland。但是由于其时Borland在编译器的技术领
域领先了Microsoft数年之久,Microsoft无法在短时间之内赶上Borland,所以
Microsoft决定使用最有效的方法立刻追上Borland的技术,那就是直接从Borland挖角。
结果,后来Microsoft的Visual C/C++小组有60%的成员是从Borland挖来的,这个举
动不但立刻让Borland流失了大量的优秀技术人才,也在数年之后造成了Borland控告
Microsoft的导火线。各位读者看到这里是否有什么感觉呢?不过我总觉得Microsoft
并不是光明正大地击败Borland,而是使用了不公平的竞争手段。
Philippe Kahn在这段时间不但让Borland C/C++被Microsoft Visual C/C++反败为胜,
也痛失了几乎所有dbase的市场,更浪费了大量的金钱,流失了大量的优秀人员。在
这些重要的因素之下,Borland已经不可避免地开始走下坡了。
我最后一次看到Philippe Kahn,是在1994年末于亚特兰大(Atlanta)参加国际
Conference时,还和他打了一声招呼。后来Philippe Kahn离开了Borland,另外创立
了StarFish这家公司,稍后StarFish也被Motorola并购。虽然Borland由于Philippe
Kahn一些错误的决策而逐渐地从巅峰开始走下坡,但是Philippe Kahn也不愧为一个人
物。因为Philippe Kahn能够和Bill Gates一直周旋数年之久,而同一时期的许多公司
(例如Lotus)都一一被Microsoft所击败,因此Philippe Kahn还是有一套的。此外
Philippe Kahn也是唯一一个拥有工程师特性的Borland CEO,Philippe Kahn仍然
重视技术产品和技术人员。但是Borland随后的CEO几乎都是Marketing、Finance或
是Sales出身的人,这真让我怀念以往以产品和技术为优先的CEO了。
看完了上面这段今人伤心的历史,再让我们看看当Borland受到Microsoft Visual
C/C++的强大冲击之后,如何思索反击之道。在这段历史中出现了令我敬佩的第一个
Borland技术工程师Carl Quinn。
Carl Quinn在Microsoft Visual C/C++1.0推出之后,立刻奉命开发一个能够和MFC
相抗衡的全新OWL,而Carl Quinn也是数年后JBuilder的JBCL Framework的灵魂开发
人物。Carl Quinn不但负责开发OWL,也为Borland在组件Framework的技术领域做出
了重要的贡献。由于Carl Quinn的投入,开启了OWL大战MFC、Borland C/C++缠斗
Visual C/C++数年精彩好戏的序幕。
Carl Quinn是我至今还记得并敬佩的人物,让我再一次的向他致敬,并且介绍他让大
家认识。
火线全开
Borland在开发工具市场和Microsoft激战之时,Microsoft和Lotus也正在电子表格工
具以及文字处理工具市场进行大战。这时Borland不思好好地集中资源开发新的开发
工具和数据库工具(稍后本书会详细说明Borland在数据库市场的战役),也不甘寂寞
地投入了大量的资源进入这个惨烈的市场。也许是当时Borland太有钱了,或者是
Philippe Kahn的脑袋出了问题,居然决定进入这个Borland陌生的市场,更何况在
Borland投入时Lotus已现败象,Office市场已经慢慢地被Microsoft所一步一步地掌
握了。
Borland进入Office市场的第一个产品是著名的Quattro Pro电子表格。虽然Quattro
Pro是一个相当不错的产品,而且当时,由Borland C/C++编译器所开发的Quattro
Pro在执行效率上几乎是最好的,但是Borland没有想到使用电子表格的使用者是一般
的办公室人员,这些人注重的是方便性和功能性,而不是执行速度,这和开发人员是
不一样的。Borland以开发者的心态来开发电子表格工具基本上是走错了方向。因此
我记得在那段时间中,杂志评比Microsoft的Excel、Lotus的1-2-3和Borland的
Quattro Pro时,在功能方面领先的都是Excel和Lotus,在执行效率方面领先的则是
Excel和Quattro Pro。到了电子表格热战的末期,1-2-3甚至比不上Quattro Pro,因
此Lotus败走电子表格市场已是不可避免的结果了。
不过Borland虽然赢了1-2-3,但是和Excel仍然有一大段的距离,Microsoft一统电子
表格江山之势已不可动摇,因此最后Borland在损失了大量的资源之后,Quattro Pro
只能卖给Novell。
除了Quattro Pro之外,Borland也投入了很多的资源秘密地开发一个代号为Spring的
文字处理程序(Word Processor)准备和Microsoft的Word以及WordPerfect竞争,这可
能是许多人不知道的。但是这个产品最后仍然无法问市而胎死腹中,在文字处理市场
Borland不但浪费了时间,更虚掷了大量的资源。
Philippe Kahn在Office产品方面消耗了Borland大量的金钱和时间,却落得铩羽而归,
更连累了开发工具市场以及最有可能成功的数据库产品市场。
另外一个和Borland无关的故事是关于Microsoft Excel是如何兴起的。话说当Lotus
1-2-3最盛的时期,Microsoft一直在觊觎这个市场,但是苦于无法开发出一个能够
和1-2-3相竞争的产品。有一次Lotus举办了一个Lotus 1-2-3的技术研讨会,由当时
Lotus 1-2-3的首席工程师主讲。Microsoft知道了这个技术研讨会之后,立刻派出了
最好的程序设计师,现场询问Lotus是如何开发1-2-3的,并且趁机询问这位首席工程
师如何克服1-2-3在许多技术方面的难点,而这些困难处正是Microsoft的工程师无法
克服的。
当时,在现场中的Lotus首席工程师虽然知道这些人是Microsoft派来的,而且询问的
问题正是1-2-3许多关键的技术点。但是这位首席工程师凭借着多年的开发经验,认
为Microsoft不可能在短期之内追上1-2-3,因此就没有多作保留地回答了许多重要的
问题。没有想Microsoft的这些程序员也是非常聪明的人才,一经指点之后,立刻畅
然全通,在短短的1、2个版本之后不但马上追上了1-2-3,许多功能方面更是青出于
蓝,1-2-3便逐渐失去优势了。我想这位1-2-3的首席工程师一定很后悔当时回答了关
键的技术问题吧。
结论:千万不要小看Microsoft,他们是非常精于模仿的。也永远不要小看你的竞争
对手。
数据库市场的失误
Borland全盛的时期,事实上也是开发数据库产品最好的机会。因为在当时Borland手
握DOS最畅销的Paradox,并购了Ashton-Tate而拥有世界大部分dbase的市场,又取得
了Ashton-Tate从HP购买的真正关系数据库(RDBMS)--InterBase,可以说是当时全世
界数据库工具实力最雄厚的厂商。
当时的Oracle和Borland比起来,简直是小巫见大巫,而Sybase更不知道在哪里。如
果Borland能够好好地掌握这个机会,极力开发数据库产品,那么现在Borland就算不
是世界第一的软件公司,也将是世界第二的软件厂商。可惜Philippe Kahn并没有看
到这个从80年代末到90年代成长最快速的产品市场。说句笑话,如果当时Philippe
Kahn的死对头Bill Gates早一点说出"Information At Your Finger-Tip"这句话,点
醒Philippe Kahn数据库市场的重要性,那么Borland就可能是现在的Oracle了。
说到数据库市场,就不得不对Microsoft的眼光佩服,也不得不佩服Microsoft行销能
力的强悍。当Microsoft以FoxBASE For Windows强占了Windows开发者的数据库工具
市场之后,又了解到一般计算机使用者也需要使用简易好用的数据库管理工具,因此
开发出了更简易的Access。但是当时在类似的市场中,Borland的Paradox占有开发者
数据库大部分的江山,而一般使用者的数据库管理工具市场则由Lotus的Approach博
得先机。
Microsoft为了进入由Lotus Approach主宰的市场,采取了很多方法。我还记得在当
时Visual Basic 3的软件包中Microsoft附了一张优惠卷,只要800新台币就可以买一
套Access。这简直就是流血大拍卖。不过它的目标很明显,就是击败当时卖1万多元
的Lotus Approach。果然,Microsoft此招一出,Approach便被Access打得落花流水,
很快失去了市场,也很快地退出了市场。从此一般使用者的数据库管理工具市场便由
Access所独占。
但是Borland并没有警觉到Access会继续往开发者市场进攻,因此仍然没有加紧在
Paradox产品上的开发。Borland总觉得Paradox的市场地位是无法轻易撼动的,而且
Access的目标市场也不是Paradox的市场。
但是Borland忘记了Microsoft非常擅长模仿。在随后的Access版本中,Microsoft不
断地加入可程序设计的功能,因此也逐渐地吸引了一些Paradox入门使用者的市场。
再加上FoxPro For Windows又持续地强攻开发者数据库市场,Paradox终于在腹背受
敌之下逐渐败下阵来。虽然在末期Philippe Kahn对Paradox投下重兵,希望能够挽回
劣势。奈何时不我予,Paradox在奋斗了Paradox 6和Paradox 7的2个版本之后,终究
难逃失败的命运。
当时在看到Microsoft如何打击竞争对手时,我就和朋友开玩笑说,Microsoft有天下
无敌的三大绝招,那就是"打不过你就模仿你(这让我想起电影秘密客)。再打不过就
和你比流血,看谁流得久(这让我想起吸血鬼)。最后如果再不行的话,那就挖光你的
人(这让我想起电影Other People's Money)"。Lotus就在Microsoft的前两个绝招下
倒地不起,而Borland还算是功力深厚,连中三大绝招,虽然不像Lotus和许多其他公
司一样从此Bye-Bye,但也是受伤极重的了。
ODBC和IDAPI之争
当Microsoft逐渐地击败竞争对手、并且拥有了大部分PC数据库市场之后,便慢慢地
了解到掌握标准的重要性。此外,Microsoft为了统一各应用程序之间不同数据的存
取,开始制定存取数据的统一标准--ODBC。Microsoft更大的目的是为了准备和瞄准
下一场的大战,那就是PC上的关系数据库产品的市场。
当然,Microsoft要一统数据存取的江山,除了Borland不会同意之外,其时一心想从
Microsoft扳回一城的IBM也不同意。而Novell更是害怕,因为Novell怕Microsoft成
功之后,Netware会消失得更快。于是IBM、Novell和Borland以及一些其他的小厂便
聚集在一起,决定也制定一套存取数据的标准接口来和Microsoft对抗,这个制定的
数据存取标准便是IDAPI。这正式揭开了ODBC和IDAPI竞争的序幕。
不过IBM、Novell和Borland的结合很快就被证明是失败的,因为就像稍后说明的一样,
IBM在PC软件上的开发一直是三心二意,反反复复。因此当IDAPI 1.0的规格出来之后,
IBM这位老兄又失去了和Microsoft对抗的兴趣,于是退出了IDAPI联盟。至于Novell
就更不用说了。Novell对于和Microsoft竞争一向是"说说可以,真打不行",一定要
找到一群厂商才敢和Microsoft对抗。Novell眼看IBM退出之后,也马上不战而降,很
快地就也退出IDAPI联盟,这个现象和稍后Novell对于和Borland秘密合作的
Appware/AppBuilder计划如出一辙,都是虎头蛇尾,草草收场。
在两个大同盟临阵脱逃之后,Philippe Kahn仍然不畏惧Microsoft的竞争,还是以
IDAPI 1.0的规格实现数据存取引擎,这就是我们现在使用的BDE/IDAPI和SQL Links的
前身。当时IDAPI 1.0的功能规格比ODBC 1.0好得多了。我记得Delphi 1.0使用的
BDE/IDAPI和SQL Links驱动程序也比当时慢得像乌龟的ODBC快得太多了。只可惜在
IBM和Novell退出之后,其他的小厂也是一哄而散。因此Borland只能靠自己独自和
Microsoft对抗。Borland能够以少量的资源一直对抗到Delphi 3的BDE/IDAPI才逐渐
地被ODBC追过,也算是非战之罪了,怪就只能怪Borland意志不坚的盟友们。
当然,由于IBM和Novell的行事作风如此,所以在稍后许多能够和Microsoft一较长短
的机会也因为如此而消逝,最后自食恶果,逐渐失去了PC的软件市场,再也无力和
Microsoft抗衡了。
中那些我心目中的伟大的工程师们对于信息界的贡献。如果读者和我的年龄差不多,
那对于这些内容可能会更有兴趣,因为它们揭示了当时许多软件兴起和没落的过程以
及原因。虽然这些事情距离我们很遥远,但我相信许多人仍然对于背后的故事感兴趣。
即便没有经历过那段美好的回忆,那也可以把这些内容当成一个有趣的故事来读吧。
不过我想,更重要的是让我们一起认识一些伟大的人物,我个人对于其中的许多人都
非常佩服,也非常羡慕。甚至我常常在想,如果自己也有他们的环境,是不是也能够
和他们一样这么有成就呢?这些人对于以往都有着重要的贡献,对未来也仍将有着重
要的影响,因为他们都有一身不凡的技术。对于许多重要的人物,我都尽量收集了他
们的照片,让各位也能够认识这些优秀的工程师、杰出的人物。
当然,如果各位能够从这些内容中学习到失败的教训以及成功的经验,那么本书就更
有价值了。
Borland的兴起
记得大学时,第一个在PC上使用的软件就是SideKick。这个至今让我仍然无法忘记的
软件,也曾让许多人津津乐道,而Borland当时也就是以SideKick成为全球知名的软
件公司。不过Borland第一个奠立创业基础的软件,却是我大二用来交作业的Turbo
Pascal,而Turbo Pascal也是我听到的第一个关于Borland的有趣的故事。
当年Philippe Kahn(Borland的创始人)和Anders Hejlsberg到美国创业时,便由Anders
以汇编语言撰写了Turbo Pascal的编译器,而Philippe则包办了Turbo Pascal其他的
部分。在这两位仁兄开发完Turbo Pascal之后,穷得快连登广告的钱都没有了。Philipp
e
为了在Byte杂志(还记得这个著名的杂志吗?)刊登Turbo Pascal的广告,和Anders商
量了一个方法,那就是直接约Byte杂志的人到当时Borland的办公室讨论刊登广告的
事情。
当Byte的人到了Borland之后,Philippe、Anders和公司的助理小姐故意忙着接电话,
接受Turbo Pascal的订单,并且告诉Byte杂志的人等一下。过了一阵之后Philippe
才进入房间向Byte的人道歉,说他们的Turbo Pascal受到市场的热烈欢迎,订单源源
不断地到来,因此可能不需要在Byte杂志刊登广告了,接着Philippe向Byte的人展示
Turbo Pascal这个产品。由于在当时的机器中Turbo Pascal能够在极少的RAM中常驻
执行,又提供闪电般的编译速度,这立刻让Byte杂志的人当场震惊。凭着专业知识和
丰富的经验,Byte的人立刻知道这将是一个革命性的软件,因此马上希望Philippe能
够在Byte杂志刊登Turbo Pascal的广告,并且愿意以半价刊登。当然,Philippe也立
刻爽快地答应了,于是一个革命性的软件Turbo Pascal终于在Byte杂志刊登出来了。
当时售价49.99美元的Turbo Pascal立刻为Borland带来了大量的财富,Turbo Pascal
也马上成为PC上除了基本的Basic之外最畅销的开发工具,由此正式揭开了Borland影
响PC开发工具近20年的历史的序幕。
Turbo Pascal是由Anders Hejlsberg亲自开发的,并且和Philippe Kahn谈好的条件
是Borland每卖出一套Turbo Pascal,Anders便从中抽取一份版权费。由于当时软件
的价格不算便宜,能够写编译器的人更是少之又少,所以编译器工程师通常都能够获
得优厚的报酬。因此当时Anders Hejlsberg在完成了Turbo Pascal、并且和Philippe
Kahn谈好了合作条件之后,Anders理所当然地认为一套Turbo Pascal会定价数百元
美金,因为这不但是当时一般编译器的价格,而且Turbo Pascal还内含了一个开发环
境和编辑器(Editor),这是当时许多工具没有提供的。
没有想到极具商业头脑的Philippe Kahn了解到:如果把Turbo Pascal定价在数百美
金,那么Turbo Pascal可能只会卖出数百到数千套,无法冲出大量的销售额。因此,
Philippe Kahn
以极大的勇气,瞒着Anders Hejlsberg只把Turbo Pascal定价为49.95美金。这种价
格在当时对于编译器和开发工具来说简直是不可思议的低价。当Anders Hejlsberg知
道了Philippe Kahn的定价后,简直快气昏了。因为在这么低的价格下Anders的版税
金一定少得可怜,因此当时Anders说他把最好的Pascal开发工具拿去让一个白痴销售。
没有想到的是,Philippe Kahn的定价策略获得了极大的成功。Turbo Pascal以极佳
的品质和令人不可思议的低价格成为当时最具吸引力的Pascal开发工具。当然,在
Turbo Pascal卖出了让人难以置信的成绩之后,Anders便再也不提他把专业Pascal编
译器让白痴去卖这件事了。
关键产品--SideKick
虽然Turbo Pascal快速地让Borland在当时全世界的程序员中成为最响亮的软件新星,
但是真正让Borland打人一般计算机使用人群、快速成长为软件巨人的大功臣的,却
是Borland早期最重要的产品--SideKick。
在Turbo Pascal之后,Borland接着推出了SideKick这套软件。SideKick可以说是随
后著名的内存常驻软件(Terminate and Stay Resident-TSR)的始祖,也是Borland跨
出开发工具领域、让几乎所有PC使用者认识Borland的关键软件。SideKick在当时以
许多丰富的小工具和记事功能让它成为每一个程序员爱不释手的工具。还记得当时我
每天都会使用SideKick的ASCII对照表和计算器的功能,因为在汇编语言(Assembly)
盛行的时期,查阅ASCII对照表和在2进制、10进制以及16进制之间进行转换是每日必
要的工作。
当然SideKick也很快成为了畅销软件,在全球狂卖数10万套,继续把Borland往顶尖
的软件公司推进。
所谓的TSE代表Terminate and Stay Resident。这个意思是说,这类软件在执行后会
隐藏在内存的某个位置中,但是并没有出现在屏幕上。不过使用者通过一个快捷键就
可以立刻调出这类软件让使用者使用,在使用完毕之后又可以按一个快捷键再度隐藏
它。这样的软件运行方式在当时是一项全新的创举。
以我的眼光来看,SideKick这个软件对于Borland来说是非常关键的作品,因为我将
SideKick归类成"消费型软件"产品。所谓消费型软件,是指可以被所有计算机使用者
使用的软件,而不是只给程序员或是开发者使用的软件。凡是现今比较会赚钱或是规
模比较大的软件公司大都属于开发"消费型软件"的公司。例如Microsoft除了有和Borlan
d
竞争得你死我活的开发工具之外,最重要的是Microsoft拥有两大"消费型软件":Window
s
操作系统和Office。这两类软件才是Microsoft最赚钱的产品。Oracle是另外一个很
好的例子,数据库几乎是现在任何应用都需要使用的软件。同样,SideKick就属于这
一类型的软件,因为SideKick可以被所有的开发者使用来增加生产力,而不管开发者
使用的是什么语言。因此当Borland推出SideKick之后,立刻在全世界狂卖,也成为
继Turbo Pascal之后Borland最赚钱的产品。我认为在后来的数年之中Borland走得比
较辛苦,便是因为Borland再也没有推出像SideKick一样属于"消费型软件"的重量级
产品,而只有属于程序员和开发者小众市场的产品,这是非常可惜的事情。而"消费
型软件"也是到现在我仍然认为Borland应该推出的产品。
由于SideKick的TSR技术是当时独一无二的,而且是如此的好用,这引起了当时许多
人的好奇,并且成了所有软件厂商模仿的对象,我还记得稍后许多的计算机信息书籍
都以如何学习TSR技术作为卖点。也是因为SideKick和TSR太成功了,因此Borland立
刻进行了两个工作。第一当然是马上开发下一版的SideKick,让SideKick继续执类似
软件的牛耳,以防止其他软件公司推出类似的软件来分食SideKick打下的天下。
很快地,Borland便推出了SideKick的后续版本,不但功能更多,而且SideKick从原
本完全以开发者为中心的软件转变为适合所有计算机使用者使用的消费型软件。看看
左图,从产品封面以"Desktop Organizer"为主题便可以了解到SideKick在当时的定
位。果然,后续的SideKick又持续地大卖,这让Philippe Kahn非常振奋,也让他雄
心大盛,开始想要通过SideKick的成功主导PC软件的标准,这当然就是SideKick一举
成名的TSR技术。
在Borland通过Turbo Pascal和SideKick大获成功之后,也因TSR技术成为大多数开发
者津津乐道的软件公司,许多软件公司都开始模仿Borland的TSR技术开发大量的TSR
软件。不过当TSR技术大量被运作之后。最后却造成众多的TSR软件彼此冲突,无法正
确地相互共存,这主要是因为许多TSR软件都使用了相同的快捷键来调出/关闭软件,
或是隐藏在相同的内存位置。我还记得,当时同时使用几个TSR软件时,必须遵照一
定的运行次序才可以正常使用。
为了解决这个扰人的问题,Borland开始广邀软件公司,想要以Borland为首制定TSR
的标准。如此一来,只要所有的软件厂商遵照Borland制定的标准,那么所有的TSR软
件就可以彼此正确地运行在PC之中。当Borland公布了这个想法并且发表了初步的TSR
标准规格之后,却立刻引起了Microsoft的紧张。因为当时TSR是如此的流行,Microsoft
害怕TSR技术由Borland主导之后会让Borland成为PC软件的霸主,进而严重影响Microsof
t
想主宰PC的计划。
因此在Borland开始正式制定TSR标准之际,Microsoft便站出来反对Borland定义的TSR
标准,并且声明Microsoft将在未来的DOS操作系统中加入对于TSR的支持,因此没有
必要再额外制定TSR标准。当时的软件公司,包括Borland在内,都无法和Microsoft
对抗。在操作系统厂商表明了反对立场之后,Borland的这个构想很快便迫于形势而
放弃了。关于TSR的争议应该算是Borland和Microsoft之间的第一场战争。虽然在没
有引起太大的烽火之前便很快收场,不过也算是Borland和M1crosoft第一次真正的交
手。也正是由于这次的相争,让Microsoft惊讶于Borland快速的兴起,并开始正视
Borland这家在当时还算小的软件公司。
虽然在有关TSR的技术之争中Microsoft赢得了胜利,不过很奇怪的是,此后TSR软件
反而开始慢慢地退烧。除了一些少数的公用程序软件仍然使用TSR之外,之后便没有
什么重量级的软件是使用TSR技术开发的,这算不算是另一桩Microsoft介入之后搞砸
的技术呢?
最后再叙述一个从Borland老员工处听来的有趣故事。许多人一直想要知道:Borland
的总部在哪里?或是想要知道:为什么Borland会选择Scott Valley作为总部?事情
的经过是这样的:
当年Philippe Kahn和Anders Hejlsberg到美国准备开始创业时,由于没有资金,
Philippe Kahn就在西餐厅打工,负责端盘子的工作,而Anders Hejlsberg则努力的
在开发Turbo Pascal。
当Philippe Kahn存了一笔小钱之后,两个人便开始了创业大计。首先他们必须找到
一个公司的总部,可是要在哪里实现Philippe Kahn和Anders Hejlsberg心中的理想
呢?虽然当时他们住在L.A.附近,但是光凭Philippe Kahn存的一点小钱是绝不够在
L.A.大展鸿图的,因此Philippe Kahn和Anders Hejlsberg决定到比较偏远的地方试
试。于是这两位仁兄便开着Philippe Kahn的破车往南出发了。听说当Philippe Kahn
把车开到Scott Valley附近时刚好没有汽油了,眼看四周的环境觉得还不错,就决定
在这个地方展开Philippe Kahn和Anders Hejlsberg的创业之梦。就是这个决定让原
本默默无闻的Scott Valley在数年之后竟成为一个家喻户晓的高科技盛地。
和Borland的缘由
Turbo Pascal是我在大二、大三撰写作业时的最爱,几乎所有的作业都是使用Turbo
Pascal完成的。当然其时Horowise的Data Structure这门课也是使用Turbo Pascal
过关的,因此从那个时候开始,我便非常喜欢Borland这家公司,慢慢地也开始对Borlan
d
有了特别的感情。
在我大二时,Microsoft推出了Microsoft Pascal,但是它和Turbo Pascal的确有一
段差距,我使用了一次之后便把它丢到垃圾桶。稍后Borland也推出了Turbo Basic
1.0。我记得这个编译器非常的棒,编译速度就和Turbo Pascal一样快,是一个非常
有前途的产品。但是不知道为什么它只有1.0,之后便和Microsoft Pascal一样消失
了。后来听说是Microsoft和Borland互相交换条件,Microsoft不进入Pascal的市场,
而Borland则退出Basic的市场。至于是不是真的确有其事,我就不得而知了。
我在大二初次接触到了C语言,第一本阅读的书便是王兴隆先生写的C语言书籍,也从
此开始和C语言结下了渊源。平生第一个使用的C编译器便是Lattice C,不知道还有
没有读者记得?当时使用两个5?磁盘抽换以便编译C程序的情景,真是麻烦得不得了。
稍后Borland终于推出了风行天下的Turbo C编译器,从此之后Turbo C便成了我不离
身的工具,而Borland也通过Turbo C这第三项畅销产品迈向了世界前10名的项尖软件
公司。
当完2年的兵之后,我在中研院首次使用了C++语言。第一个使用的C++编译器则是Zortec
h
C/C++,这家公司稍后被Symantec收购成为Symantec C/C++的核心部门,这个故事稍
后再说明。后来Borland也推出了它的第一个C/C++编译器Turbo C/C++1.0,但是和
Zortech C/C++比较之后,我还是觉得Zortech C/C++比较好,因此就继续使用Zortech
C/C++。一直到Borland的Turbo C/C++2.0编译器推出之后,才逐渐成为C/C++语言的王
者,而我也像以往一样把Zortech C/C++换成了Turbo C/C++。
在我1991年到Georgia Institute of Technology念硕土时,终于使用自己的零用钱
49.99美金购买了生平第一套正版软件Turbo C/C++4.5,随后又购买了Borland
Pascal。在毕业前的一个Quarter,Microsoft推出了Microsoft C/C++6.0以及MFC 1.0,
由于MFC是第一个C/C++的Framework,因此也花了一些钱购买了一套Microsoft C/C++以
便学习MFC。但是在收到Microsoft C/C++之后,我却很失望,因为Microsoft C/C++
6.0仍然没有Windows图形集成开发环境,还是在DOS下的集成开发环境。而且以我的
眼光来看,MFC 1.0并不好用。Microsoft C/C++6.0的C/C++最佳化编译器在当时也是
一个笑话,不但产生的程序代码效率不好,甚至会产生错误的程序代码。许多IT杂志
也称Microsoft C/C++6.0是一个平庸的(Mediocre)产品。因此我就把它丢在一边再也
没有使用。在Microsoft C/C++6.0推出之后不久,Borland终于发布了Borland
C/C++3.0,而这套软件也开启了Borland雄霸C/C++编译器长达五六年之久的序幕。
Borland C/C++3.0推出之后,由于拥有第一个在Windows下稳定的图形集成开发环境,
而且它产生的最佳化程序代码也是Microsoft C/C++6.0望尘莫及的,因此,很快地几
乎所有的C/C++程序员都转而使用Borland C/C++3.0。那个时候几乎所有的公用程序
或是Shareware都是使用Borland C/C++开发的,许多硬件厂商的驱动程序也是使用
Borland C/C++3.0来撰写的。
1992年我取得Georgia Institute of Technology的硕士学位之后,最想进入的公司
便是Borland和Microsoft,不过最后我还是决定回台湾工作。在此时Borland也逐渐
进入了最巅峰的时期,因为Borland推出了Borland C/C++3.1。
Borland在Borland C/C++3.0获得空前的胜利之后,并没有松懈下来,因为Borland知
道Borland C/C++3.0还缺一个最重要的胜利因子,那就是如同Microsoft的MFC一样的
C/C++ Framework,因为Borland也看出了Framework将会是未来C/C++产品中最重要的
一环。不过Borland此时来到了一个重要的十字路口,那就是到底要自己开发一个和
MFC抗衡的Framework,还是直接采用Microsoft的MFC?如果要使用MFC的话,那么
Microsoft会愿意授权给Borland吗?如果Borland要自己开发Framework,那么势必要
花上一些时间,但是Borland想趁Borland C/C++3.0如虹的气势再下一城,以便彻底击
溃Microsoft C/C++。因此,最后Borland决定向一家叫White Water的公司购买一套由
这家公司开发的一个Framework,这套Framework便是后来鼎鼎大名的OWL的源流。而
Borland也因为向White Water购买了这套Framework,因而也引进了一个日后非常重
要的人物,那就是后来负责开发Delphi的一员大将--Zack Urlocker。
C/C++的光荣战役
Borland购买了White Water的C/C++ Framework之后,便更名为OWL(Object Windows
Library),并且很快地推出了以OWL 1.0为核心的Borland C/C++3.1。由于OWL比当
时的MFC 1.0封装得更为完整且好用,再加入Resource Workshop可视化能力,以及
Borland C/C++3.1本身最强劲的编译器和集成开发环境,因此立刻风靡了全世界,
其受欢迎的程度更是远远的超过了它的前一版本Borland C/C++3.0。
Borland C/C++3.1的畅销,立刻让Borland在C/C++市场一举击溃Microsoft C/C++,
市场占有率超过了50%,是全球第一的C/C++产品,也把Borland推上了最高峰,成为
全世界第三大的软件公司。
在当时,我所工作的开发小组也立刻改用Borland C/C++ 3.1来开发Windows下的MRP
系统,而Borland C/C++3.1也是我使用过的Borland最稳定的C/C++版本之一。由于那
个时候一天到晚都使用C/C++工作,因此就有了一些小心得。稍加整理后我便投稿到
刚成立不久的《RUN!PC》杂志,也许是我的运气不错,《RUN!PC》很快发表了我的文
章。就在这篇文章发表之后,台湾的Borland分公司注意到了我,开始和我联络,并
且从此展开了我和Borland的互动。而Borland C/C++3.1也是第一套Borland免费送我
的软件,当然代价就是希望我多写一些Borland产品的文章。
接着Borland又计划推出Windows版的Borland Pascal。不过在Borland开发Pascal For
Windows时,当时(现在也还是)最具盛名的Charles Petzold(我看的第一本Windows
程序设计的书就是这位仁兄写的,相信许多人也是看他的书一路学来的)就说除了
C/C++之外,Borland不可能做出能够在Windows下执行的Borland Pascal。不过很明
显地,即使是Windows API的大师Charles也错了,Borland不但做了出来,而且
Borland Pascal For Windows还非常的畅销,当然Borland Pascal For Windows也是
后来Delphi的根基。
当时的Borland可说是不可一世,不但产品大卖,而且日进斗金。Borland在Scott
Valley豪华的总部也是在那个时候由Philippe Kahn大手笔地花了一亿多美金搭建的
(想想10年前的60多亿台币可以盖什么样的房子?)。不过也许是Borland太成功了,
因此也开始让Philippe Kahn渐渐地养成了好大喜功、目中无人的态度,这也种下了
Borland开始走向衰退的因子。
在Borland最强盛的时期,当然也就是Microsoft最痛恨Borland的时候,发生了一个
著名的事件和一个著名的虚拟人物。由于当时Microsoft的开发工具一直打不过Borland
的产品,因此在Microsoft的开发工具刊物上便出现了一个作者,不断地以文章嘲笑
Borland,这个作者的笔名是Buck Forland。由于这位作者的文章内容以及他的笔名
引起了当时Borland的不满以及大量Borland使用者的强烈抗议,稍后这位作者突然消
失。因此有许多人推测这个作者应该是Microsoft的某位工程师,由于一直无法打败
Borland的产品,恼羞成怒,因此才会以这个笔名来发泄。如果各位读者到现在还摸
不着头脑,不知道为什么这个笔名会引起轩然大波,那么请试着把Buck Foland这两
个英文字的第一个字母一对调就知道为什么了。现在各位是否会心一笑了?
■ 在Borland C/C++3.1大获成功之后,Borland却开始松懈了,并且开始走下坡路。
当然这有许多的原因,我所知的其中最重要的原因有数项:Philippe Kahn和当时
Borland C/C++的产品经理闹翻了。这位Borland C/C++的产品经理的名字是Eugene
Wang,Eugene是一位非常聪明的越南人。他一手把Borland C/C++带到了世界第一的
地位,并且在Borland C/C++3.1成功之后有了更伟大的想法,那就是想在下一个
Borland C/C++版本中完整地以OWL封装所有的Windows APl。因为OWL 1.0虽然比
MFC 1.0来得优秀,但是OWL的隐忧就是尚未完整封装所有Windows的APl。此外Eugene
还计划以OWL为核心,开发一个类似今日Borland C/C++ Builder以可视化组件为开发
方式的开发工具。请各位读者想一想,如果在当时Borland能够开发出这种C/C++开发
工具,那将会是一个多么可怕的产品,稍后Microsoft的Visual C/C++1.0只是能够在
集成开发环境中自动产生MFC的程序代码就立刻轰动了C/C++市场,造成了大量程序员
转入Microsoft的阵营。而且,即使是目前的Borland C/C++ Builder,使用的
Framework仍然是以Object Pascal为核心的组件Framework,而不是纯粹的C/C++程
序代码。如果当时Eugene能够做出他心中的下一版Borland C/C++,那么我想,到现
在Borland C/C++可能还是市场中第一的C/C++开发工具。
不过很不幸的是,Eugene稍后和Philippe Kahn发生了激烈的争执。一气之下,Eugene
离开了Borland。而Philippe Kahn则认为Borland C/C++的地位已不可动摇,因此也
没有想立刻开发下一版的Borland C/C++。这样一拖竟然浪费了将近2年的时间,更大
的麻烦是Microsoft可没有白白浪费这2年的时间。Microsoft Visual C/C++1.0在
Borland C/C++3.1发布两年之后推出,并且立刻获得市场好评。Visual C/C++不但在
编译器方面能够和Borland C/C++3.1相抗衡,在集成开发环境方面更大幅领先了Borland
C/C++3.1,还能够自动产生MFC的程序代码,再也不是昔日的吴下阿蒙。直到此时,
Philippe Kahn才从梦中惊醒而急于开发下一代的Borland C/C++4.0。但此时为时已晚
,
C/C++的开发工具已经发生了剧烈的变化,Borland的C/C++开发工具市场从此就开始逐渐
地被Microsoft蚕食了。
Eugene在离开Borland之后,立刻被Symantec所网罗,稍后Eugene也在非常短的时间
之内为Symantec开发出了著名的Symantec C/C++。Symantec C/C++在当时被所有的技
术刊物评比为拥有最棒的集成开发环境和最有创意的C/C++开发工具,由此可见Eugene
的功力。不过Symantec C/C++稍后也终究不敌Microsoft Visual C/C++,这个故事
的原因在稍后"四大C/C++ 编译器之争"的章节中再详细地说明。最后听说Eugene跑去
做生意了,并且在前几年写了一本教导科技人员如何面试的书籍。一直很痛心Borland
失去了这么一位优秀的人材。我常常想,如果当初Eugene没有离开Borland,那么历
史可能就不是现在的这样了,Sign!!!
■ Philippe Kahn大手笔地花了400多Million美金买下了Ashton-Tate公司和dbase。
当时许多人都批评Philippe Kahn做了不值当的事情,因为Ashton-Tate不值这么多钱。
但是由于当时Borland多的是现金,因此Philippe Kahn也不在意。不过Borland逐渐
走向衰败的主因并不在此,而是在Borland买下了dbase之后,并没有立刻积极地开发
dbase For Windows,反而把dbase丢在一旁。Philippe Kahn会如此做的原因便是当时
Borland的另外一个和数据库有关的产品Paradox卖得也很好,因此Philippe Kahn并不
急于开发dbase For Windows。不过Philippe Kahn忘记了一件事情,那就是当时市场
上拥有大量使用者数目的dbase程序员需要一个好的Windows版dbase,但是Philippe
Kahn购买了dbase却不提供Windows版的解决方案,因此当稍后Microsoft以极小的代
价买下Fox这家公司,并且在数年之后推出FoxBASE For Windows,吸引了大量原先的
dbase程序员以及Paradox的程序员之后,Philippe Kahn才警觉事情不对而匆匆忙忙
地开发dbase For Windows。但是当dbase For Windows推出之后,Microsoft早已推
出了两个FoxBASE For Windows的版本,占据了大部分的市场,dbase For Windows其
势已不可为了。
■ Microsoft开始向Borland挖角。由于Microsoft在许多的开发工具战役中一直被
Borland打得灰头土脸,更何况Borland C/C++3.1几乎抢占了大部分的市场,因此
Microsoft便开始准备好好地对付Borland。但是由于其时Borland在编译器的技术领
域领先了Microsoft数年之久,Microsoft无法在短时间之内赶上Borland,所以
Microsoft决定使用最有效的方法立刻追上Borland的技术,那就是直接从Borland挖角。
结果,后来Microsoft的Visual C/C++小组有60%的成员是从Borland挖来的,这个举
动不但立刻让Borland流失了大量的优秀技术人才,也在数年之后造成了Borland控告
Microsoft的导火线。各位读者看到这里是否有什么感觉呢?不过我总觉得Microsoft
并不是光明正大地击败Borland,而是使用了不公平的竞争手段。
Philippe Kahn在这段时间不但让Borland C/C++被Microsoft Visual C/C++反败为胜,
也痛失了几乎所有dbase的市场,更浪费了大量的金钱,流失了大量的优秀人员。在
这些重要的因素之下,Borland已经不可避免地开始走下坡了。
我最后一次看到Philippe Kahn,是在1994年末于亚特兰大(Atlanta)参加国际
Conference时,还和他打了一声招呼。后来Philippe Kahn离开了Borland,另外创立
了StarFish这家公司,稍后StarFish也被Motorola并购。虽然Borland由于Philippe
Kahn一些错误的决策而逐渐地从巅峰开始走下坡,但是Philippe Kahn也不愧为一个人
物。因为Philippe Kahn能够和Bill Gates一直周旋数年之久,而同一时期的许多公司
(例如Lotus)都一一被Microsoft所击败,因此Philippe Kahn还是有一套的。此外
Philippe Kahn也是唯一一个拥有工程师特性的Borland CEO,Philippe Kahn仍然
重视技术产品和技术人员。但是Borland随后的CEO几乎都是Marketing、Finance或
是Sales出身的人,这真让我怀念以往以产品和技术为优先的CEO了。
看完了上面这段今人伤心的历史,再让我们看看当Borland受到Microsoft Visual
C/C++的强大冲击之后,如何思索反击之道。在这段历史中出现了令我敬佩的第一个
Borland技术工程师Carl Quinn。
Carl Quinn在Microsoft Visual C/C++1.0推出之后,立刻奉命开发一个能够和MFC
相抗衡的全新OWL,而Carl Quinn也是数年后JBuilder的JBCL Framework的灵魂开发
人物。Carl Quinn不但负责开发OWL,也为Borland在组件Framework的技术领域做出
了重要的贡献。由于Carl Quinn的投入,开启了OWL大战MFC、Borland C/C++缠斗
Visual C/C++数年精彩好戏的序幕。
Carl Quinn是我至今还记得并敬佩的人物,让我再一次的向他致敬,并且介绍他让大
家认识。
火线全开
Borland在开发工具市场和Microsoft激战之时,Microsoft和Lotus也正在电子表格工
具以及文字处理工具市场进行大战。这时Borland不思好好地集中资源开发新的开发
工具和数据库工具(稍后本书会详细说明Borland在数据库市场的战役),也不甘寂寞
地投入了大量的资源进入这个惨烈的市场。也许是当时Borland太有钱了,或者是
Philippe Kahn的脑袋出了问题,居然决定进入这个Borland陌生的市场,更何况在
Borland投入时Lotus已现败象,Office市场已经慢慢地被Microsoft所一步一步地掌
握了。
Borland进入Office市场的第一个产品是著名的Quattro Pro电子表格。虽然Quattro
Pro是一个相当不错的产品,而且当时,由Borland C/C++编译器所开发的Quattro
Pro在执行效率上几乎是最好的,但是Borland没有想到使用电子表格的使用者是一般
的办公室人员,这些人注重的是方便性和功能性,而不是执行速度,这和开发人员是
不一样的。Borland以开发者的心态来开发电子表格工具基本上是走错了方向。因此
我记得在那段时间中,杂志评比Microsoft的Excel、Lotus的1-2-3和Borland的
Quattro Pro时,在功能方面领先的都是Excel和Lotus,在执行效率方面领先的则是
Excel和Quattro Pro。到了电子表格热战的末期,1-2-3甚至比不上Quattro Pro,因
此Lotus败走电子表格市场已是不可避免的结果了。
不过Borland虽然赢了1-2-3,但是和Excel仍然有一大段的距离,Microsoft一统电子
表格江山之势已不可动摇,因此最后Borland在损失了大量的资源之后,Quattro Pro
只能卖给Novell。
除了Quattro Pro之外,Borland也投入了很多的资源秘密地开发一个代号为Spring的
文字处理程序(Word Processor)准备和Microsoft的Word以及WordPerfect竞争,这可
能是许多人不知道的。但是这个产品最后仍然无法问市而胎死腹中,在文字处理市场
Borland不但浪费了时间,更虚掷了大量的资源。
Philippe Kahn在Office产品方面消耗了Borland大量的金钱和时间,却落得铩羽而归,
更连累了开发工具市场以及最有可能成功的数据库产品市场。
另外一个和Borland无关的故事是关于Microsoft Excel是如何兴起的。话说当Lotus
1-2-3最盛的时期,Microsoft一直在觊觎这个市场,但是苦于无法开发出一个能够
和1-2-3相竞争的产品。有一次Lotus举办了一个Lotus 1-2-3的技术研讨会,由当时
Lotus 1-2-3的首席工程师主讲。Microsoft知道了这个技术研讨会之后,立刻派出了
最好的程序设计师,现场询问Lotus是如何开发1-2-3的,并且趁机询问这位首席工程
师如何克服1-2-3在许多技术方面的难点,而这些困难处正是Microsoft的工程师无法
克服的。
当时,在现场中的Lotus首席工程师虽然知道这些人是Microsoft派来的,而且询问的
问题正是1-2-3许多关键的技术点。但是这位首席工程师凭借着多年的开发经验,认
为Microsoft不可能在短期之内追上1-2-3,因此就没有多作保留地回答了许多重要的
问题。没有想Microsoft的这些程序员也是非常聪明的人才,一经指点之后,立刻畅
然全通,在短短的1、2个版本之后不但马上追上了1-2-3,许多功能方面更是青出于
蓝,1-2-3便逐渐失去优势了。我想这位1-2-3的首席工程师一定很后悔当时回答了关
键的技术问题吧。
结论:千万不要小看Microsoft,他们是非常精于模仿的。也永远不要小看你的竞争
对手。
数据库市场的失误
Borland全盛的时期,事实上也是开发数据库产品最好的机会。因为在当时Borland手
握DOS最畅销的Paradox,并购了Ashton-Tate而拥有世界大部分dbase的市场,又取得
了Ashton-Tate从HP购买的真正关系数据库(RDBMS)--InterBase,可以说是当时全世
界数据库工具实力最雄厚的厂商。
当时的Oracle和Borland比起来,简直是小巫见大巫,而Sybase更不知道在哪里。如
果Borland能够好好地掌握这个机会,极力开发数据库产品,那么现在Borland就算不
是世界第一的软件公司,也将是世界第二的软件厂商。可惜Philippe Kahn并没有看
到这个从80年代末到90年代成长最快速的产品市场。说句笑话,如果当时Philippe
Kahn的死对头Bill Gates早一点说出"Information At Your Finger-Tip"这句话,点
醒Philippe Kahn数据库市场的重要性,那么Borland就可能是现在的Oracle了。
说到数据库市场,就不得不对Microsoft的眼光佩服,也不得不佩服Microsoft行销能
力的强悍。当Microsoft以FoxBASE For Windows强占了Windows开发者的数据库工具
市场之后,又了解到一般计算机使用者也需要使用简易好用的数据库管理工具,因此
开发出了更简易的Access。但是当时在类似的市场中,Borland的Paradox占有开发者
数据库大部分的江山,而一般使用者的数据库管理工具市场则由Lotus的Approach博
得先机。
Microsoft为了进入由Lotus Approach主宰的市场,采取了很多方法。我还记得在当
时Visual Basic 3的软件包中Microsoft附了一张优惠卷,只要800新台币就可以买一
套Access。这简直就是流血大拍卖。不过它的目标很明显,就是击败当时卖1万多元
的Lotus Approach。果然,Microsoft此招一出,Approach便被Access打得落花流水,
很快失去了市场,也很快地退出了市场。从此一般使用者的数据库管理工具市场便由
Access所独占。
但是Borland并没有警觉到Access会继续往开发者市场进攻,因此仍然没有加紧在
Paradox产品上的开发。Borland总觉得Paradox的市场地位是无法轻易撼动的,而且
Access的目标市场也不是Paradox的市场。
但是Borland忘记了Microsoft非常擅长模仿。在随后的Access版本中,Microsoft不
断地加入可程序设计的功能,因此也逐渐地吸引了一些Paradox入门使用者的市场。
再加上FoxPro For Windows又持续地强攻开发者数据库市场,Paradox终于在腹背受
敌之下逐渐败下阵来。虽然在末期Philippe Kahn对Paradox投下重兵,希望能够挽回
劣势。奈何时不我予,Paradox在奋斗了Paradox 6和Paradox 7的2个版本之后,终究
难逃失败的命运。
当时在看到Microsoft如何打击竞争对手时,我就和朋友开玩笑说,Microsoft有天下
无敌的三大绝招,那就是"打不过你就模仿你(这让我想起电影秘密客)。再打不过就
和你比流血,看谁流得久(这让我想起吸血鬼)。最后如果再不行的话,那就挖光你的
人(这让我想起电影Other People's Money)"。Lotus就在Microsoft的前两个绝招下
倒地不起,而Borland还算是功力深厚,连中三大绝招,虽然不像Lotus和许多其他公
司一样从此Bye-Bye,但也是受伤极重的了。
ODBC和IDAPI之争
当Microsoft逐渐地击败竞争对手、并且拥有了大部分PC数据库市场之后,便慢慢地
了解到掌握标准的重要性。此外,Microsoft为了统一各应用程序之间不同数据的存
取,开始制定存取数据的统一标准--ODBC。Microsoft更大的目的是为了准备和瞄准
下一场的大战,那就是PC上的关系数据库产品的市场。
当然,Microsoft要一统数据存取的江山,除了Borland不会同意之外,其时一心想从
Microsoft扳回一城的IBM也不同意。而Novell更是害怕,因为Novell怕Microsoft成
功之后,Netware会消失得更快。于是IBM、Novell和Borland以及一些其他的小厂便
聚集在一起,决定也制定一套存取数据的标准接口来和Microsoft对抗,这个制定的
数据存取标准便是IDAPI。这正式揭开了ODBC和IDAPI竞争的序幕。
不过IBM、Novell和Borland的结合很快就被证明是失败的,因为就像稍后说明的一样,
IBM在PC软件上的开发一直是三心二意,反反复复。因此当IDAPI 1.0的规格出来之后,
IBM这位老兄又失去了和Microsoft对抗的兴趣,于是退出了IDAPI联盟。至于Novell
就更不用说了。Novell对于和Microsoft竞争一向是"说说可以,真打不行",一定要
找到一群厂商才敢和Microsoft对抗。Novell眼看IBM退出之后,也马上不战而降,很
快地就也退出IDAPI联盟,这个现象和稍后Novell对于和Borland秘密合作的
Appware/AppBuilder计划如出一辙,都是虎头蛇尾,草草收场。
在两个大同盟临阵脱逃之后,Philippe Kahn仍然不畏惧Microsoft的竞争,还是以
IDAPI 1.0的规格实现数据存取引擎,这就是我们现在使用的BDE/IDAPI和SQL Links的
前身。当时IDAPI 1.0的功能规格比ODBC 1.0好得多了。我记得Delphi 1.0使用的
BDE/IDAPI和SQL Links驱动程序也比当时慢得像乌龟的ODBC快得太多了。只可惜在
IBM和Novell退出之后,其他的小厂也是一哄而散。因此Borland只能靠自己独自和
Microsoft对抗。Borland能够以少量的资源一直对抗到Delphi 3的BDE/IDAPI才逐渐
地被ODBC追过,也算是非战之罪了,怪就只能怪Borland意志不坚的盟友们。
当然,由于IBM和Novell的行事作风如此,所以在稍后许多能够和Microsoft一较长短
的机会也因为如此而消逝,最后自食恶果,逐渐失去了PC的软件市场,再也无力和
Microsoft抗衡了。