Borland传奇
这篇书评可能有关键情节透露
聪明的程序员用Delphi,真正的程序员用C++,偷懒的程序员用PowerShell。
历史是由胜利者书写的。甚至都不必胜利者亲自书写,自然有人会书写成功者的传记与历史,不论是想还原这段历史,还是想磳热度,或是被收买了。自然,市面上多得是微软、苹果及其创始人的传记。“千古兴亡多少事,悠悠,不尽长江滚滚来。”可能百年之后,人们依然记得IBM、微软、苹果,甚至它们依然存在。但可能没有人记得这段Borland的传奇。
我和Borland的联系并不密切。Borland公司最辉煌的时候,我都没出生呢,更不要说见证它了。高中时想自学编程,买过本C语言的书,书上用的Turbo C;大二时看过一本Prolog的书,书中用的Turbo Prolog,这些编程工具感觉很有年代感了(我编程时用的更新的工具),算是仅有与它的联系。在这之前在网上看过个很老的笑话:“Borland说我很有前途,Sun笑了;Sun说我很有钱,IBM笑了;IBM说我很专业,Sybase笑了;Sybase说我数据库很牛,Oracle笑了;Oracle说我是开放的,Linux笑了;Linux说我要打败Unix,微软笑了;微软说我的系统很稳定,我们都笑了。”虽然这主要在嘲讽这主要是嘲讽微软的,但也奚落了Borland。网上也找不到太多关于它的内容,对它没太多好的印象。而在后来,在网上看到同样是互联网早期时代的一句话:“聪明的程序员用Delphi,真正的程序员用C++,偷懒的程序员用PowerShell。”,偶尔碰到编程群里一些人怀旧,谈到了Delphi,才开始想了解Borland。
整本书读下来,惊心动魄,震撼人心。作家Merrill R.Chapman曾把早年的Borland比作野人,强悍而又行事不羁。Borland总是能推出惊艳的产品,常常因为外在或内在原因陷入危机,却总是有人召唤而出,撑起大梁,完成华丽的逆袭。而在当时其他和如日中天的微软对着干的几乎都没好下场。我是真的希望看到Borland能挫挫微软,就像所有那小说中主角一样。可惜,现实不是小说,形势比人强。Borland天才而气盛,虽然它的一些失败也有自己的原因,却总是令人惋惜。Borland的技术十分强力,出过不少高手,却输在了管理上,屡屡被挖墙角就可见一斑。
感觉Borland最精彩的传奇还是那两位创始人时期的,我也就写到那里。天才的Anders Hejlsberg和个性的Philippe Kahn。Philippe Kahn和甲骨文的拉里·埃里森、苹果的乔布斯、AMD的杰里·桑德斯一样,极具个性,充满争议,有着强硬的意志、智慧的头脑。Anders Hejlsberg则是不世出的天才。开发过的产品有Turbo Pascal、Delphi、C#、TypeScript,都在开发领域如雷贯耳,每个都是生产力的解放与变革。
觉得Borland的创业很有美国梦的精神。当年Borland的创始人Philippe Kahn和Anders Hejlsberg两个人联手在美国创业时,philippe在餐厅打工赚钱,而Anders则在开发Turbo Pascal。但光凭这点钱,哪能在洛杉矶。决定到偏远的地方试试,他们开着philippe的破车,走到了Scott Valley的时候,刚好没油了,他们看着四周的美景,决定留下来开始自己的事业。若干年后,此地成为了高科技的盛地。
Anders写的Turbo Pascal非常优秀,用汇编语言写的编译器,占极少的内存,有着闪电般的编译速度。Anders 理所当然地认为会定价数百元美金,因为这不但是当时一般编译器的价格,而且Turbo Pascal还内含了一个开发环境和编辑器,这是当时许多工具没有提供的。而极具商业头脑的Philippe Kahn认为,如果定价数百美金,挺多卖出数百到千套。他以极大的勇气瞒着Anders,定价为49.95美金。Anders在得知后,简直要气疯了。没想到的是,这个策略获得了极大成功,以极佳的品质和不可思议的低价成为当时最受欢迎的工具。Anders也再不提这个事了。
这两位在开发完后,穷得连登广告的钱都没。Philippe为了在Byte杂志上刊登Turbo Pascal的广告,和Anders商量了一个方法。直接约Byte杂志的人到当时Borland的办公室讨论刊登广告的事情。当 Byte的人到了Borland之后,Philippe、Anders和公司的助理小姐故意忙着接电话,接受订单,并且告诉Byte杂志的人等一下。过了一阵之后Philippe才进入房间向Byte的人道歉,说他们的Turbo Pascal受到市场的热烈欢迎,订单源源不断地到来,因此可能不需要在Byte杂志刊登广告了。接着 Philippe 向Byte的人展示这个产品。Turbo Pascal优秀品质,让Byte杂志的人当场震惊。Byte的人立刻知道这将是一个革命性的软件,因此马上希望Philippe能够在Byte杂志刊登的广告,并愿以半价刊登。
Philippe又打算对1983年分销商大展用对付Byte的办法故技重施。他当时向展会负责人下套,可负责人却很不屑:“先生,我想您的产品新闻发布会最好改在麦当劳餐厅举行,他们一定可以满足您的需求。”卡恩还真照他的“建议”在麦当劳举办,倒也大获成功。
在 Turbo Pascal 之后,Borland 接着推出了 SideKick,一个工具套件,提供记事、对照表、计算器等功能。和Borland其他的产品不同,其他大多是面向开发领域,而这个是可以被所有电脑用户所使用的。SideKick对Borland是很有意义的产品。大多规模大的软件公司的产品是面向大众的“消费型”软件,而不是面向特定用户,程序员之类的小众群体。当占领了大众市场后,不容易迅速被竞争对手取代。而小众领域,很可能那个行业都被取代了。像现在的互联网产品正是面向大众的。
SideKick可以说是内存常驻(Terminate and Stay Resident-TSR)软件的始祖。TSR指的是这类软件在执行后会隐藏在内存某个位置上,但不出现在屏幕,但使用者通过快捷键就能调出来,或是再隐藏它,像是今天的后台程序。SideKick和TSR同样取得了成功。Borland陆续推出它的后续版本,又持续地大卖。这让Philippe Kahn非常振奋,想主导TSR的标准。因为在Borland成功后,许多软件公司也开始模仿开发出大量TSR软件,结果造成彼此冲突。然而Borland公布了这个想法后却立刻引起了微软的紧张,微软害怕Borland会成为电脑软件的霸主。微软站出来反对,声明未来在DOS系统中加入对TSR的支持,因此没必要额外制定标准。当时的软件公司,包括Borland,都根本无法和微软抗衡。Borland的这个想法迫于形势放弃了。虽然这次并没有引起太大烽火,很快收场。算是Borland和微软的第一次交手。
Borland后来又开发了Borland C/C++,它产生的最佳化程序代码也是微软的相应产品望尘莫及的,最终Borland C/C++3.1一举击溃微软的同类产品,市场占有率超过50%,成为全球第三大软件公司。不过也许是太成功,Philippe Kahn渐渐好大喜功,种下了Borland开始走向衰退的因子。Philippe Kahn认为已经稳固,并没有开发下一版,一拖就是两年。Borland C/C++的产品经理Eugene Wang和Philippe Kahn发生了激烈的争执。最终,Eugene Wang离开,被赛门铁克挖走。
微软绝非等闲之辈。觉得无法短时间内赶上Borland的技术,决定使用最有效的办法,那就是直接从Borland挖墙角。当时,Visual C/C++小组,有60%的成员是从Borland挖过来的。利用这两年,发布了Microsoft Visual C/C++1.0,在推出后立刻获得了好评。我反正是不喜欢微软的这个手段,技不如人,不思进取,倒用这些盘外招。
Borland花了重金收购dbase,入局数据库领域。可惜Borland同样以为江山已经稳固,并没有开发Windows当时这个新平台的版本。而微软却以很小的代价收购了Fox,入局数据库,并在数年后推出FoxBASE For Windows,吸引了大量原先相关的程序员。Borland这时才开始警觉。
微软是极具侵略性而精明的。当时微软以FoxBASE开始占领开发者的数据库工具市场后,又了解一般用户也要用数据库工具,开发了更简易的Access。Borland的Paradox占有开发者数据库大部分的市场,而一般用户的数据库管理工具市场则由Lotus的Approach掌握。Microsoft 为了进入由Lotus Approach主宰的市场,采取了很多方法。微软发出各种优惠券,流血大拍卖。此招一出,Approach便被打得落花流水,很快失去了市场。Borland却认为自己的开发者的市场很稳固,毕竟产品目标群体都不一样。但Borland却又忘了,微软擅长模仿。在后面的Access版本中,加入可程序设计的功能,也逐渐吸引了一些入门者。再加上FoxPro又持续强攻,Borland最终还是在这个领域败下阵来。这个事件给我的教训是,最好将用户进一步拓展。深耕小众领域,专注其中的高质量用户,看似很迷人,但可能到时候那个生存的土壤都没了。黑莓手机当时是有机会转向大众领域的,但他们还是觉得专注通信安全等领域,面向官员、明星。而苹果手机,则是每个用户都会考虑用的。日本也有很多有几百年历史的企业,有的恪守传统,只面向某一特定领域。但这其实像个特例,是极难推广的。市场瞬息万变,顾客未必那么保守和忠诚。甚至有日本人也自嘲日本是“加拉帕戈斯”。
Lotus当时主导着办公软件。微软一直苦于无法开发出能和它竞争的产品。有一次,Lotus举办了一个技术研讨会,由Lotus首席工程师主讲。微软立刻派出最好的程序设计师,现场询问了一些问题。那个首席工程师虽然知道是微软派来的,但以为微软不会在短期赶上,回答了许多。没想到那个程序员同样是很聪明的人才,一经指点,立刻畅通。
“微软有天下无敌的三大绝招,那就是打不过你就模仿你;再打不过就和你比流血,看谁流得久;最后如果再不行的话,那就挖光你的人。”Lotus和网景就在微软的前两个绝招下倒地不起。Borland虽然没像它们一败涂地,但也伤得不轻。
微软了解掌握标准的重要性。为了统一各应用程序之间不同数据的存取,微软提出ODBC标准。Borland不会同意,当时一心想从微软扳回一局的IBM也不同意,Novell更是害怕。于是IBM、Novell和Borland和其他的小厂聚在一起,制定了标准IDAPI。但这次结合是失败的。IBM在软件开发上三心二意,失去了与微软对抗的兴趣;Novell是个孱头,见IBM都退出了,也不战而降。剩下的小厂一哄而散。虎头蛇尾,草草收场。Philippe Kahn仍不惧微软的竞争,Borland能够以少量的资源一直对抗到Delphi 3 的 BDE/IDAPI才逐渐地被ODBC追过。而IBM和Novell也自食恶果,逐渐失去软件市场,在电脑软件领域再也无力和微软抗衡。
Visual C++1.0在获得空前成功后,Philippe Kahn才从胜利的美梦中惊醒,思考如何面猛烈的攻势。如果当时冷静一点,会发现,尽管Visual C++实力远超之前,但Borland C/C++仍在不少方面有优势。然而Borland却急于扳回一局。Philippe Kahn要求立刻开发下一代,新版本仓促上架。刚推出之际,人们都以为Borland王者归来,销售形势非常好。但这个产品有很多严重问题,非但没对Visual C++构成威胁,甚至是在自杀。不久引起了严重的后果,Borland的市场大量流失,许多原本用Borland的软件商转用微软的来写程序。Borland的颓势不可挽回。
在这次大败后,微软固然不断接收Borland失去的市场。而这时在C/C++市场中也出现另外两个强大的对手,Symantec C/C++和Watcom C/C++。之前和Philippe Kahn闹翻的Eugene Wang正是到了赛门铁克,开发Symantec C/C++,获得了大量好评。随后赛门铁克获得了市场的认同。Eugene Wang这么短的时间里将其打造得这么好,除了他能力确实强,也有向Philippe Kahn示威的意思。而开发Watcom C/C++的是一家小公司。Watcom C/C++给我种剑走偏锋的感觉,它的集成开发环境像是远古的产品,但却以产生最高效的代码而闻名,当时许多游戏公司点名要用Watcom C/C++。许多软件公司会同时买Borland、微软、赛门铁克之一的产品用作日常开发;再搭配一套 Watcom C/C++,用于出货。
C/C++四大编译器决战的时刻逐渐逼近。此时对赛门铁克和Watcom有个严厉的考验,那就是C/C++ Framework的选择。这个对他们来说是难以解决的问题,C/C++ Framework已被Borland的OWL和微软的MFC占领。他们 没有雄厚的资源,也无法在短期内完成,因此他们必须做出决定,二选一,作为他们的Framework。
最终他们俩都选用微软的MFC。三家夹一家,市场已成一面倒的局势,许多人预测Borland会成为输家。Borland内部也进行激烈的辩论,是否转用微软的,停止开发自己的OWL。但最终Borland还是选择继续开发OWL,技术小组认为,MFC无论是设计还是架构上都不如OWL。再加上微软的产品夹带私货,用了不标准的语法,如果转用MFC,还得做不小的修改。而在这里,Borland所做的却是个正确的决定。如果当时Borland转用MFC,首先在气势上会输一截,更重要的是,MFC的发展完全掌握在微软手里。可惜赛门铁克和Watcom没看清,以为凭借微软,有了对付Borland的能力。而正是因为这一点,让他们俩在这次决战中一败涂地,自此退出C/C++开发工具市场。
在决战前夕,微软推出了OLE技术,这是为了对抗苹果和IBM的OS/2的文件技术,它可以让Windows平台的文件内嵌在不同程序中,但微软的OLE比苹果和IBM的要差多了。不过实际上,这几个都是失败的。可“噱头”OLE却成了这次决战的重要因素。
惨烈的圣战终于来临。Borland修复了之前的问题,推出了稳定而快速的Borland C/C++4.5。据说当时Borland C/C++和 Microsoft C/C++的书籍都用的十字军的封面。OLE在当时十分时髦。对于OLE这个关键技术的影响,Borland 是深知的,因此计划在 Borland C/C++4.5的 OWL2.5 中支持 OLE,解决方案是推出自己的OCF。在决战中,让赛门铁克和Watcom大吃一惊的是,微软用的MFC版本比给他们的更新,包含更完整的OLE能力。当时人也发现,许多程序在使用OLE后,容易死机,而微软自己的软件不太发生这种情形,许多人认为微软隐瞒了一些技术细节。赛门铁克和Watcom诉求的重点功能,也完全被微软封死,自然任人宰割。
Borland虽然没有像赛门铁克和Watcom那样溃不成军,但也败下阵来。微软占据了超过一半的市场,但Borland仍然有超过30%的市场,撑着Borland稍做喘息,等待着Delphi到来的浴火重生。
Borland靠Pascal初露锋芒,通过C/C++大显身手,最后又靠着Pascal浴火重生。在这之前,Borland已经把Pascal开发工具发展到极限,已经填满了相应市场,而语言的焦点也从Pascal转到C/C++,再无法继续扩张了。Anders决意要改善Borland Pascal,让其开发工具更现代化。这个开发项目就是Delphi。而Delphi十分优异。编译速度比C快数十倍,产生的程序体积不大,执行速度更是媲美C/C++。
1995 年对于 Borland 来说是悲喜交加的一年。Philippe Kahn 正式因为经营不善而辞去 Borland CEO 的职位,不过 Philippe Kahn 仍是 Borland 董事会的成员之一。当时许多人都认为Borland撑不过1995年,而1995年的情人节却又似乎一夜之间改变了Borland的命运。Delphi在2月14日发布。Delphi因为其优秀的品质大获成功。Borland最成功的Borland/Turbo C/C++系列,卖到3.1,总共销量才100多万套,而Delphi 1.0,光一个版本就卖出50多万套。这次成功,立刻拯救了财务困难的Borland。让开发组获得资源,使得能成就数年后JBuilder再次接棒。
在1995年下半年,Philippe Kahn遗憾地被逐出董事会。Java兴起后,Philippe Kahn觉得它有前途,让当时Borland内部在开始研发Java产品。Philippe Kahn挖一些Java好手到自己的StarFish公司,经营得不错,Philippe Kahn把它卖给别人,大赚一笔。但Philippe Kahn永远不会忘记Borland带给自己的成功、光荣、骄傲、屈辱。Philippe Kahn当然一直想重返Borland,可惜没有乔布斯那样的运气,也永远也无法实现了。
Philippe Kahn 和 Anders 共同创造了传奇的 Borland,两人之间有着浓厚的感情。在Borland 工作时,对于 Anders 任何的想法和计划,Philippe Kahn 都是不遗余力地支持。在Philippe Kahn离开 Borland之后,Anders 再也没有了这股来自最亲密战友的强力支援。Borland新CEO,Delbert Yocam上台后,Borland迎来第二次转变。Anders同样看到了Java成功的未来。Anders不再积极参与Delphi的开发后,希望能主导Java工具的开发。然而却没得到批准,因为高层希望他能在Delphi上投入全力,Delphi是Borland最重要的收入来源。
此时微软展开了最大规模的挖墙角行动。微软屡次派加长轿车到Borland门口找Anders吃饭。微软开出了天价的薪酬,Anders并不为其所动。Anders也早就是富翁了,他觉得多些少些也无所谓。最终盖茨新自找Anders吃饭,还答应给Anders一个小组和极多的资源,让他尽情完成他的想法与计划。最终Anders还是因此心动,离开了Borland。虽然对Anders的离开感到深深的遗憾,但Anders能获得雄厚的微软的大力支持,可以将自己的才能完全发挥出来,也是件好事。Anders的离去对Borland毫无疑问是个损失,但其他优秀的开发者也因此获得崭露头角的机会。
新CEO,Delbert Yocam原是苹果的副总裁,本应有丰富的管理经验。可能是苹果那种大公司他呆惯了,他一进入Borland后花了大钱,换了办公室的所有家具,出差也总要头等舱与总统套房。他决定把Borland名称改为Inprise。然而这个糟糕的决策却使得公司疲于奔命。此时更有竞争对手偷偷散布Borland被收购的消息。Delbert Yocam在公司布局方面也有问题。他过于强调营销。Borland的产品不错,但影响力不够大,是要做一些营销。但全世界Borland员工总共才1000多人,行销有100多人,有点夸张。而且这么多人的部门依然被人抱怨。分流这么多人做行销,同时影响了产品。Delbert Yocam同时改变产品线,强迫每一季度每个开发部门必须推出一个新产品。这让Borland每个产品部门的主管都面临着强大压力,即使产品还没准备好,不管品质如何,都一定要出货。同样的,Delphi 4又如同Borland C/C++4.0那样,因为品质问题,成了噩梦。Borland决心开除Delbert Yocam,而做出这些糟糕成绩的Delbert Yocam却恬不知耻地要合同提前终止的赔偿。
在Java时代中,自然起初是一片混战。Java虽是Sun开发,Sun后来也要做集成开发环境。按理说,Sun自己的产品比谁都了解,却做得很烂。Sun也被微软很合时宜地嘲讽“不会做软件”(多年前Sun嘲讽微软“不会做操作系统”)。微软又想发挥它的传统艺能,“包围再扩展”,由Anders主导开发J++。表面上J++遵循Java标准,但微软可以凭借自己的垄断和影响力,使人们逐渐转到自己的产品上,再推出自己的新内容,不兼容,使原产品名存实亡。业界深感惶恐,于是Sun联合IBM等公司,把微软告了,并获得成功。J++不了了之,微软转而开发C#。Borland的Java集成开发环境JBuilder在这段时间表现不错。本书到此为止了。这本书的作者还瞧不上Java集成开发环境Visual Age for Java(现在Eclipse的前身),很看好JBuilder,对Borland满怀希望。他可能也没想到,这本书出版后没几年,反倒传奇的Borland被收购了。令人唏嘘。