2006年3月27日

Borland传奇(四)

Borland C/C++的反击

 

当Microsoft 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仍然没有完整的封装Windows API,而且MFC是以较低阶的方式封装Windows 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 Windows一役中被吓到了,因此急于在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是整合当时棘手的VB,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整页的广告。这个广告的内容是以一个巨大的猫头鹰为主,再搭配蓝色底色系的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面版视窗,能够让程式师完整的掌握整个专案的情形。

 

    例如当初令人眼睛为之一亮的AppExpert, 还记得Borland提供的AppExpert吗?

 

    下图则是当时Borland C/C++的注册商标,3面版视窗开发环境。看到下图又令我想起当初使用C/C++写程式的日子,下方程式码面版清楚的显示了我在1995年于鼎新工作时写的智慧型Window排程系统,时间过得是真快啊。

 

令人怀念的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元件,由于一直无法顺利的在Borland C/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的直接介入,造成人事不和也有很大的原因。

 

David I.说『We Screwed it up!』 ,『It’s a mess』

 

    在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++的市场大量且快速的流失,让VisualC/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++的江山注定将易主,其势已不可挽。   
 

没有评论: