主题:【文摘】C/C++圣战! -- aircobra
基本上我现在看这些图形架构,会发现它们并没有落后现在太多,可见当时设计
者的功力(Carl Quinn Again)。
//
// Insert an OLE object into the view
//
void TOleWindow::CmEditInsertObject()
{
001 PRECONDITION(OcView);
002 TOcInitInfo initInfo(OcView);
003 if (OcApp->Browse(initInfo)) {
004 TRect rect;
005 GetInsertPosition(rect);
006 SetSelection(new TOcPart(*GetOcDoc(), initInfo, rect));
007 OcView->Rename();
008 InvalidatePart(invView);
}
}
程序1 OWL的TOleWindow支持OLE插入对象之成员函数
//
// Handle left double-click message
//
void TOleWindow::EvLButtonDblClk(uint modKeys, TPoint& point)
{
PRECONDITION(GetOcDoc() && GetOcView());
TOleClientDC dc(*this);
dc.DPtoLP(&point);
TOcPart* p = GetOcDoc()->GetParts().Locate(point);
if (modKeys & MK_CONTROL) {
if (p)
p->Open(true); // Ctrl key forces open editing
}
else {
SetSelection(p);
if (p && p == GetOcView()->GetActivePart()) { // resync the active
flag
p->Activate(false);
}
GetOcView()->ActivatePart(p); // In-place activation
}
}
程序2 OWL的TOleWindow支持左键双击之成员函数
虽然Borland及时的在OWL 2.5中加入了OLE的支持,无奈Microsoft随后又在OLE中
加入了许多其它的功能,因此让OCF并无法完整的支持OLE所有的功能,B无法不断的延后
Borrland C/C++的推出,因此在1994年未,Borland终于推出了决战
的4.5版本。
C/C++开发工具的最后圣战
『虽然已经过去了许久的时间,但是我仍然忘不了那场最惨烈的战役!』
1994年未, 1995初Borland在痛定思痛之后,终于清除了Borland C/C++ 4.0中所有
的问题,也开发出了自Borland C/C++ 3.1以来最稳定,最快速的Borland C/C++
4.5的版本,准备和Microsoft决一死战。我还记得当时在书籍市场中许多有关
Borland C/C++和Microsoft C/C++的书籍都是使用十字军的封面,而Borland
C/C++的系列丛书都是以蓝色为色系,而Microsoft的则是以红色为色系,仿佛两大
军团终将决战似的。
C/C++四大天王决战一役的Borland主将-Borland C/++ 4.5
不过这次的战役不光是Borland的蓝军和Microsoft的红军相对抗,在Symantec的华
丽军团经过了经军经武,Watcom的白色劲旅枕戈待旦,而且都从Microsoft
License了MFC之后,蓝,红,花,白四大军团决战的日子终于到了。首先当
Symantec和Watcom分别取得了MFC之后,Symantec便推出了C/C++ 7.x的版本,和
Watcom C/C++混战了起来。两个使用系出同门的C/C++ Framework产品战得不亦乐
乎,随后Borland C/C++ 4.5和Visual C/C++的新版本也加入了这场最重要的决战
。但是让Symantec和Watcom C/C++大吃一惊的是Microsoft使用的MFC居然比它们的
版本高出了一个版本(1.x对2.x),而且新版本的MFC包含了完整的OLE支持能力。而
Borland虽然也有OCF,但是仍然不敌新版MFC中的OLE能力。由于当时几乎所有的应
用程序都需要支持OLE,但是却只有使用Visual C/C++最新的版本才能够开发完整
OLE能力的应用程序,因此不管OLE到底有没有用,反正先加入再说。因此市场上的
情势很快的就发生了巨大的变化,几乎大部份的应用程序开发因为OLE的原因都选
择使用Visual C/C++,Symantec和Watcom军团很快的就败阵下来。
至于Borland C/C++ 4.5虽然是一流的产品,如果没有OLE的因素,Visual C/C++新
版本真的并没有比4.5好。虽然4.5也有OCF,但是在市场上只有Borland和Novell,
WordPerfect选择使用OCF,在和Microsoft的Visual C/C++经过将近一年的缠斗之
后,其它大部份的厂商都选择了Microsoft的MFC 2.x版,真是形势比人强。基本上
OCF的架构真的是个好东西,只是OCF无法完整的支持OLE,因为OLE的发展是掌握在
Microsoft手中,因此虽然OCF的架构良好,终究在功能上不及对手。Microsoft结
合操作系统,开发工具和应用程序的手段真是无往不利。击败Lotus,Borland是如
此,歼灭Netscape也是如此。
对于Symantec和Watcom来说,这场战役就如同『长平之战』,秦军坑杀40多万赵军
一样。杀得Symantec和Watcom全军覆没,大败而归,至此Symantec弃受PC的C/C++
开发工具市场,转而开始研发Java开发工具,进而在稍后推出了著名的Visual
Cafe, 至于Eugene Wang则离开了Symantec,自此也离开了PC开发工具的领域。
而Watcom则是更为凄惨,整个公司在DOS的市场逐渐式微,而Window平台的开发工
具又大败而归,两头落空。不久之后Watcom便被新兴而起的Sybase并购,从此消失
于竞争激烈的市场。
归纳Symantec和Watcom失败的原因是C/C++的Framework MFC掌握在Microsoft手中
,在决战时刻Microsoft居然手握比Symantec和Watcom更新的MFC利器,而且在
Visual C/C++精进最佳化的技术并且改善整合发展环境之后,Symantec和Watcom诉
求的重点功能完全被Microsoft封死。因此在产品,技术,市场和气势上完全不如
对手的情形下,自然只能任人宰割了。
对于Borland而言,虽然没有像Symantec和Watcom那么溃不成军,但也是再次败下
阵来。虽然平心而论Borland C/C++ 4.5的确是一个非常好的产品,无论在OWL,最
佳化编译器,整合发展环境方面都有一流的表现,和Borland C/C++ 4.0比较起来
简直有如脱胎换骨一般,到现在Borland C/C++ 4.5仍然是我最喜欢的版本之一。
但是无奈当初Borland C/C++ 4.0给人挥之不去的负面印象,以及无法完整支持当
时如火如荼的OLE技术,因此还是在决战之中败了下来。好在蓝色的Borland大军毕
竟是训练有素的,虽然自此让Microsoft占据了超过50%的市场,成为C/C++开发工
具的老大,但是Borland仍然掌握了超过30%的市场,稍做喘息,并且支撑Borland
在各重要战役失败之后维持公司的运作,等待Delphi的浴火重生,再重新出发。
经过这一役之后,Microsoft终于清除了大部份的对手,对于Microsoft而言程序语
言开发工具的战争已经结束,这个市场注定将被Microsoft占据大部份的市场。在
Microsoft手握操作系统,Office软件和开发工具三大获利市场之后,Microsoft也
开始将矛头对准下两个竞争目标,关连数据库以及主从架构开发工具。在
Microsoft正式进军这两个市场之后,当然也展开了连番的好戏,尤其是在主从架
构开发工具方面又开启了VB,PowerBuilder,Gupta/Centura和Delphi的惊天动地
大会战。另外一个意外开启的战争则是Microsoft在1995年和Netscape的挑起的浏
览器大战。
对于Borland而言,在C/C++最后一役之后,基本上我认为开发工具的圣战已然结束
,Borland也正式开始走下坡。更严重的是我认为自此之后Borland不但丧失了
C/C++的江山,也失去了对于C/C++开发工具的创意,这是我感觉最遗憾的地方,到
现在为止我仍然认为Borland尚未重拾当初在Borland C/C++ 3.0/3.1时代独领
C/C++创意风骚的精神。也许,也许,要看看C/C++ For Kylix或是C++ Builder 6
是否能够重新找回这个失去已久的精神,不要再让我失望了。
雄霸数年的C/C++的世界冠军-Borland C/C++ 3.1-永远的怀念
永不成气候的C/C++开发工具-IBM Visual C/C++
IBM在C/C++开发工具扮演的角色一直令人啼笑皆非,因为在C/C++编译器战争最激
烈的时刻,IBM这个全球信息大厂却一直是缺席的。一直到了1995之后,C/C++编译
器市场大势已定之后才慢慢的加入战局,推出VisualAge C++ 3.0,企图进攻此市
场。但是此时市场早已由Microsoft的Visual C/C++称雄。IBM的VisualAge虽然以
创新的可视化设计家能够定义对象之间的关系,但是在其它方面却乏善可陈,整个
整合发展环境也缓慢如蜗牛,需要非常高文件的硬件配备才能够顺利的执行,和
Visual C/C++以及Borland C/C++等工具比较起来就像是恐龙一般,因此几乎没有
在市场上引起任何的反应。
在IBM推出VisualAge 3.0并没有在PC的C/C++开发工具市场获得任何的明显成果之
后,IBM又再次的集中了许多的资源,开发下一代3.5的版本,希望能够在此市场占
有一定的比率。我知道IBM在VisualAge投注了大量的资源,因为从Beta版开始台湾
的IBM便有人和我接触,希望我也在RUN!PC上为VisualAge 3.5写一些文章。因此在
1996年的6月我写了一篇C/C++编译器的比较文章,下面的资料便是数年前当时还在
Beta版的VisualAge 3.5和其它编译器的比较:
从上面的数据中可以看到其实VisualAge 3.5的表现还不错,只是对于当时还在使
用AMD DX4-100/32M RAM机器的我来说,实在是跑不太动VisualAge 3.5。后来台湾
IBM负责VisualAge的产品经理请我吃饭,在此饭局中这位李经理同时请了贺元(后
来为资迅人的总裁),薛晓岚(后来为资迅人的副总裁)以及其它两位作者,希望大
家在计算机杂志中继续的为VisualAge 3.5写写东西,一起Promote此产品。在这个
饭局中我是第一次和贺元,薛晓岚见面,当时贺元在中文PC Magazine有一技术专
栏。记得当时我向这位李经理提起我的机器几乎无法跑VisualAge 3.5,他还立刻
一口答应愿意借我一台当时IBM最高?n的PC,同时每写一篇VisualAge的文章,除了
RUN!PC原本的稿费之外,IBM会再付一字2.5元的稿费。乖乖,IBM真是大手笔,我
算算当时我的产能,写一篇文章就能够赚2到3万,又有免费的最高档机器可用,真
是太好康了。不过后来我还是觉得IBM在此市场可能不会深耕,在不愿意违背自己
写作习惯和得罪Borland的顾虑下,最后还是没有答应。现在想想当时真是太笨了
,放着好赚的稿费不赚,嘻。
IBM的C/C++开发工具之所以在市场无法成功是一是因为并不了解在此竞争激烈的市
场中使用者到底要什么。另外一个原因则因为IBM并不以PC上的开发工具软件为重
要的事业,即使无法竞争对于IBM来说也没有什么影响,不像Borland这可是生命之
争。因此IBM只是兴起玩玩,随即放下。所以我觉得在PC平台使用IBM的工具是很危
险的,因为IBM可能随时会放弃此市场。例如不知道现在VisualAge C/C++到底如何
,是不是还在3.5或是4.0版,已经数年没有任何的维护和改善了。
稍后IBM为了想在OS2和Window平台上推出能够和Microsoft相抗衡的Basic工具,因
此秘密的研发了一个Object Basic。我也曾看过这个工具,但是Object Basic跑起
来慢得跟乌龟一样.后来不知道是不是一直无法改善这个问题,因此IBM从没有推
出此产品,现在IBM似乎只对Java有兴趣,VisualAge For Java还算发展的不错,
希望不会有一天IBM对VisualAge For Java的态度会和VisuaAge For C/C++以及
Object Basic一样才好.
快速殒落的潜力之星-Sybase的C/C++ RAD工具Optima++
在1996年吧,Sybase并购了Watcom之后,终于推出了石破天惊的C/C++开发工具,
Optima++。Optima++是当结合了Watcom的最佳化编译器以及类似Delphi的组件拖曳
开发环境的第一个RAD C/C++开发工具,更棒的是Optima++的组件架构(类似
Delphi的VCL)完全是以纯正的C/C++程序代码撰写的。这可不得了,因为这代表
Optima++是一个融合了Visual C/C++和Delphi两大王者开发工具为一身的超级赛亚
人工具。
在我知道这个工具,并且取得实际的使用之后,令我极为震惊。因为这个工具对于
我这个使用了C/C++ 5,6年的人来说,是比Delphi还具有吸引力。因此在当年我立
刻的在RUN!PC上介绍了此不可置信的工具。果然,Optima++很快在开始风卷市场,
虽然没有立刻的占据很大的市场量,但是已经造成了一股气势,开始为Visual
C/C++和Delphi带来了压力。
我记得当时台湾Sybase办的产品发表会也吸引了数百人与会,不可一世。在我的
RUN!PC文章出版之后,台湾的Sybase立刻和我连络。由当时的余协理和我见面,也
是希望我继续为Optima++写文章,台湾Sybase也提供额外一字加2元稿费的待遇。
但是我告诉余协理,Optima++ 1.0虽然很棒,但是仍然有一些臭虫,而且和中文环
境相冲突,无法处理中文,需要立刻的解决问题才能够在台湾的市场成功。她答应
我立刻的向总公司反应。我也老实的告诉她在问题没有解决之前我无法写一些不确
实的东西。后来台湾Borland的总经理方先生也找我去询问有关Optima++的事情,
我告诉他Optima++是好东西,但是中文有问题。如果中文问题能够解决,那么将对
Borland的产品有很大的影响,当时我还不知道Borland由于Optima++的影响,已经
开始准备发展C++ Builder。
在1996年底左右吧,Optima++ 1.5终于进入Beta的阶段,但是在我拿到Beta版时仍
然非常的失望,因为中文的问题仍然没有解决。后来台湾Sybase又找我去,这次和
我见面的是台湾Sybase总经理郭俊男先生,以及Sybase的新加坡技术总裁,不过我
忘记这位先生的名字了。我们见了面之后,我立刻的把Optima++ 1.5中文的问题以
及许多的臭虫告诉他们,希望他们能够解决,如此Optima++ 1.5才能够在中文市场
成功。可是出乎意我意料的是,他们似乎并不急着这些问题,反而询问我是否有意
愿为Sybase工作,做PowerBuilder的产品经理。
也许是因为我为Delphi写了太多的东西,让PowerBuilder受了很大的影响,因此他
们希望我到Sybase工作,以打击Delphi并且Promote PowerBuilder。当时他们提出
的待遇条件实在是非常,非常的诱人,比我当时的薪水高出一倍左右(我当时在资
策会工作)。不过由于我对PowerBuilder实在没有什么兴趣,因此我告诉他们如果
是做Optima++的产品经理,那么我将会考虑并且接受。
没有想到Sybase的新加坡技术总裁告诉我Optima++在1.5推出之后就可能会停止,
因为Sybase要把资源移去为当时愈来愈红的Java研发一个新的Java RAD开发工具,
那就是后来的PowerJ。于是他问我如果不愿意做PowerBuilder的产品经理,那么是
不是愿意做PowerJ的产品经理?由于当时我已经知道Borland开始了Open
JBuilder的研发,而我对Open JBuilder的兴趣远大于PowerJ,因此并没有答应
Sybase。果然,在Optima++ 1.5推出之后,不但中文的问题没有解决,Sybase也没
有继续的对Optima++研发下去。
一个如此有潜力的产品就这样消失了,真是令人遗憾,Optima++应该有很好的机会
可以成功的,我相信如果当时Sybase知道C++ Builder后来的成果,可能就不会放
弃Optima++了。而C/C++的RAD工具一直要到后来的C++ Builder来完成这个梦,又
是Borland成功的进入这个工具市场。
(待续)
- 相关回复 上下关系8
压缩 3 层
Borland C/C++的反击 aircobra 字5915 2004-03-06 19:53:49
ODBC和IDAPI之争 aircobra 字11484 2004-03-06 19:55:20
Watcom C/C++的发展史 aircobra 字7817 2004-03-06 19:55:58
C/C++开发工具的最后圣战
尾声 aircobra 字492 2004-03-06 20:00:49
李维为borland吹得太多了 2 老兵帅客 字1956 2004-03-07 19:57:29
一语中的 无斋主人 字148 2004-03-09 11:29:48
😄行家伸伸手,便知有没有! Highway 字58 2004-03-07 20:35:13