(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 warrior professional不是启动更快吗?
至于“一个数据库程序要带上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),美洲银行(bank of america,资产超过5000亿美元的大银行),其他诸如american airlines,at&t,bmw,compaq,bbc television,british telecom等大型机构/公司都在用delphi开发复杂的,企业级(可笑的是,有人居然称“用vc开发企业级的桌面应用”,殊不知企业级应用和桌面应用是相对而言的)的应用系统(在http://community.borland.com(borland社团站点)上有关于用delphi和c++ builder开发的产品介绍),如果有人还要说“...稳定和可靠是硬道理,只好忍痛割爱了”,那他恐怕只好自制开发工具(外带操作系统)了。:-)
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/