|
|
(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&t(c的诞生地)和unix v的全部c++扩展特性。有人称“m$坚持工业标准,borland随意修改” ,这是不对的。delphi也全兼容ansi/iso pascal 1983/92规范,以及apple object pascal (用过code warrior professional的应该知道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 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系列游戏同是用c++开发的,但画面质量和运行速度显然quake系列更胜一筹。象美国航空航天局(nasa),俄罗斯宇航局(rsa),美洲银行(bank of america,资产超过5000亿美元的大银行),其他诸如american airlines,at&t, bmw
网友评论:(评论内容只代表网友观点,与本站立场无关!) |
阅读排行
没有相关文章
|