📄 c++圣战篇.txt
字号:
才警觉事情不对而充充忙忙的开发dBase For Windows。但是当dBase For Windows 推出之
后,Microsoft 早已推出了两个FoxPro For Windows的版本,而占据了大部份的市场,
dBase For Windows 其势已不可为了。
Microsoft 开始向Borland 挖角。由于Microsoft在许多的开发工具战役中一直被Borland
打得灰头土脸。更何况Borland C/C++ 3.1 几乎抢占了大部份的市场,因此Microsoft 开
始准备好好的对付Borland。但是由于其时Borland 在编译器的技术领域领先了Microsoft
数年之久,Microsoft无法在短时间之内赶上Borland,因此 Microsoft 决定使用最有效的
方法立刻追上 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,而CarlQuinn也是数年后JBuilder的JBCL Framework的灵魂开发人
物。Carl Quinn 不但负责开发OWL ,也为Borland 在元件Framework 的技术领域立下了
重要的贡献。由于 Carl Quinn 的投入,因此开启了 OWL 大战MFC,Borland C/C++缠斗
Visual C/C++数年精彩好戏的序幕。
Borland C/C++的反击
我的小文《DELPHI探索》写作进度很难控制,其间隔的时间可能比较长, 为了在这段间隔
的时间让大家看当Visual C++ 1.0在C/C++开发工具市场获得了空前成果的之后,Borland
才从Borland C/C++ 3.1的胜利梦中惊醒,思考如何面对Visual C++的猛烈功势。事实上当
时的Borland如果脑袋清醒一点,好好看清当时C/C++开发工具的市场,那么Borland应该
会发现虽然Visual C++经过2年多的整军经武,实力已经大不前。
不过Borland C/C++ 3.1仍然在许多方面可以和Visual C++一争长短的。例如其时Visual
C++的最佳化编译器仍然落后Borland C/C++ 3.1一些,第2点是MFC仍然没有完整的封装
Window API,而且MFC是以较低阶的方式封装Window API,并不是很物件导向,也不是很
容易使用。事实上以我的观点来看,我认为就是因为MFC不好用,因此Visual C++才需要
在整合发展环境中提供以视觉化方式产生MFC程序码的功能,第3是Visual C++ 当时并没
有很好的封装资料结构的Container Class,而Borland C/C++却有非常好用的BIDS类别
库。第4,也是最重要的,Borland C/C++ 3.1仍然拥有绝大的市场,而且几乎所有的周边
公用程序,Shareware等都是使用Borland C/C++ 3.1开发的。因此如果Borland不要急,
好好的开发下一代的C/C++开发工具,即使Microsoft Visual C++能够掠夺一些市场佔有
率,但是如果下一代的Borland C/C++能够像Borland C/C++ 3.0一样立刻拉开和Visual
C/C++的距离,那么Borland在C/C++市场仍将拥有王者的地位。
可惜的是,也许Philippe Kahn在和Microsoft的FoxPro For Window一役中被吓到了,因
此急於在Visual C/C++ 1.0之后立刻推出新的Borland C/C++以扳回颜面。但是Philippe
Kahn忘了,在这段时间之内Borland失去了许多的人材,Eugene Wang也离开了,更重要的
是在过去近3年的时间之内,Borland几乎没有持续的开发下一代的Borland C/C++,在短
时间之内如何能够仓促的推出产品呢?
但是Philippe Kahn可管不了这么多了,急忙找来了Carl Quinn等人便要求立刻开发出下
一代的Borland C/C++,於是Borland C/C++ 4.0就在这么鸭子赶上架下匆忙的开发了。
Borland在开发Borland C/C++ 4.0时犯了许多的大忌。首先在这么短的时间内Borland决
定全新发展整合发展环境,第2是把OWL完全重写,第3是大幅修改最佳化编译器,第4是
整合当时棘手的VBX,Borland居然让16位元和32位元的程序能够同时使用16位元丑陋
的VBX。
上面所说的每一项都是大工程,Borland早应该在Borland C/C++ 3.1之后便开始做这些工作
现在要在短短的一年多的时间内重新开发一个这么複杂的C/C++开发工具,几乎是不可能的
工作。但是在Philippe Kahn的要求之下,这些Borland的工程师还是硬着头皮做了出来。
不过我必须很沈痛的说,当时我在Beta测试Borland C/C++ 4.0时便和台湾Borland的人
说,如果Borland仓促推出Borland C/C++ 4.0的话,那么不但不会对Visual C++产生任
何的影响,反而是自杀的行为,因为臭虫实在太多了,整个整合发展环境的反应也很缓慢,
它的最佳化编译器更是笑话,错误百出,真是像当时恶名昭彰的Microsoft C 4.0一样。我
还开玩笑的说,是不是因为Microsoft从Borland挖了大量的Borland C/C++人才,因此好
胜的Philippe Kahn也还以颜色,从Microsoft反挖Microsoft C的人,却不幸的挖到了
Microsoft C 4.0 的人。
但是很显然的Borland并没有听到我的,或是其他Beta测试人的心声,在Visual C++ 1.0
推出后的1年多,Borland C/C++ 3.1后的4年,Borland终於推出了新一代的Borland
C/++ 4.0,这个肩负和Visual C++ 1.0对抗的C/C++开发工具。
在Borland C/C++ 4.0刚推出之际,Borland确实为4.0做了极大的造势,我记得在当时所
有重要的电脑杂志中,例如Byte,PC Magazine,Dr. Bob等,都有4.0整页的广告。这个
广告的内容是以一个巨大的猫头鹰为主,再搭配蓝色底色系的Borland C/C++ 4.0为主,选
用巨大的猫头鹰当然是因为OWL的原因,只可惜我现在找不到那幅广告了。
当时Borland使用了如下的广告用词 : 『Visual Is Only A Facial Facade』来讽刺Visual
C/C++只提供了产生MFC程序码的基本精灵,而Borland除了也提供相对应的AppExpert精灵
能够提供类似的功能以产生使用者选择的OWL程序码之外,Borland C/C++ 4.0的整合发展
环境还提供了视觉化的3面版视窗,能够让程序师完整的掌握整个专案的情形。
下图则是当时Borland C/C++的註册商标,3面版视窗开发环境。看到下图又令我想起当初
使用C/C++写程序的日子,下方程序码面版清楚的显示了我在1995年於鼎新工作时写的智
慧型Window排程系统,时间过得是真快啊。
(图3 令人怀念的Borland C/C++ 4.0整合发展环境,三面版视窗)
当时Borland C/C++ 4.0的3面版整合发展环境真是开创了一个新的局面,因为这个整合发
展环境允许程序师知道每一个应用程序定义的视窗讯息,并且能够立刻的显示在下方的程序
码视窗中,的确是非常的方便,也比当时Visual C/C++的整合发展环境来得先进。再加入
Borland 较为先进的编译器技术和架构更好的C/C++ Framework-OWL,照理说Borland C/C++
4.0应该会获得极大的胜利,那么为什么最后会以失败收场呢?
没错,在Borland C/C++ 4.0刚推出之后订单的确如雪片般飞来,销售情形非常好,因为这
毕竟是Borland 在睽违了数年之后的大作,许多Borland的用户都迫不及待的昇级,就像当
初我也是拚命的要求台湾Borland要第一个给我Borland C/C++ 4.0。但是在Borland C/C++
4.0推出一段时间之后,市场的反应就急速的冷却下来,因为各种负面的批评不断涌现,这
主要的原因当然是因为Borland C/C++ 4.0的品质实在不好,就像前面我在Beta测试时说的
由於Borland太急於推出4.0,因此并没有在最后阶段修正许多的错误,又没有经过最后系统
微调的工作,又太大胆的加入太多先进的技术,造成了整个产品的不稳定,而造成了大错。
下面几点应该是造成当初Borland C/C++ 4.0滑铁卢的主要原因:
*整合发展环境方面-臭虫太多,容易当掉而且反应速度缓慢
*编译器方面-最佳化玩得过火,产生错误的编译程序码
*OWL方面-採用全新的多重继承架构,虽然是正确的做法,却和Borland C/C++ 3.1中的OWL
不相容,造成许多程序师无法昇级C/C++专案
*VBX方面-大胆的採用在16/32位元都能使用VBX的技术,造成一些VBX无法顺利的在Borland
C/C++ 4.0中使用
我想其中最可惜的就是OWL了,因为OWL 2.0在各方面都有一流的表现,实在是MFC强劲的
竞争对手,OWL 2.0 也获得了各方一致的肯定和称讚。无奈的是由於OWL 2.0做了从基本架
构的改变,这是为了解决当初OWL 1.x使用了不标准的C/C++编译器技术的问题,但是这造
成了原本Borland C/C++程序师极大的困扰,因为昇级不易。对於新的C/C++使用者来说又
因为Borland C/C++ 4.0本身不稳定的因素而却步,因此造成了OWL 2.0叫好不叫座的下场.
真是可惜了OWL小组的努力。
我记得当时我的专案有使用FarPoint的SpreadSheet VBX元件,由於一直无法顺利的在
BorlandC/C++ 4.0中使用,并且会造成应用程序的当掉,最后追踪执行程序码却发现应该
是Borland C/C++ 4.0的问题,因此最后只好在咒骂中放弃使用4.0,而回到Borland C/C++
3.1。我当时想,对於我这个长期使用Borland产品的人都无法忍受4.0的品质,其他的程序
师又怎能使用这个产品。我想这就是为什么后来4.0全面溃败的原因,因为Borland推出了
根本不堪用的产品。
在我於Borland工作的时间,有一次在新加坡和现在Borland开发者关系部门的副总裁David
Intersimone谈起这一段往事,David也很感慨这一段往事,David直呼"We screwed it up!"
"It's a mess".David并且说当时整个Borland C/C++开发小组都很混乱,和以往Borland
C/C++ 3.0/3.1的开发小组比起来实在是差太多了,除了因为一些重要的人物相继离开
Borland,而且Microsoft也挖走一大票人之外,Philippe Kahn的直接介入,造成人事不
和也有很大的原因。
在Borland C/C++ 4.0快速失利之后,Borland也体认到问题的严重性,因此立刻的着手开
发Borland C/++ 4.0的Patch,当时是称为Service Pack。但是在稍后的4.01版中并没有
完全的解决问题,一直要到4.02才稍为解决一些严重的问题,无奈时不我予,拖的时间太
长,市场已经起了巨大的变化。在Borland C/C++ 4.0失利之后,立刻造成了严重的后果,
首先是Borland C/C++的市场大量且快速的流失,让Visual C/C++快速的成长。第二点是当
初Borland C/C++3.1在公用程序市场打下的江山也拱手让人,原本许多硬体厂商也使用
Borland C/C++ 3.0/3.1撰写驱动程序也开始转换到Visual C/C++,而严重的是在应用程序
市场方面由於4.0的品质以及稍后OLE的关系,也开始大量的开始转为使用Visual C/C++
来撰写应用程序。
Borland在3个主要的应用市场接连败退,C/C++的江山注定将易主,其势已不可挽。
Borland C/C++,Visual C/C++,Watcom C/C++和Symantec C/C++的缠斗
自Borland C/C++ 4.0一役大败之后,Borland在C/C++市场上建筑的巨大堡垒似乎再也不是
牢不可破了。Visual C/C++固然在不断的接收BorlandC/C++失去的市场,此时在C/C++市场
上也加入了另外两个坚强的对手,那就是Symantec C/C++和Watcom C/C++。
Symantec C/C++的发展史
说起这两个对手也都是个个来头不小,先说Symantec C/C++吧。它的Think C/C++在
Macintosh上便是非常有名的编译器,因此早在C/C++领域便有深厚的基础。在Symantec并购
了PC上第一个C/C++编译器Zortech C/C++之后,Symantec进入PC的开发工具市场也是箭
在弦上了,只可惜的是其时Symantec还未找到一个在PC上有丰富经验的开发工具领导者。
也许是上天注定要引起稍后的C/C++编译器大战吧,此时Borland C/C++ 3.1的幕后支柱
Eugene Wang刚好和Philippe Kahn闹翻,离开了Borland。Symantec见此时不可失,立刻
重金延揽Eugene Wang到Symantec,为Symantec推出第一个C/C++开发工具。在1993年
左右吧,Symantec C/C++在Eugene Wang的掌舵之下推出了第一个Symantec C/C++版本,
立刻便获得了市场的好评。自此之后Symantec C/C++军心大振,不断的继续改善,也逐
渐的获得了不小的C/C++市场,隐然成为可以对抗Borland C/C++,Visual C/C++的另
一山头。当时Symantec C/C++是以最华丽,先进的整合发展环境获得市场的高度认同,在
C/C++编译器最佳化方面的表现也不会输给其他的编译器。
当时我在RUN!PC上写C/C++的文章,因此Symantec C/C++也有和我连络,并且送给我一套
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -