一篇Delphi与Borland偏执狂写的文章.另一篇:李维对borland历史记忆的文章.没耐心者别进 (1分)

  • 主题发起人 主题发起人 bini
  • 开始时间 开始时间
B

bini

Unregistered / Unconfirmed
GUEST, unregistred user!
看下文,如果认为对delphi学习者有激历,就请UP一下.
 
[转载]
> 新 新 入 库 > 汉 化 补 丁 > 获 奖 推 荐 > 热 点 推 荐 > 更 新 历 史 > 装 机 必 备 > 使 用 指 南 > 下 载 F A Q >
当前位置:软件下载 >>> 软件使用指南 >>> Delphi VS VC++! 投稿信箱
投稿请注明转载还是原创。转载请注明原链接位置及相关信息,如文章牵涉至版权问题请来信告知,谢谢!
Delphi VS VC++! 方 圆 推荐

||→相关资源 方圆专题站

如果你还对Delphi的能力怀疑,那么请看本文!
注:本文转载,出处不详。
偶然来找一个文件,却发现这里关于VC++和Delphi的讨论很是激烈。看了大家写的一些文章,觉得有些
看法正确,有些就很偏颇甚至错误(也许无知?很抱歉我这样说:-)。我无意与任何人争论,更愿意把这看成
是技术上的讨论。应该本着公正,不带偏见的态度(这并不意味着非要平分秋色,一切应以事实为准)。我用
过除tp1以外的所有版本的Turbo Pascal,所有版本的Turbo C/Borland C++,所有版本的Delphi和C++
Builder;以及msc 5.0/6.0,msc/C++ 7.0和visual C++ 4.2/5.0。不敢说有多高的水平,至少也算有一点
经验吧。下面就谈一下我的看法。
1. 编译器
应该说Borland的编译器是最好的。因为Borland有全世界最好的编译器开发组(虽然anders hejlsberg
离开了)。从技术上来讲,Borland领先任何竞争对手至少2~3年。一般来说,Borland的编译器总是能生成更
小的代码并且通常(并不是在任何情况下)更快的代码。
紫云英、曾登高在文章中说VC++编译的程序小,这其实是使用了动态连接的结果 。m$把VC++的运行库
(msvcrt*.dll,msvcp*.dll, mfc*.dll,你看看这些文件加在一起有多大)在安装Windows时就放在了system/
system32目录中了。两位说“协商接口”的问题,恐怕是对某些英文文章的理解错误。m$就是不愿意在
Windows中带上其他公司的运行文件,没有技术上的原因。
其实Delphi/C++ Builder不论在动态连接或静态连接的情况下,生成的程序都要比VC++的小。比如mdi的
例子程序:在Delphi/C++ Builder中选new ... | project s |mdi application,在VC++中用mdi app
wizard;生成的程序功能是非常类似的。
下面是比较结果:
(Delphi打开优化,C++ Builder使用最大速度优化,VC++ 5使用最小代码优化)
Delphi 3 Delphi 5 C++ Builder 5 VC++ 5
dynamic link 21k 35k 44k 70k
static link 253k 398k 467k 490k
凡是使用了应用类库的程序(不管是mfc,owl,vcl以及新的clx框架)都要比不使 用的大不少。这是因为
目前的智能连接(smart link)技术还只能针对全局变量/过程,而不能用于对象结构。哪怕你只使用了某个类
(或被这个类间接引用)的一个属性或方法,这个类以及它所引用的所有类都全部被连接到exe中。目前所有的
编译器都没有解决这个问题。 (ps: 其实能生成最小代码(真编译)的高级语言编译器是Turbo Pascal,不信
你写程序比较一下:
program test;
begin
writeln('hello, world.');
end.
生成的exe不到1.5k。而同样的c程序:
#include
main()
{
printf("hello, world./n");
}
最精悍的c/C++编译器生成的代码也有6k。
那么几个编译器生成的代码质量又如何呢?
举一个例子,比如我们在编程时经常用到的for循环语句:
(1) object Pascal:
procedure foo;
var
i, j: integer;
begin
for i := 0 to 15do
j := j + i;
end;
(2) C++
void foo(void)
{
int i, j;
for (i = 0;
i < 16;
i++) j = j + i;
}
Delphi 3生成的代码(打开优化): 字节数 时钟周期
00424aa9 33c0 xor eax,eax 1
00424aab 40 inc eax 1
00424aac 83f810 cmp eax,0x10 1
00424aaf 75fa jnz -0x06 0 (可并行)
-----------------
8 3
C++ Builder 5生成的代码(最大速度优化):
00401535 33c0 xor eax,eax 1
00401537 40 inc eax 1
00401538 83f810 cmp eax,0x10 1
0040153b 7cfa jl -0x06 0 (可并行)
-----------------
8 3
visual C++ 5生成的代码(最大速度优化):
27: for (i = 0;
i < 16;
i ++)
00401205 mov ecx,dowrd ptr [j] 1
00401208 xor eax,eax 0 (可并行)
28: {
29: j = j + i;
0040120a add ecx,eax 1
0040120c inc eax 1
0040120d cmp eax,10h 1
00401210 jl foo(0x0040120a)+0ah 0 (可并行)
00401212 mov dword ptr [j],ecx 0/1 (取决于上一条指令的
分支预测情况)
30: };
-----------------
16 4.2 (假定分支预测准确度80%)
VC++ 5的最小代码优化生成也有11个字节:
27: for (i = 0;
i < 16;
i ++)
00401205 xor eax,eax 1
28: {
29: j = j + i;
00401207 add dword ptr [j],eax 1
0040120a inc eax 1
0040120b cmp eax,10h 1
0040121e jl foo(0x00401207)+7 0 (可并行)
30: };
-----------------
11 4
注:
(1) Delphi/C++ Builder的结果是用Turbo debugger直接反汇编的,VC++ 5的结果是从集成环境的源级
调试得到的。
(2) 时钟周期数以pentium处理器为例,实际上,对于没有并行执行单元的cpu(比如386/486和nx586等)
VC++ 5生成的代码速度还要更慢一些。
(3) 分支预测准确度源自intel的"pentium optimization reference"。不过与具体程序密切相关,一
般来说程序中的条件转移指令越密集则分支预测准确度越低。
可以看出,Delphi/C++ Builder的这段程序有1~1.2个时钟周期的优势。这主要是因为Delphi/C++
Builder的编译器比较智能,根本不编译无用的废语句。 (有趣的是,对于这段程序而言,VC++ 5的最大速度
优化反而不如最小代码优化生成的代码运行速度快。) 不要以为1~1.2个时钟周期不算什么,整个程序的快与
慢就是这样一个个时钟周期积累出来的。而且就这几条指令而言相当于快25%~28.6%,是非常可观的数字。我
没有用VC++ 6测试(我从VC++ 5以后不再使用vc了,因为C++ Builder 5能完全兼容vc --- 这种兼容性从C++
Builder 3开始就有了,不过一开始并不完善),不知道是否有改进。有人有兴趣的话请测试一下。
有兴趣的话,可以去jake's code efficiency challenge(http://www.xnet.com/~johnjac)看一看。那有
代码运行性能挑战。目前Delphi/C++ Builder在6项测试中保持5项 领先。
(ps:Delphi 2就曾在1996年的PC week的性能测试中击败过VC++ 4.2)
2. 语言特性
首先我不想评价所谓“Pascal是玩具语言”这种无知的说法。某些连basic都用不好的人是不可能正确
评价其它语言的优劣的。至于“只配高中生使用”就更加可笑了:peter norton没上过大学,id software的
johncarmack没上过大学,你不服气?!请不要嘲笑高中生,大多数程序员可能永远也达不到这些“高中生”
的水平。创造性工作需要的是天才,你认为天才相当于什么学位?:-)
(1) 预处理,宏以及.h文件
object Pascal不支持预处理,其实是不需要。无法直接编译源代码的编译器才需要预处理器的支持(用于
翻译/规范源程序(也包括.h之类)以利于编译)。预处理器的出现是因为当初ken thompson和dennis ritchie要
在只有256k内存的pdp-11上实现c编译器难度很大,才采取的折衷办法。现代大多数c/C++产品已经把预处理器
包含在编译器中了。
(ps:c中采用尽可能短的关键字/运算符也是由于这个历史原因)
至于macro和.h则应该说是垃圾特性,只是由于兼容性的考虑才保留下来的。ansi/iso c/C++规范中明确
建议:“不要使用macro和.h,应该使用程序中的常量定义和函数替代”。因为macro和.h不是c/C++的语言特
性(这是真的!),没有明确统一的语法定义。还会导致编译速度降低,另外由于macro在每个使用的地方被展
开(不是调用),大量使用macro会使生成的代码臃肿。
(2) 集合,子界类型
C++不支持这些object Pascal的原生类型(编译器能直接识别的)。但可以用类来模拟,毕竟C++的对象结构
是最复杂灵活的(ada除外)。不过性能有损失。
(3) 枚举类型
object Pascal不支持为每个枚举元素指定值。例如:
c/C++中可以定义:enum aweek {sun = 1, mon, tue ...};
object Pascal中只能定义:aweek = (sun, mon, tue ...);
(4) 数组
c/C++不支持object Pascal中指定下标的数组,下标只能从0开始。
(5) 结构
object Pascal不支持struct(在Pascal中称为record)中的位域(bitfield)。bit field 可以bit为单位(不
需要整字节)来存储结构成员,可以减小结构的存储空间。不过存取效率会有所降低。
(6) 字符串
字符串处理是object Pascal的强项之一。能够支持灵活高效的串处理。严格意义上讲,c/C++不能算支
持原生的字符串类型。char *和char[]更近似于用户自定义类型,因为编译器不支持字符串的内存自动分配
和回收,需要用户自己调用malloc()和free()。object Pascal也支持c/C++风格的字符串(称为PChar)。 不
过string类型更加强大。从实现上来看,object Pascal的string类型使用前缀表示串长度(1字节前缀的
shortstring和4字节前缀的long string,两种string自动兼容,并且long string也兼容PChar),c/C++中
的char *和char[]使用后缀chr(0)表示串结束。不同的表示方法对串处理性能有很大的影响:对于大量,复
杂的字符串操作,用object Pascal可以写出比c/C++快几十倍的程序(许多用Pascal写的Pascal编译器,比
如free Pascal,Pascal pro等,虽然技术水平一般,但编译速度也很快,在某种程度上也得益于 Pascal的
字符串处理效率)。比如取串长度函数length/strlen(),object Pascal的实现只需要一条mov指令,而c/C++
的实现则需要进行重复串扫描直到找到结尾0为止。object Pascal的string类型在支持unicode字符方面也有
优势。要知道c/C++的字符串给现代操作系统支持unicode字符带来了很大的困扰,比如串'abc'的unicode表
示为:41 00 42 00 43 00,这使c/C++程序根本无法处理这种字符串。虽然修改编译器可以很容易解决这个
问题,但光修改编译器是不够的,还要修改操作系统,否则以前的大量c/C++程序根本无法在新操作系统上
使用(这简直是灾难 --- 你连notepad都没了,怎么办?:-)。Windows采用凡是涉及字符串处理的api都提供
两套的解决方案。比如textout,有用于处理ascii字符的textouta和用于处理unicode字符的textoutw。而
unix/linux采用另一种办法:凡是涉及字符串处理的api都使用utf8压缩编码(一种类似于rtf的编码方法:
凡是ascii字符都直接存储,多字节字符则用/进行转义),虽然(勉强)保证了兼容性却也代价不小。
(ps:C++中的string/ansistring是用类模拟的,所以性能...)
(7) 多重继承
毫无疑问,object Pascal不支持多重继承;并且也看不出Borland有增加这一特性的意向(其实增加是轻
而易举的)。object Pascal通过接口(interface)实现多重继承.interface不仅可以引入用object Pascal实
现的对象,也可以引入其他语言实现的com/dcom/corba对象。你真的需要多重继承吗?我想大多数程序员和
我一样都从来没有使用过多重继承(连vcl这么强大灵活的体系结构都根本没有用到多重继承)。
(ps:java和Delphi一样不支持多重继承,也使用interface来实现多重继承。其实这并不奇怪:jdk 1.2和
java 2主要是由Borland开发的,sun只挂名而已。不信你看java类库是不是和vcl很象。:-)
(8) 对象模板
object Pascal不支持对象模板。因为对象模板不过是宏的语言实现而已(宏本身不是c/C++的语言特性)。
(9) 重载
object Pascal支持函数/过程的重载,不支持运算符重载。C++全部支持。
(ps:我个人倾向于object Pascal应该增加对运算符重载的支持)
(10) 位及逻辑操作
object Pascal和c/C++在这方面没什么差别。c/C++的&amp;,|,~,^,>>,<<,&amp;&amp;,||,!等效于object
Pascal的and,or,not,xor,shr,shl(and,or,not,xor既用于位操作也用于逻辑操作)。不过c/C++不支持
逻辑xor(a xor b = a and notb or not a and b,还是可以实现的)。
(11) 风格
其实这是我更倾向于使用Delphi的一个重要原因(由于工作的原因,我也经常使用C++和汇编)。就象有些
文章所说的:“object Pascal和C++是同一重量级的语言”,确实难分轩轾,差别反而主要是在风格上。C++
强调灵活,而object Pascal更注重整洁和优美。《程序设计语言:设计与实现》一书的作者也称赞Pascal是
“一种极优美的语言”。有人因此认为Pascal“笨拙”。其实应该是“大道至简”。我认为即使用C++写程序
也还是工工整整的好,不要卖弄技巧。只有水平不高不低的程序员才喜欢卖弄技巧(水平太低的卖弄不了,太
高的又不愿卖弄了)。就象有人评李昌镐的棋“平淡”,但马晓春再怎么“鬼才”也只能甘拜下风。
上面说的其实都是C++ vs object Pascal。不过也适用于VC++ vs Delphi。
(ps:VC++其实并未实现全部ansi/iso C++ 95规范(目前的最新标准)的特性(所以有人戏称之为c+)。而
C++ Builder则完全兼容ansi/iso C++95规范,并支持at&amp;t(c的诞生地)和unix v的全部C++扩展特性。有人称
“m$坚持工业标准,Borland随意修改”,这是不对的。Delphi也全兼容ansi/iso Pascal 1983/92规范,以
及apple object Pascal (用过codewarriorprofessional的应该知道apple的object Pascal)。)
3. 功能及其他
(1) 易用性
毫无疑问Delphi有巨大优势,这不用多说了吧。
(ps:Delphi的真正伟大之处在于并不因为易用而降低技术水准。你需要复杂性就有复杂性,你需要灵
活性就有灵活性;不用可视化也一样写程序(可视化只是object Pascal 对象结构的另一面),不用vcl也一
样写程序)
(2) 适用范围
VC++几乎能做任何硬件允许的工作。Delphi也能。(“不!!!”,我知道你会这样说,你会举出vxd。:-)
Delphi不能写vxd(其实如果你用Delphi生成obj,再用m$的link连接,是可以的)是有原因的(你见过非m$的工
具能生成vxd的吗?watcom?symantec?gnu?...),但不是技术上的原因。vxd的le(linear executable)文
件格式最早出现在Windows 3.0中,格式很简单(比ne和pe格式都要简单),基本上是内存映象文件。但m$不知
道出于什么动机就是不允许其他公司的软件生成它的这种(专利)格式。Delphi是可以写Windows nt的sys和新
的wdm(Windows driver model)驱动程序的,这些使用普通的dll格式。
(ps:从法律角度讲,你自己写一个程序,未经m$允许生成ms word文件也是不行的)
(ps:玩过“奇迹时代”(age of wonders,http://www.epicgames.com)吗?是用Delphi 3写的。画面和
速度都优于m$的“帝国时代”。不过我不喜欢玩策略类游戏,我喜欢的是duke3d和QUAKE系列,还有tomb
raider系列。:-)
(3) 集成开发环境
Delphi的ide更简洁/好用一些。
(4) 数据库支持
在这方面除了Delphi的兄弟C++ Builder/jBuilder恐怕只有power Builder能(勉强)与Delphi相比。不过
pb的性能和使用范围就差得太远了(要不怎么叫poor Builder呢 ?:-)
(ps:我的印象是现在大多数基于网络/大型数据库的c/s和多层结构的应用都是用Delphi/jBuilder开发
的)
(5) 网络功能
Delphi也有一定的优势。尤其是在Internet开发方面。
(6) 组件支持
Delphi除了基于object Pascal的vcl/clx外,也支持基于com/dcom的组件(比如activex),另加corba支
持。VC++只支持支持基于com/dcom的组件。
(7) 应用框架/设计思想
vcl比mfc至少领先一代,这也毋须多言。mfc充其量不过是对owl的(一种不太成功的)模仿而已,从设计
思想上看甚至还不如owl。作为一种语言的基本类库(不论可视与否),应该从大处着眼,力求简洁有效,保
持一定的弹性和抽象度(抽象意味着从功能出发,比如vcl中的tcanvas就是对Windows中dc(device context)
的一种极好的抽象,比起mfc中的设计高明了何止一点半点)。而不是面面俱到,一一照搬apis(不幸的是,
m$的程序员多年以来一直在不辞劳苦地做这项工作)。看看mfc的某些类,简直惨不忍睹:通常除了省了hwnd
和dc之类的参数(已经作为类的私有数据保存了),其方法(method)简直就是Windows api的翻版。这样做有
什么意义呢?Windows api不就摆在那里吗?比如说,使用mfc中的线程类还不如直接调用createthread/
exitthread/resumethread/setthreadpriority之类的api更方便快速呢。(ps:用过Delphix(http://www.
yks.ne.jp/~hori/)吗?Directx这么繁杂的结构可以用object Pascal封装得如此之好再次证明了vcl体系结
构的强大)
(8) 调试
两者相差无几。VC++的源级调试更用户友好一些,而Delphi/C++ Builder对多线程程序的调试支持更好。
(ps:要比单独的调试工具,Borland的Turbo debugger可就要比m$的codeview强多了)
(9) 运行环境/系统需求
应该说差不多。VC++的启动速度确实要快于Delphi(这主要是相对于Delphi 4+而言,Delphi 3的启动还
是很快的)。这很大程度上是由于一个事实:VC++主要是一个基于文本编辑器的传统开发环境。code war-
riorprofessional不是启动更快吗?至于“一个数据库程序要带上3~5mb的bde运行文件”的说法,这可能是
由于在安装制作工具(installsheild,wise之类)中使用了“全部bde安装”(默认)而不是“部分bde安装”。
如果你只使用access,dbase,foxpro,paradox之类的桌面数据库,只需要几百k的运行文件就可以了。用
m$的工具开发的数据库程序也要带上一大堆odbc,dao,jet,ado,msde之类的运行文件。在Delphi 5中,
如果使用adoexpress,interbase express访问数据库的话,可以不带bde。(ps:不管怎么说,Borland在
Delphi/C++ Builder的启动速度方面还是要努力改进!)
(10) 产品质量/稳定性
有文章称“VC++的质量好,稳定性高”。真的是这样吗?visual studio的service pack不是都出到4了
吗?什么是service pack?主要不就是bug fix + patch吗?!Borland的工具也并不完美,Delphi 3的vcl
中确实存在“内存漏洞”,会导致用d3开发的程序有时(并不总是)退出后不能释放分配的内存。VC++的问题
也不少:ie是用VC++写的吧,上网时多启动几个,开开关关,最后全关闭,看看你的系统资源剩下多少了?
还经常导致“general protection error”。ultra edit是用VC++写的吧,也有同样的问题。其实说到底,
程序质量好不好,运行稳定不稳定,主要取决于开发者的水平/责任心。比如说tomb raider系列和QUAKE系
列游戏同是用VC++开发的,但画面质量和运行速度显然QUAKE系列更胜一筹。象美国航空航天局(nasa),俄
罗斯宇航局(rsa),美洲银行(bankof america,资产超过5000亿美元的大银行),其他诸如american air-
lines,at&amp;t,bmw,compaq,bbc television,british telecom等大型机构/公司都在用Delphi开发复杂的,
企业级(可笑的是,有人居然称“用vc开发企业级的桌面应用”,殊不知企业级应用和桌面应用是相对而言
的)的应用系统(在http://community.Borland.com(Borland社团站点)上有关于用Delphi和C++ Builder开发
的产品介绍),如果有人还要说“...稳定和可靠是硬道理,只好忍痛割爱了”,那他恐怕只好自制开发工具。
(ps:关于Delphi与某些显卡驱动冲突的问题,是由于某些显卡(如s3 virge gx)的老版本驱动程序不能
正确处理Windows公用控制中的imagelist的绘制方法造成的,在这种情况下所有在imagelist中使用多个图
象的程序都会有问题)(ps:至于“一看到很多优秀的共享软件冒出具有Delphi特色的错误异常就感到悲哀”,
建议此人先搞清楚你看到的“错误异常”消息是这些软件本身出错呢,还是运行时的异常处理消息(比如
“没有找到指定文件”或“索引超出范围”之类)再说。Delphi中有完善的异常处理,所以很多程序员不再
写错误处理,而放手让编译器去处理。我认为这不是一个好习惯,至少弹出的消息对话框可能与你的程序所
用的语言/风格不一致。让人家误会了不是?:-)
(11) 帮助/文档
VC++的帮助和文档确实要比Delphi/C++ Builder的丰富一些。不过这不应当包括msdn,因为msdn是一套
独立的产品,并不是专门给VC++准备的,况且其中包括了相当多的Windows技术资料。作为一名程序员,不
管用什么开发工具,可以(也应当)有一套msdn。Windows数据结构/apis是用c风格描述的这一点可能对Delphi
程序员来说略有不便,不过Delphi中已经包括了大多数转换;另外,如果一个程序员连转换.h文件这么简单
的工作都做不了的话,他(她)可能也做不了什么象样的开发。Internet上的一个志愿者组织
(www.Delphi-jedi.org/)在这方面也做了大量工作,在他们的站点上有几乎全部有用的c/C++库.h的object
Pascal翻译。(ps:Delphi/C++ Builder程序员为什么不可以买一套msdn呢?毕竟我们还在用m$的操作系统,
总不至于连Windows技术资料都不要了吧)
(ps:从msdn看m$msdn中的技术资料主要是以compiled html(.chm)格式存放的,但m$把全部.chm放在disc
#1,而把索引文件(.chi)单独放在disc #2。这样一来就无法从光盘上直接看这些文件。要么安装,要么手工
把相应的.chm和.chi拷贝到一起。我看不有什么技术上的理由(谁知道请告诉我)不把一半.chm和.chi放在一张
盘,而另一半放在第二张盘。这至少反映出m$内部某些人的阴暗心理)
(12) 国际化支持
VC++中已经包括了十多种语言的rtl资源,Delphi中需要自己做资源本地化。虽然franch,german之类
的版本中也包括english资源。:-<
(13) 应用领域
VC++在Windows设备驱动开发(毕竟是m$ Windows)和某些桌面应用(比如游戏)开发中用得较多。Delphi
更多应用在数据库/多层结构,多媒体和Internet开发等方面。
(ps:VC++在游戏开发中用得较多我看主要是价格因素,游戏使用专用界面,通常不涉及数据库和inter-
net(即使Internet play也不过是简单的tcp连接,并且Directp lay中已包括此项功能),昂贵的Delphi和C++
Builder显示不出优势。只需要$79的VC++标准版,Directx sdk(可免费下栽),opengl文档(也是免费的),至
多再加一套msdn即可.比如QUAKE,全是手写的c代码,连C++特性都很少用到。Borland也认识到了这一问题,
所以发布了免费的C++编译器)
(14) 价格
m$的开发工具确实便宜(相对而言),不过是否物有所值,只能看你干什么用了。
(ps:别指望你买的toyota能有ferrari的性能。:-)
(15) 前景
有人认为m$财大气粗,Borland难以对抗。我看不能这么简单下结论。m$有它自己的问题:法律诉讼,
人才流失,资源分散,四面出击(m$现在连鼠标,键盘,游戏杆, 玩具 都生产)。而Borland/inprise集中精
力在开发工具,中件产品(如midas,visibroker和application server)和企业应用/管理环境(如apPCenter
和securityservice)上,应该还是大有可为的。况且Borland和m$之间并非纯粹的竞争关系,Borland开发工
具给m$Windows带来的收益要远大于和m$开发工具竞争带来的损失。毕竟对m$来说,开发工具只占其收入的很
少一部分,即使不搞开发工具也只不过是个面子问题,于m$无损。m$在它面临垄断/不正当竞争指控的时候,
因为长期侵犯知识产权而赔偿给Borland一亿美元(称为“授权费”),这多少也可以看作是一种和解的举动吧。
另一种经常听到的论调是“m$的产品市场份额大,Borland能撑得住吗?”,这其实也有很多问题。鉴于m$出
于竞争的目的,经常虚报数字,影响市场(m$的律师在法庭上承认m$曾夸大过其ie和office的市场占有率);
m$自己宣传的其开发工具的市场占有率也很值得怀疑。m$还有重复计算的问题,比如卖掉一套visual
studio,在计算vb,vc,vj等的销售量时都计算在内。其实很多人/公司买visual studio只用其中的一两种。
其实Borland产品的销售量还是很大的,尤其是在欧洲,北美和澳大利亚,在亚洲...(是因为d版太多了)。另
外,每个公司都有自己的产品/市场定位,你能因为toyota,ford,volkswagen卖的多就说ferrari,maclaren,
benz不行了吗?
4. 结论
Delphi(其实应该说Borland产品)在技术上有优势,VC++(其实应该说m$产品)也占有相当的市场份额。
(ps:说了半天等于没说。:-)(ps:m$的c#(读c sharp)能取得突破吗?我看不会。因为m$产品通常达不到所宣
传的性能;而且一种不符合标准(c#不兼容任何一种语言标准,虽然据称更接近c)的产品也很难取得成功。
j++就是一例)
5. 附:我所知道的Borland和m$的故事
(1) Bill Gates是如何拿到IBM订单的1979年,tim paterson写了最初的DOS并以$1000的价格卖给了digi-
talreserch。当时apple的apple i和apple ii销势很好,所以IBM在1980年也决定搞PC。Billgates知道后,认
为是个机会,就以$5000从digital reserch买下了DOS,并逼着手下人在一间没有空调的小黑屋里日夜不停加
以修改。m$当时是个小公司,只有十几个人,名叫micro-soft。所以尽管DOS的开价($20000加每拷贝$30授权
费)比cp/m-86(指用于intel8086/8088的版本,不是指年代)的开价($100000加每拷贝$70授权费)便宜不少,
IBM的人还是倾向于使用cp/m-86。据“比尔.盖茨的秘密”(Bill Gates' secrets)一书的作者说,Bill急得团
团转,只好求助于他妈妈。Bill的母亲时任华盛顿大学校长,与当时的IBM董事长john opal是大学同学(据
说...)。Bill这一招果然有效,没多久就拿到了IBM的订单,从此DOS成了IBM PC上的首选操作系统。
(2) Borland的名字和历史
Borland听起来不象一个公司的名字,倒象一个国家的名字。1982年,philippe kahn带着3000美元从巴黎
到了美国,除去机票钱已所剩无几,只好租人家的车库小阁间住。kahn在硅谷干了一段时间,并以mit(market
in time,恰好与麻省理工学院的缩写相同)为名开了一家公司。1983年,kahn和anders hejlsberg(丹麦人,
Turbo Pascal编译器的主要作者)合作开发了Turbo Pascal,并赊帐在《新闻周刊》上登了一份彩页广告。Turbo
Pascal在PC开发工具中是一个里程碑式的产品,它第一次把编译时间由分缩短到秒,并且其$49的价格在当时也
是创纪录的(当时的一份编译器动辄数千美元,便宜的也要几百美元,还不好用)。Turbo Pascal在不到两年的
时间里销售了超过130万套(考虑到当时的PC数量,这是一个非常惊人的数字),Borland从此创立。kahn在解释
为什么以Borland命名时说“我们要起一个与众不同的名字,其他公司都是叫这个micro,那个soft什么的”。
不过据认为这个名称与德国或北欧的某些地名有关(kahn的父亲是德国人,而且Borland的很多开发人员是北欧
人)。
(3) anders hejlsberg为什么去了m$1996年,anders hejlsberg离开Borland去了m$。在此之前,m$曾多次
企图挖走anders,但都没有成功。据信anders去m$(主要)不是钱的问题,虽然m$的开价也相当有吸引力:130万
美元年薪外加股票期权和分红,总计超过300万美元。主要原因是anders和Delphi开发组的其他成员在修改编译
器的问题上发生了争执;
还有,据Borland内部人讲,anders认为自己不再是“不可缺少的人”。 虽然anders hejlsberg去了m$,
我仍然尊敬他是一个天才,Turbo Pascal的主要作者,Delphi的奠基者。
(ps:anders从1999年初就不在j++组了,而去做com+的开发。m$的人讲的)
(4) m$产品的秘密
<1> msc最初是从at&amp;t买的授权;
<2> vb的1,2,3版实际上不是m$开发的,而是cooper software开发的。john cooper 在m$时未受重用,离
开后m$倒要花钱请他开发产品,真有点黑色幽默的味道;
<3> ms sql server最初是买sybase的产品,6.5以前的ms sql server和sybase根本就是一回事;
<4> Windows 95的主要技术负责人(名字我不记得了,不过在dejanews(www.deja.com)上可能还能找到有关
文章)是1990年从Borland跳到m$的,不过他在1998年已经离开m$,开了自己的公司;
<5> Windows nt的开发组整个是从dec挖来的,是以前做dec vms的那些人。所以 在win32平台上有很多vms的
痕迹,比如说coff目标文件格式。
(5) .net到底是什么,Bill Gates也不知道,请看对Bill Gates的采访:
记者:现在,市场仍然对.net感到困惑。... .net的实质到底是什么?
盖茨:.net是我们对下一代Internet的设想。...
举个简单的例子,.net不仅允许你查看自己喜爱的棒球队的时间安排,并且还能够对这个时间安排进一步加
以利用。
(???究竟怎样“进一步加以利用”?为什么不说?难道现在的软件不能“进一步加以利用”?)
6. 注:
本文系完全由作者本人所写,文中提到的所有技术数据均由本人验证或标明出处,转载时请保持完整


请在这里发表您对本文的看法

||→相关资源 方圆专题站


感谢网友 方 圆 提供本文档

电脑之家 - 软件下载


关于我们 | 联系方式 | 广告刊例 | 业务合作 | 合作伙伴 | 投稿指南 | 版权声明 | 帮助信息 | 网站地图

Copyright 1996 - 2002 PCHOME.net, All Rights Reserved
 
[转载]
--------------------------------------------------------------------------------
转贴有关BORLAND的一些回忆
蓝四爷
早期的 programmer 对 BORLAND都有一些甜密而又伤心的回忆。
从先在的角度看,Turbo Pascal是BORLAND的最亮点。

Turbo C/C++ 2.0象福特的“野马”一样popular,可惜bug很多,
它是第一个向用户公开生成的 ASSMEBLE 源码的编译器。在美国
上学时,遇到一个讨厌ASSEMBLE 编程的本科生,作业要求写一
个循环十遍的加法,他就把 “ADD A, B”写了十遍。教授一气
之下,把作业变成矩阵相乘。我教他先用C写,然后生成ASSMEBLE
蒙混过关。

Philippe Kahn是个多材多艺的人,长时间在巴黎当中学数学教师,
会吹黑管。遇到出生在丹麦的Dannis后,共同开发出Turbo Pascal。
一个朋友劝他说,你这样的人应该去硅谷,于是 Borland 诞生了。

令人惊讶的短视和人格上的缺陷毁了Philippe Kahn,他是被董事会
踢出BORLAND的。


==============================================================================
我的回忆和有趣的故事

       
        李维(台湾)


声明以下的这篇文章内容是我个人的回忆以及看法,没有任何特别的偏见,许多的事情是根
据我的记忆以
及从许多人的诉说中得知的,也许内容不是百分之百的正确,不过我想这些内容有一定的可
信度到是可以保证
的。当然有一些事情确定的发生时间和顺序不一定都和我的记忆一致,不过我想大部份应该
是相去不远的。当
然各位如果知道确定的事件而我的记忆有误,那么我将非常欢迎您纠正我,我希望这些故事
的经历能够一直陪
我走下去,谢谢。

一直想写一篇我个人在过去10多年来工作中经历的一些事情,以及看着一些我认为是伟大的
工程师在这些
日子中对于资讯界的贡献。如果你和我的年龄差不多,那么你可能会对于这些内容很有兴趣,
因为它们说明了
当时许多软体的兴起和没落的过程以及原因。虽然这些事情已经距离我们很遥远了,但是我
相信许多人仍然对
于背后的故事有兴趣。如果你没有经历过那段美好的回忆,那么就把这些内容当成是一个有
趣的故事来看吧。
但是我想更重要的是让我们一起认识一些伟大的人物,我对于其中的许多人都非常的佩服,
也非常的羡慕。

我常常在想,如果我也有他们的环境,我是不是也能够和他们一样这么有成就呢?这些人对
于以往都有重
要的贡献,在未来也将仍然有重要的影响,因为他们都有一身不凡的技术。对于许多重要的
人我都尽量的收集
了他们的照片,让各位也能够看看这些优秀的工程师和杰出的人物。当然,如果各位也能够
从这些内容中学习
到失败的原因以及成功的经验,那么这篇文章就更有价值了。

和Borland 的缘由

记得我在大学时第一个在PC上使用的软体便是SideKick,至今我仍然无法忘记这个让我津津
乐道的软体,
而Borland在当时也就是以SideKick成为全球知名的软体公司。不过Borland 第一个奠立创
业基业的软体却是
我大二使用来交作业的Turbo Pascal. 而Turbo Pascal也是第一个我听到关于Borland 的有
趣的故事。

当年Philippe Kahn (Borland 的创使人)和Anders Hejlsberg到美国创业时,便由Ander
s以组合语言撰
写了Turbo Pascal的编译器,而Philippe则包办了Turbo Pascal其他的部份。在这两位人兄
开发完Turbo
Pascal之后,穷得快连登广告的钱都没有了。但是Philippe为了在Byte杂志(还记得这个着
名的杂志吗?)刊
登Turbo Pascal的广告,因此和Anders商量了一个方法,那就是一天他们约了Byte杂志的人
到当时Borland 的
办公室讨论刊登广告的事情。

当Byte的人到了Borland 之后,Philippe,Anders和公司的助理小姐故意忙着接电话,接受
Turbo Pascal
的订单,并且告诉Byte杂志的人等一下。过了一阵子之后Philippe才进入房间向Byte的人道
歉,说他们的 
Turbo Pascal受到市场的热烈欢迎,订单源源不断的到来,因此可能不需要在Byte杂志刊登
广告了,接着
Philippe向Byte的人展示Turbo Pascal这个产品。由于在当时的机器中Turbo Pascal能够在
少少的RAM 中常驻
执行,又提供闪电般的编译速度,立刻让Byte杂志的人震惊在当场,凭着专业知识和丰富的
经验,Byte的人也
立刻知道这将是一个革命性的软体,因此马上希望Philip能够在Byte杂志刊登Turbo Pasca
l的广告,并且愿意
以半价刊登。当然,Philip也立刻的答应了,于是一个革命性的软体Turbo Pascal终于在B
yte杂志刊登出来了,
售价49.99 美元的Turbo Pascal立刻为Borland带来了大量的财富,Turbo Pascal 也立刻的
成为PC上除了基本的
Basic 之外最畅销的开发工具,也正式揭开了Borland 影响PC开发工具10几年的序幕。

在Turbo Pascal之后, Borland 接着推出了SideKick这套软体,SideKick 可以说是随后着
名的记忆体常驻
软体(TSR )的始祖,也是让Borland 跨出开发工具界,让几乎所有PC使用者认识Borlan
d的关键软体。当然
SideKick也很快的成为了全球的畅销软体,继续的把Borland 往顶尖的软体公司上推。

而Turbo Pascal也成了我大二,大三撰写作业的最爱,几乎所有的作业都是使用Turbo Pas
cal 完成的,
当然其时Horowise的Data Structure这门课也是使用Turbo Pascal过关的,因此从那个时候
开始我便非常喜欢
Borland 这家公司,慢慢的也开始对Borland 有了特别的感情。

大二时Microsoft 也推出了Microsoft Pascal,但是它和Turbo Pascal的确是有一段差距,
我使用了一次
之后便把它丢到垃圾桶。稍后 Borland 也推出了 TurboBasic ,我记得这个编译器非常的
棒,编译速度就和
Turbo Pascal一样,是一个非常有前途的产品。但是我不知道为什么它只有1.0 ,之后便和
Microsoft Pascal
一样消失了。我听说Microsoft 和 Borland 互相交换条件,Microsoft 不进入Pascal 的市
场,而Borland则退
出Basic 的市场。至于是不是真的我就不得而知了。

在大二初次的接触到C 语言,第一本阅读的书便是王兴隆先生写的C 语言,也从此开始和C
语言结下了渊
源。平生第一个使用的C 编译器便是Lattice C ,不知道还有没有人记得。我还记得那个时
候使用2 个5又1/4
磁片抽换以便编译 C 程式的情景。稍后 Borland 终于推出了风行天下的 Turbo C 编译器,
当然,从此之后
Turbo C 便成了不离身的工具,而Borland 也藉由Turbo C 这第三项畅销产品迈向了世界前
10名的项尖软体公
司。

当完2 年的兵之后,我在中研院首次使用了C++ 语言,第一个使用的C++ 编译器则是 Zort
ech C/C++,这
家公司稍后被Symantec收购成为Symantec C/C++的核心,这个故事稍后再说。后来 Borlan
d 也推出了 Turbo
C/C++ 1.0 这第一个C/C++编译器,但是在我和Zortech C/C++ 比较之后,还是觉得 Zorte
ch C/C++ 比较好,
因此就继续使用Zortech C/C++。一直到Borland 的Turbo C/C++ 2.0 编译器推出之后,才
逐渐成为 C/C++ 语
言的王者,而我也像以往一样把Zortech C/C++ 换成了Turbo C/C++。

在1991年到Georgia Institute Of Technology 念硕士时,终于使用自己的零用钱美金49.
99 购买了生平
第一套的正版软体Turbo C/C++ 4.5 ,随后又购买了Borland Pascal. 在毕业前的一个Qua
rter ,Microsoft
推出了Microsoft C/C++ 6.0 以及MFC 1.0 ,由于是第一个C/C++ 的Framework ,因此也花
了一些钱购买了一
套以便了解MFC。但是在收到之后却很失望,因为 Microsoft C/C++ 6.0 仍然没有图形整合
发展环境,还是在
do
S 下的整合发展环境,而且MFC 1.0 以我的眼光来看又不好用,而且Microsoft C/C++ 6 .
0 的C/C++ 最佳化
编译器在其时是一个笑话,不但产生的程式码效率不好,甚至会产生错误的程式码,许多杂
志也称Microsoft
C/C++ 6.0 是一个平庸的(Mediocre)产品。因此就把它丢在一边。在Microsoft C/C++ 6 .
0 不久之后,Bor-
land 终于推了Borland C/C++ 3.0.而这套软体也开启了Borland 雄霸C/C++ 编译器常达5 ,
6 年之久的序幕。

Borland C/C++ 3.0 推出之后由于拥有第一个在Window下的稳定的图形整合发展环境,而且
它产生的最佳
化程式码也是 Microsoft C/C++ 6.0 望尘莫及的,因此很快的几乎所有的 C/C++ 程式师转
而使用 Borland
C/C++ 3.0.因此在那个时候有一个现象,那就是几乎所有的公用程式或是Shareware 都是使
用Borland C/C++开
发的,许多硬体厂商的驱动程式也是使用Borland C/C++ 3.0 来撰写的。

1992年我取得Georgia Institute Of Technology 的硕士学位之后最想进入的公司便是Bor
land 和Micro-
soft,不过最后我还是决定回台湾工作。在此时Borland也进入了最巅峰的时期,因为Borl
and 推出了Borland
C/C++ 3.1。

Borland 在 Borland C/C++ 3.0 获得空前的胜利之后,并没有松懈下来,因为 Borland 知
道Borland
C/C++ 3.0还缺了一个最重要的胜利因子,那就是如同Microsoft 的 MFC 一样的 C/C++ 的
Framework ,因为
Borland 也看出了Framework 将会是未来 C/C++ 产品中最重要的一环科技。不过 Borland
此时面临了一个重
要的十字路口,那就是到底要自己开发一个和 MFC 抗衡的 Framework,还是要如何做。 因
为如果要自己开发
Framework,那么势必要花上一些时间,但是 Borland想趁 Borland C/C++ 3.0 如虹的气势
再下一城,以便彻
底击溃Microsoft C/C++。 因此最后 Borland 决定向一家叫 White Water 的公司购买一套
由这家公司开发的
一个 Framework,这套 Framework 便是后来鼎鼎大名的 OWL 的源流。而 Borland 也因为
向 White Water 购
买了这套Framework,因而也引进了一个日后非常重要的人物,那就是后来负责开发Delphi
的一员大将 - Zack
Urlocker。


在Borland 购买下White Water 的C++ Framework 之后,便更命为OWL(Object Window Li
brary),并
且很快的推出了以OWL 1.0 为核心的Borland C/C++ 3.1。由于OWL比当时的MFC 1.0 封装的
更为完整和好用,
再加入Resource Workshop 视觉化能力,以及Borland C/C++ 3.1 自己最强劲的编译器和整
合发展环境,因
此立刻的风靡了全世界,其受欢迎的程度更是远远的超过了它的前一版本Borland C/C++ 3 .
0。

由于Borland C/C++ 3.1 的畅销,立刻让Borland 在C/C++ 市场一举击溃了 Microsoft C/
C++ ,市场占
有率超过了50% ,是全球第一的C/C++ 产品,也把Borland 推上了最高峰,成为全世界第三
大的软体公司。

很快的,我所工作的开发小组也立刻的以 Borland C/C++ 3.1 来开发系统,Borland C/C+
+ 3.1 也是我
使用过Borland 最稳定的C/C++ 版本之一。也由于那个时候一天到晚都使用C/C++ 工作,因
此就有了一些小心
得。稍后我整理了一些东西便投稿到刚出刊不久的RUN !PC,也许是运气不错,RUN !PC
很快的也登出了我
的文章。就是这篇文章登出之后,台湾的Borland 注意到了我,开始和我连络,并且从此展
开了和Borland 的
互动。而Borland C/C++ 3.1 也是第一套Borland 免费送我的软体,当然代价就是希望我多
写一些Borland产
品的文章。

接着Borland 又计划推出 Windows 版的 Borland Pascal,不过在 Borland 开发Borland
Pascal For Win-
do
ws时,当时(现在也还是)最具盛名的Charles Petzold (我的第一本Windows 程式设计
的书就是这位仁兄
写的,相信许多人也是看他的书一路学来的)就说除了 C/C++ 之外,Borland不可能做出能
够在 Windows下执
行的Borland Pascal,不过很明显的,即使是 Windows API 的大师 Charles 也错了。Bor
land 不但做出来了,
而且Borland Pascal For Windows 还非常的畅销,当然Borland Pascal For Windows 也是
后来Delphi的根基。

当时的Borland 可说是不可一世,不但产品大卖,而且日进斗金。Borland在 Scotts Vall
ey 豪华的总部
也是在那个时候由 Philippe Kahn 大手笔的花了一亿多美金搭建的 (想想10年前的60多亿
台币可以盖什么样
的房子?)。不过也许是 Borland 太成功了,因此也开始让 Philippe Kahn 渐渐的养成了
好大喜功,目中无
人的态度,也种下了Borland 开始走向衰退的因子。

来自:yankk ,时间:01-6-18 2 :47:00, ID :570808不过在 Borland 最强盛的时期,
当然也就是
Microsoft 最想痛宰Borland 的时候,在这个时候发生了一个着名的事件和一个着名的虚拟
人物。话说由于当
时Microsoft 的开发工具一直打不过Borland 的产品,因此在Microsoft 的开发工具刊物上
便出现了一个作者
不断的以文章嘲笑Borland ,这个作者的笔名是 Buck Forland。 后来由于这位作者的文章
内容以及他的笔名
引起了当时Borland的不满以及大量Borland使用者的强烈抗议,因此稍后这位作者就突然的
消失不见了。因此
有许多人就推测这个作者应该是 Microsoft 的工程师,由于一直无法打败Borland 的产品,
脑羞成怒,因此才
会以这个笔名来发泄。 如果各位看倌到现在还摸不着头为什么这个笔名会引起轩然大波,
那么请你试着把Buck
Foland 这两个英文字的第一个字母一对调就知道为什么了。现在各位是否会心一笑了?

在Borland C/C++ 3.1 大获成功之后,Borland 却开始松懈了下去,并且开始走下坡。当然
这有许多的原
因,我所知其中最重要的原因有数项:

■Philippe Kahn 和当时Borland C/C++ 的产品经理闹翻了。这位 BorlandC/C++ 的产品经
理的名字是Eu-
gene Wang ,他是一位非常聪明的中国人。他一手把Borland C/C++ 带到了世界第一的地位,
并且在Borland
C/C++ 3.1 成功之后有了更伟大的想法,那就是 Eugene Wang想在下一个Borland C/C++ 版
本中完整的以OWL封
装所有的 Windows API ,因为OWL 1。0 虽然比MFC 1。0 来得优秀,但是OWL 的隐忧就是
OWL 尚未完整的封装
所有Windows 的API。此外Eugene还计划以OWL 为核心,开发一个类似今日Borland C/C++
Builder 的以视觉化
元件为开发方式的开发工具。请各位想一想,如果在当时Borland 能够开发出这种 C/C++
开发工具,那么将会
是一个多么可怕的产品,稍后Microsoft 的 Visual C/C++ 1.0 只是能够在整合发展环境中
自动产生 MFC 的程
式码就立刻的轰动了 C/C++ 市场,造成了大量程式师转入 Microsoft 的阵营。即使是目前
的 Borland C/C++
Builder使用的Framework 仍然是以Object Pascal 以核心的元件Framework ,而不是纯粹
的C/C++ 程式码。如
果当时 Eugene Wang能够做出他心中的下一版Borland C/C++,那么我想到现在Borland C/
C++ 可能还是市场中
第一的 C/C++ 开发工具。不过很不幸的是,Eugene Wang 稍后和 Philippe Kahn 发生了争
执,Eugene Wang一
气之下离开了Borland。而 Philippe Kahn 则认为 Borland C/C++ 的地位已不可动摇,因
此也没有想立刻的做
下一版的Borland C/C++。这样一拖竟然浪费将近2 年的时间。

Microsoft Visual C/C++ 1。0在Borland C/C++ 3.1 2 年之后推出,并且立刻获得市场好
评。不但在编译
器方面能够和Borland C/C++ 3.1 相抗衡,在整合发展环境方面更大幅领先了Borland C/C
++ 3.1,还能够自动
产生MFC 的程式码,再也不是昔日的吴下阿蒙。直到此时 Philippe Kahn 才从梦中惊醒而
急于开发下一代的
Borland C/C++ 4.0 ,但是为时已晚,C/C++ 的开发工具市场从此就开始逐渐的被Microso
ft 蚕食了。

Eugene Wang 在离开 Borland 之后,立刻的被 Symantec 所网罗,稍后Eugene Wang也在非
常短的时间
之内为Symantec开发出了着名的Symantec C/C++。 Symantec C/C++ 在当时被所有的技术刊
物评比为拥有最
棒的整合发展环境和最有创意的C/C++ 开发工具,从此可见Eugene Wang 的功力。不过 Sy
mantec C/C++ 稍
后也不敌 Microsoft Visual C/C++,这个故事的原因在稍后四大C/C++ 编译器之争的段落
中再详细的说明。

我最后听说 Eugene Wang 跑去做生意了,并且在前几年写了一本教导科技人员如何面试的
书籍。我,一
直很痛心Borland 失去了这么一位优秀的人材,我常想如果当初 Eugene Wang 没有离开Bo
rland ,那么历史就
可能不是现在的这样了,Sign!!!

■Philippe Kahn 大手笔的花了一亿多美金买下了 Ashton-Tate 公司和dBase。在当时许多
人都批评Phi-
lippe Kahn 做了不值得的事情,因为 Ashton-Tate 不值这么多钱。但是由于当时 Borlan
d 多的是钱,因此
Philippe Kahn也不多意。不过这并不是Borland 走向逐渐走向衰败的主因,而是在 Borla
nd 买下了dBase 之
后,并没有立刻积极的发展dBase For Windows ,反而把dBase 丢在一旁。这个原因便是当
时Borland 的另外
一个和资料库有关的产品Paradox 卖得也很好,因此Philippe Kahn 并不急着打算开发 dB
ase For Windows。
不过Philippe Kahn 忘记了一件事情,那就是当时在市场大量人口的dBase 程式师需要一个
好的 Window 版
dBase ,但是Philippe Kahn 购买了dBase 却不提供Windows 版的解决方案。

因此当稍后Microsoft 以极小的代价买下Fox 这家公司,并且在数年之后推出 FoxPro For
Window,吸引
了大量原先的dBase 程式师以及Paradox 的程式师之后,Philippe Kahn 才警觉事情不对而
充充忙忙的开发
dBase For Windows。但是当dBase For Windows 推出之后,Microsoft 早已推出了两个Fo
xPro For Windows的
版本,而占据了大部份的市场,dBase For Windows 其势已不可为了。

■Microsoft 开始向Borland 挖角。由于Microsoft 在许多的开发工具战役中一直被 Borl
and 打得灰头土
脸。更何况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 )参加国际Confere
nce时,还和他
打了一声招呼。后来Philippe Kahn 离开了Borland,另外创立了StarFish 这家公司,稍后
StarFish也被Moto-
rola并购。虽然Borland由于Philippe Kahn 一些错误的决策而逐渐的从巅峰开始下降,但
是Philippe Kahn也
不愧为一个人物。因为Philippe Kahn 能够和Bill Gates一直周旋数年之久,而同一时期的
许多公司,例如
Lotus 都一一的被 Microsoft所击败,因此 Philippe Kahn 还有一套的。此外 Philippe
Kahn 也是唯一一个
拥有工程师特性的 Borland CEO ,Philippe Kahn 仍然重视技术产品和技术人员。但是Bo
rland 随后的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++数年精彩好戏的序幕。

Carl Quinn 到现在我还记得和敬佩的人物,让我再一次的向他致敬,并且介绍他让大家认
识。

Carl Quinn ---- 我第一个佩服的Borland 工程师
--------------------------------------------------------------------------------
  
火线全开
  Borland除了在开发工具市场和Microsoft热战之外,其时和Microsoft ,Lotus鼎足而立的 Borland 看到 Microsoft和 Lotus 正在试算表工具以及文书处理工具大战之暇,不思好好的集中资源开发新的开发工具和数据库工具(下一节会详说),也不甘寂莫的投入了大量的资源进入这个惨烈的市场。也许是当是Borland 太有钱了,或是Philippe Kahn脑袋有问题,居然决定进入这个Borland陌生的市场,更何况在Borland投入时 Lotus 已现败象,市场已经慢慢的被Microsoft所一步一步的掌握了。
  Borland进入Office市场的第一个产品便是着名的Quattro Pro这个试算表,虽然Quattro Pro是一个不错的产品,而且当时由Borland C/C++编译器所开发的Quattro Pro在执行效率上几乎是最好的,但是Borland没有想到使用试算表的使用者是一般的办公室人员,这些人注重的是方便性和功能性,而不是最重视执行速度, 这和开发人员是不一样的。Borland以开发者的心态来开发试算表工具基本上是走错了方向。因此我记得在那段时间中,杂志评比Microsoft的Excel,Lotus的1-2-3和Borland的Quattro Pro时,在功能方面领先的都是 Excel 和 Lotus,在执行效率方面领先的则是Excel和Quattro Pro。到了试算表热战的未期 1-2-3 甚至比不上 Quattro Pro,因此Lotus败走试算表市场已是不可避免的结果了。
  不过Borland虽然赢了1-2-3,但是和Excel仍然有一大段的距离,Microsoft一统试算表江山之势已不可摇,因此最后Borland在损失了大量的资源之后,Quattro Pro只能卖给Novell。除了Quattro Pro之外,Borland也投入了很多的资源秘密的开发一个代号称为Spring的文书处理程式准备和Microsoft的Word以及WordPerfect竞争,这可能是许多人不知道的。但是这个产品最后仍然无法问市而胎死腹中,在文书处理市场方面Borland不但浪费了时间,更虚掷了大量的资源。Philippe Kahn 在Office产品方面消耗了Borland大量的金钱和时间,却落得铩羽而归,更连累了开发工具市场以及最有可能成功的数据库产品市场。
  杂志另外一个和Borland无关的故事是关于Excel如何兴起的。话说当Lotus 1-2-3最盛的时期,Microsoft 一直觊觎这个市场,但是苦于无法开发一个能够和1-2-3相竞争的产品。有一次Lotus 1-2-3举办了一个Lotus 1-2-3的技术研讨会,由当时Lotus 1-2-3的首席工程师主讲。 在Microsoft知道了这个技术研讨会之后,立刻派出了最好的程式设计师,在现场询问 Lotus 是如何开发 1-2-3 的并且也趁机询问这位首席工程师如何克服1-2-3在许多技术方面的难点,而这些困难处正是 Microsoft 的工程师无法克服的。
  当时在现场中Lotus的这位首席工程师虽然知道这些人是 Microsoft 派来的,而且询问的问题正是 1-2-3 许多关键的技术点。但是这位首席工程师凭藉着多年开发经验,并且认为 Microsoft 不可能在短期之内追上 1-2-3,因此就没有多做保留的回答了许多重要的问题。没有想Microsoft的这些程序设计师也是非常聪明的的人,在一经指点之后,立刻畅然全通,在短短的1,2个版本之后不但马上追上了1-2-3,在许多功能方面更是青出于蓝,1-2-3便逐渐失去优势了。我想这位1-2-3的首席工程师一定很后悔当时回答了关键的技术问题吧。 结论 : 千万不要小看Microsoft,他是非常精于模仿的,也永远不要小看你的对手。

数据库市场的失误
   当Borland全盛的时期,事实上也是发展数据库产品最好的机会。因为在当时 Borland 手握do
S 最畅销的Paradox,又并购了 Ashton-Tate 而拥有世界大部份 dBase 的市场,后来又从 Digital 取得了真正的 RDBMS InterBase,可以说是全世界数据库实力最雄厚的厂商。当时的 Oracle 和Borland比起来,简直是小巫见大巫,而 Sybase 更不知道在那里。如果当时 Borland 能够好好的掌握这个机会,并且极力发展数据库产品的话,那么现在Borland 就算不是世界第一的软件公司,也将是世界第二的软件厂商。
  可惜 Philippe Kahn 并没有看到这个在年代80未到90年代成长最快速的产品。说句笑话的是,如果当时Philippe Kahn的死对头Bill Gates早一点对Philippe Kahn 说出Information At Your Finger-Tip』的话,那么 Borland 就可能是现在的 Oracle 了。
说到数据库市场就不得不对 Microsoft 的眼光佩服,也可以看到Microsoft行销能力的强悍。当Microsoft 以FoxPro For Window强佔了开发者的数据库市场之后,又看到了一般使用者也需要使用简易好用的数据库管理工具。因此发展出了Access。但是当时在这种市场中,Paradox佔有开发者的数据库大部份的江山,而一般使用者的数据库管理工具市场则由Lotus的Approach拔得先机。 Microsoft 为了扳回劣势,我还记得在当时Visual Basic 3的套装软件中Microsoft附了一张优待卷,只要800新台币就可以买一套Access。这简直就是流血大拍卖,目标很明显,就是当时在市场中卖1万多元的Lotus Approach。 果然,Microsoft此招一出,Approach便在市场被Access打得落花流水,很快的便失去了市场,也很快的退出了市场。从此一般使用者的数据库管理工具市场便逐渐由Access所取代。
  但是Borland并没有警觉到Access会继续的往开发者市场进功,因此仍然没有加紧在 Paradox 产品上开发,Borland总觉得以Paradox在市场的地位是无法轻易憾动的,而且Access的目标市场也不是Paradox 的市场。但是Borland忘记了Microsoft非常散擅长模仿,因此在随后的Access版本中,Microsoft不断的为Access 加入可程式设计的功能,因此也逐渐的吸引了一些Paradox入门使用者的市场,再加入FoxPro For Window又持续的强功开发者数据库市场,Paradox终于在背腹受敌之下也逐渐的败下阵来。虽然在未期Philippe Kahn已经对Paradox投下重兵,希望能够挽回Paradox的劣势,奈何时不我予,Paradox在奋斗了Paradox 6和Paradox 7 的2个版本之后,终究难逃失败的命运。
  当时我看到Microsoft如何打击竞争对手时,我就和朋友开玩笑的说。Microsoft有天下无敌的3绝招,那就是『打不过你就模仿你(这让我想起电影秘密客(Mimic) ),再打不过就和你比流血,看谁流得久(这让我想起吸血鬼),最后如果再不行的话,那就挖光你的人(这让我想起电影 Other People's Money)』。Lotus就在Microsoft的前2个绝招下到地不起,而Borland还算是功力深厚的了,连中了3绝招,虽然不像Lotus和许多其他公司一样从此Bye-Bye,但也是受伤极重的了。

ODBC和IDAPI之争
  当Microsoft在逐渐的击败他的竞争对手,并且拥有了大部份PC数据库市场之后,便慢慢的了解到掌握标准的重要性。此外Microsoft为了统一各应用程式之间不同资料的存取,因此开始制定存取资料的统一标准-ODBC。
  Microsoft更大的目的是为了准备和瞄准下一场的大战,那就是PC上的RDBMS产品。
当然,Microsoft要一统资料存取的江山,Borland不同意,其时一心想从Microsoft扳回一城的 IBM 也不同意,而Novell更是害怕,因为Novell怕Microsoft成功之后,Netware会消失得更快。于是IBM,Novell和Borland以及一些其他的小厂便聚集在一起,决定也制定一套存取资料的标准介面来和 Microsoft对抗,这个制定的资料存取标准便是IDAPI。此时也正式揭开了ODBC和IDAPI竞争的序幕。
  不过IBM,Novell和Borland的结合很快的就证明是失败的,因为就像稍后说明的一样,IBM在PC软件上的发展一直是三心二意,反反覆覆,因此当IDAPI 1.0的规格出来之后,IBM这位老兄又失去了和Microsoft对抗的兴趣,于是就退出了IDAPI联盟。至于Novell就更不用说了,Novell 对于和Microsoft一象是『说说可以,真打不行』,一定要找到一群厂商才敢和Microsoft对抗。Novell在眼看IBM推出之后,也马上不战而降,很快的就也退出 IDAPI 联盟,这个现象和稍后Novell对于和Borland秘密合作的Appware/AppBuilder计划如出一辙,都是虎头蛇尾,草草收场。
  在两个大公司临阵脱逃之后,Philippe Kahn仍然不畏惧 Microsoft的竞争,还是以IDAPI 1.0的规格实作资料存取引擎,这就是我们现在使用的BDE/IDAPI和SQL Links的前身。当时IDAPI 1.0的功能规格比ODBC 1.0好得多了,我记得Delphi 1.0使用的BDE/IDAPI和SQL Links驱动程式也比当时慢得像乌龟的ODBC快上太多了。只可惜在IBM和Novell推出之后,其他的小厂也是一轰而散。因此Borland只能靠自己独自和Microsoft对抗。Borland能够以少量的资源一直对抗到Delphi 3的BDE/IDAPI才逐渐的被ODBC追过,也算是非战之罪了。怪也只能怪Borland意志不坚的盟友。当然由于IBM和Novell的行事做风是如此,在稍后许多能够和Microsoft一较长短的机会也因为如此而消逝,最后自食恶果,逐渐失去了PC的软件市场,再也无力和Microsoft抗衡了。
  现在呢Borland似乎记取了当时的错误, 正努力的在Linux上定义标准资料存取介面dbExpress, 我希望也祝福Borland能够成功.
 
接受答案了.
 
up
good !very good!!tank you !
我想学习vcl
深一点
 
后退
顶部