Borland C/C++,Visual C/C++,Watcom C/C++和Symantec C/C++的缠斗
自Borland C/C++ 4.0一役大败之后,Borland在C/C++市场上建筑的巨大堡垒似乎再也不是牢不可破了。Visual C/C++固然在不断的接收Borland C/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++也有和我连络,并且送给我一套最高档的Symantec C/C++,希望我除了为Borland写C/C++的文章之外,也能够为Symantec C/C++写一些东西,我想这就是做为写技术文章的一个好处之一,那就是可以拿到许多最Hot的开发工具。我还记得在当时安装Symantec C/C++之后,的确被它的整合发展环境吸引的说不出话来,因为实在是太棒了,Borland C/C++和Visual C/C++的整合发展环境和Symantec C/C++的整合发展环境比较起来,立刻的就变成索然无味,平凡无奇了,到现在我仍然必须竖起大拇指对Symantec C/C++的整合发展环境说声『赞』。我想Eugene Wang在这么短的时间内把Symantec C/C++打造的好此之好,除了证明他的不凡功力之外,也有向Philippe Kahn示警的意思。证明Philippe Kahn让他离开Borland是错误的决定。我之所以如此说是因为其时Symantec C/C++最喜欢点名挑战的对象便是Borland C/C++了。
对我的感觉而言,Symantec C/C++就像是一个技艺精良,又装备华丽的C/C++军团。
★Watcom C/C++的发展史
真是非常有趣的是,Watcom C/C++走的路子和Symantec C/C++几乎是完全相反的。当时出品Watcom C/C++编译器的是一家加拿大的小公司,不过这家公司却对最佳化编译器有深入的研究。当时Watcom C/C++是以在DOS下能够产生最好的最佳化程式码闻名于世的,在其时有许多写游戏和DOS Extender的厂商都是指名要使用Watcom C/C++,因为不论是Borland C/C++或是Visual C/C++产生的最佳化程式码都比Watcom C/C++的最佳化程式码差上一截。再加入当时最有名的DOS Extender厂商PharLap公司也是使用Watcom C/C++,因此Watcom C/C++在专业的C/C++程式师以及系统程式师心中是第一品牌的C/C++开发工具。
不知道还有多人记得PharLap这家公司,或是有没有人记得Andrew Schulman这位伟大的软体技术人员。当时Andrew Schulman的Undocumented Windows一书红遍了半边天,也惹得Microsoft要告Andrew Schulman。而Andrew Schulman便是PharLap公司的首席工程师,也是当时最著名的『The ANDREW SCHULMAN Programming Series』的总监,例如当时由Matt Pietrek撰写的Windows Internals也是轰动一时的巨著。而PharLap公司是当时出版DOS Extender软体最成功的软体公司。
谈到Matt Pietrek,熟悉Window Programming的人应该很少有不知这位大师级人物的。Matt长期在Microsoft System Journal撰写Under The Hood专栏,专门写一些深入系统的程式设计技术,在数年前便和Andrew Schulman,David Maxey成为Widow System Programming的三大巨头之一。Matt也是著名的Window除错工具SoftIce,BoundsChecker的主要研发工程师。Matt本身也是从Borland出道的,当Matt初至Borland工作时便是在Turbo Debugger小组中研发除错工具。当时Borland的Turbo Debugger是DOS下最强的除错工具,即使是Microsoft也无法推出能够和Turbo Debugger抗衡的除错工具。Matt在这个小组中吸收了大量的知识,并且快速的成为这个领域的专家。后来Turbo Debugger小组的部份成员被Microsoft挖走,让Microsoft掌握了Borland的核心除错技术,以致后来也能够推出不错的除错工具。而Matt也出走到NuMega公司成为开发SoftIce,Bounds Checker的关键人物。写到这里还是不禁要佩服Borland,因为当今许多名满天下的重量级软体工程师都是由Borland培养出来的。
在Watcom C/C++于DOS市场占稳了脚步之后,由于Window已经逐渐成为市场的主流,DOS势必将被逐渐淘汰出局,因此Watcom C/C++要继续的生存下去,也一定要推出Window平台的C/C++开发工具。大约也是在1993,1994年左右Watcom终于推出第一个Window的开发工具。不过当时Watcom C/C++在Window推出的C/C++开发工具实在是平凡不已,其整合发展环境和另外三个对手比较起来简直像是远古的产品,一点特色都没有,不过Watcom C/C++仍然是以它的最佳化编译器做为号召。因此在当时发生了一个非常有趣的现象,那就是许多软体公司会同时买Borland C/C++,或是Visual C/C++,Symantec C/C++之一,再搭配一套Watcom C/C++。在开发应用系统时使用其他三套开发工具之一,最后要出货时再使用Watcom C/C++来编译以产生最佳的程式码。在Watcom C/C++推出了Window平台的开发工具之后,仍然吸引了一群使用者,虽然Watcom C/C++的市场比起其他的三家来说是最小的,但是也在一方撑起了一片天,成为四大C/C++开发工具之一。稍后Watcom C/C++被Sybase并购,并且成为后来Sybase的Optima++的前身。
对我的感觉而言,Watcom C/C++就像是一个穿著朴素,但是却拥有最佳训练的白色C/C++军团。
关键的时刻-MFC Or Not
在Symantec C/C++和Watcom C/C++逐渐的站稳了脚步之后,四大编译器决战的时刻也逐渐逼近了。在1994年未的决战之前,Symantec和Watcom同时面对了一个非常严厉的考验,那就是C/C++ Framework的选择。
虽然Symantec和Watcom都以各自的特色占得了市场,不过在当时对于一个C/C++开发工具来说,最重要的因素之一就是C/C++ Framework。因此Symantec和Watcom也都必须提供使用者一套C/C++ Framework。不过这对于Symantec和Watcom都是一个难以解决的问题,因为当时的C/C++ Framework已由Borland的OWL和Microsoft的MFC所占领,如果要自己发展新的C/C++ Framework,那么Symantec和Watcom并没有如此雄厚的资源,也无法在短时间之内完成。因此Symantec和Watcom必须下一个决定到底是要使用MFC或是OWL做为它们的开发工具C/C++ Framework。
在1993年初Symantec和Watcom分别和Microsoft签约License MFC做为它们的开发工具的C/C++ Framework。至此大势以定,在C/C++ Framework的市场已经形成三家夹击一家的形式。当时许多人便预估Borland将成为输家,因为市场已经成为一面倒,MFC看起来已经是胜券在握了。在当时于Borland的内部也展开了激烈的辩论,讨论是否也要License MFC做为C/C++的Framework,停止继续开发OWL。不过后来Borland还是决定继续开发OWL,而不使用MFC,因为Borland的C/C++技术小组认为MFC不论是在架构上或是设计上都比不上OWL。而且由于Visual /C++在当时对于C/C++的标准支援不如Borland C/C++,因此在MFC内部使用了大量的Macro以及不标准的语法,因此如果Borland C/C++要使用MFC,那么还需要修改编译器来编译MFC。
对于这一点我认为Borland还是做了一个正确的决定,因为如果当时Borland也License MFC,那么不但在气势上便输了一截,而且当MFC的发展是完全掌握在Microsoft的手里,那么就等于脖子是掐在别人的手里,动弹不得了。可惜的是Symantec和Watcom并没有看清这一点,以为有了和Microsoft一样的Framework,就可以在其他地方和Microsoft以及Borland一决雌雄,Symantec和Watcom却没有想就是这一点决定让后来的决战一败涂地,终究完全推出PC的C/C++开发工具市场。
时序到了1994年末,C/C++开发工具的四大天王决战的日子终于愈来愈近了。
没有评论:
发表评论