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  warriorprofessional不是启动更快吗?至于“一个数据库程序要带上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  airlines,at&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++在游戏开发中用得较多我看主要是价格因素,游戏使用专用界面,通常不涉及数据库和internet(即使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能撑得住

解决方案 »

  1.   

    我随没用过delphi,但也tp用了4年2.0-7.0都用过,阁下大谈delphi的好处,无非是给delphi争口气,其实,没人说delphi不好,这里还不具备看不起delphi的大师。
    关于,你说的问题,我还要说几点:在windows下vc的程序的运行速度,性能最高的霸主地位其他都无法可比。我并不认为一个循环与句vc会比delphi快,但是如果做个DBMS或是图像处理程序,速度的差距就非常明显了。暴雪、3do、Adobe就是为此都采用了vcvc的灵活性最高,这一点,单单用过几个月的vc程序员是感觉不到的,我们讲:freedom or death另外,单就语言上object pascal 与c/c++的应用广泛程度是无法比的。开发c/c++编译器的很多,m$倒闭了,还可以用GCC、BCB,就算c/c++灭亡了,C#/Java至少在语法上与c/c++相近。object pascal则不同,当拉登驾驶着飞机撞向borland(我习惯叫这个老名字)大楼的时候,object pascal的使用者又能怎样呢?还有一点,虽然与语言无关,但是确是事实。vc的程序员,通常对windows、硬件、网络的基础知识了解要比其他程序员深。我是个vc的新手,即便如此,我也可以通过一个32位的虚拟内存地址知道他是否在物理内存上,而且知道在物理内存上的位置。在编图像方面的东西,我们经常去写上千行的代码用于吧动态的GIF显示出来(即便有现成的方法)。在开发网络程序的时候,我们对ip报的内部的东东和传输途径了如指掌。我想其他卡发工具的程序员要达到这种水平,恐怕要称为“高手”了,而在我们这里只能作为某个方面编程的序章。
      

  2.   

    没什么好比的
    windows下,最强大的是win32asm,开发效率最低的也是win32asm,但是你能说win32asm没有用武之地吗?
    关键是知道什么时候用什么开发语言,而不是死守一个语言到老。
      

  3.   

    讨厌又讨论这个问题,
    反正两套工具我都在用,我也作过
    DELPHI和C的测试,一个循环DELPHI用了6秒,C/C++ 12秒,VB 100秒
    编译器BORLAND确实好,测试后,我花了2个月学DELPHI,D在数据库上
    是相当棒的,缺点是用OBJECT PASICAL时大部分人,都没有完整的利用
    它的封装,另外在数据结构上也不如C/C++好用。
    写系统软件上用C好
      

  4.   

    本来我们可以在同一台机器上安装Windows和linux的,但某些人却为该装Windows还是linux而发愁。