Y
yangkee
Unregistered / Unconfirmed
GUEST, unregistred user!
非常同意一位大侠的观点:大家应该把注意力放在软件上,而不是语言上。哪种语言都有其
长短,扬长避短就行了,关键是实现目标。在软件的开发中,Coding其实是最底层的工作,
就象建筑工人和建筑师。
原文较长,只选了头和尾,翻译不妥之处还望各位大侠海涵。
引言
本文的目的是为了给VC++程序员提供一个Delphi 5专业版和Visual C++ 6专业版的比较,
着眼于一个程序员在实际使用中所需要和希望从他(她)的开发工具中得到的东西。
回顾Visual C++和 Delphi的历史就可以了解他们之间根本上的差异。Visual C++源于
Microsoft C/C++, 那时M$在C++ 开发工具市场上还是个失败者。Delphi 源于Borland的
Turbo Pascal,它本身又由来于曾经是Borland的第一个产品,一个以其令人惊异的低价
高质的优点而彻底改变了世界,同时也使得Philippe Kahn成为在程序员中人所皆知的名字
的Pascal编译器。象borland一样,M$也曾创立了一个计算机语言产品--Basic,但和
borland不同,后来M$很快转移到了操作系统、办公室套件和一大堆其他产品上。Borland
在桌面数据库市场上取得了相当的份额,甚至拥有了电子表格软件Quattro Pro,但后来因
为电子表格的界面问题与Lotus进行的一场代价高昂的官司,和从C/S数据库到桌面领域的转
移,最终导致了他在这两个市场都日渐势微。两个公司的开发工具都反映了这段不同的历史。
他们的销量最好的语言产品都是基于他们最开始的语言产品。Visual Basic是从Basic继承
下来的,而Delphi是从 Borland Pascal继承下来的。Visual C++ 同 Visual Basic在微软
内部竞争资源和注意力,这样永远不能做出Visual Basic和Delphi那样的RAD工具。这可能
是Visual C++和Delphi最大的差别。
在Visual C++和Delphi的差别上有趣的一点是由于Borland一度曾几乎拥有整个桌面数据
库市场,因此通过Borland Database Engine中包含的直接数据驱动,Delphi具有完全的创建
和操作Paradox和DBase数据库表的能力,而无须依赖ODBC。Microsoft也拥有两个桌面数据库
:FoxPro 和 Access。据我所知,Visual C++ 6 Pro除了处理DAO和ADO(两者都是ODBC的进
一步发展)的类,没有包含更直接的对FoxPro 和Access的支持。DAO 过去通常是Microsoft
开发工具中用来访问Access的方式,但它不支持多线程。现在首选的方式是ADO,它具有的
多线程和大量的改进使它在进行数据库访问时远远优于DAO。使用ADO的代码在Visual C++中
与在Visual Basic中几乎一样,因为ADO是对连接过程、维护和缓存连接以及刷新数据等操作
的高层抽象封装。比起Delphi中使用BDE,在Visual C++中使用ADO的最大缺点就是Visual C++
需要你自己编写所有的接口代码,而几乎没有提供什么能减轻这些工作的数据库组件。Visual
C++允许你使用ActiveX控件来提供一些这种功能,但ActiveX也有很多自身的问题,如因为
它是二进制兼容的控件而必须将它全部包含,即使只需要用到它的很小一部分功能。
Delphi带有很多和BDE集成得很好的数据库组件,以至于即使一个仅是delphi初学者的人
也能在几分钟内创建一个具有完全功能的数据库应用程序而无须写任何代码。即便是一个经验
丰富的Visual C++程序员要达到这种速度也会感到窘迫,因为Visual C++根本没有什么可以
与delphi中的数据库组件相比。
编译器和连接器
组件
集成开发环境
调试
语言
COM
性能
数据库支持
结论和建议
开发工具的选择取决于几个不同的因素,其中的一些与开发工具本身的技术优势根本无关。
没有哪个程序是在真空中写出来的而不受到外界因素的影响。程序员经常为他们最喜爱的
开发工具而争论,好象这些工具都处在理想状态的设定下,由富有经验的编程老手优雅地尽情绘洒
而又威力无比,但事实与这些狂热者所说的情况大相径庭。在Delphi 5和Visual C++ 6之间做出选择时应
考虑的因素有:
1. 现有熟练程度:C++ 和Object Pascal 的学习曲线意味着作为新手的程序员在刚开始上手
时花费的时间必须在两者的比较中加以考虑。依照多方面的原始资料,程序员的生产力可划分
为1-10级。多数delphi程序员一致同意delphi的总体生产力要比Visual C++ 高2-4倍,而尝试
用过delphi的Visual C++程序员的评价是其间的生产力差别要小得多。从中可以看出,如果
你能找到富有经验的优秀程序员,你或许应该考虑让他们使用他们最得心应手的开发工具。
如果他们对一种开发工具非常熟练而对另一种一无所知的话,他们在技能上的差别可能远远
超过开发工具本身的差别。不幸的是,人才市场上的真实情况是:最优秀的程序员非常难找,
而你最终找到的十有八九是简历上写的天花乱坠而实际基本上是一无所知的新手。因为delphi
对新手来说比Visual C++更容易上手, 因此在这一点上看来对delphi比较有利,除非你已经
有了一大拨富有经验的编程老手。如果找到了你就会发现富有经验的熟练delphi程序员将比
同等的C++程序员表现出更高的生产力。
2. 现有遗留代码。简单地说,从头开始编写代码从来就是一个花费高昂的过程。尽管面向
对象的程序设计在代码重用上蕴涵有很多好处,重用已有的代码比其他任何措施更能缩短
项目的完成时间。VC++中的粘贴、拷贝,delphi中的拖、放,仍然是代码重用的最主要形式,
而一个项目中能包含的现成代码越多,你就越占是有先机。程序员们最臭名昭著的就是想以
他们自己的思想来重写一切,而且普遍患有不把别人的代码视同己出的毛病。这种个性特点
的代价是非常高昂的。那种已找到一个已经具有他们需要的功能的东西,却声称他将会用最新
的面向对象技术从头到尾把它全部重写一遍的人是自命不凡的假内行,他对程序"纯正性"的圣杯
的寻找将会耗空你的钱包。这也适用于那些拒绝适用组件和基于组件的系统的人。组件代表了
代码重用的终级标准,而Delphi提供了比Visual C++更有效的组件。
3. 开发程序的类型。在开发某种特定的程序时两者都有自己的所长。Delphi在开发数据库
前端以及快速开发华丽而给人深刻印象的用户局面上要远远超过Visual C++。另外,在那些
已出现了代码可靠,功能强大的delphi控件的领域,delphi再一次占有很强的优势。这包括
了internet 和intranet应用,图表和报表制作,数据库访问和复杂的用户界面。而Visual C++
长于编写设备驱动程序,com服务器,工程和精密计算,以及统计应用,控制台程序,WinCE
应用以及小型应用。恰当的做法是,要想得到最大的生产力就应当同时精通这两种工具,并针对
给定的应用采用最适合的开发工具。所以任何一个真正优秀的程序员应该在使用两种工具时都
熟练且富于生产力。
4. 未来的可移值性和可扩展性。在撰写本文时borland已经宣布他们的C++ Builder
和Delphi 产品将在2000年中期推出linux版。这将使这两种产品编写的windows应用程序移植
到linux的工作减到最少。borland在对他们未来的计划大肆宣扬时,Microsoft却对未来表现
出异乎寻常的沉默。尽管过去可以用Visual C++编写Intel和Alpha版winnt的程序,但现在
新版本的windows nt已不再支持Alpha处理器。这使得WinCE成为唯一的Visual C++支持的
唯一的“多”平台。不幸的是WinCE的市场表现差强人意。另外,指望Microsoft将Visual C++
移植到任何非MS平台几乎是没什么可能的,不管是现在还是将来,这从他以前的记录就可以看出来。
另一方面,borland看来注定会在linux上大红大紫。同时在数据库方面,borland最近宣布
他们的数据库interbase将开放源码(也就是免费),并改善interbase与borland开发工具的集成。
长短,扬长避短就行了,关键是实现目标。在软件的开发中,Coding其实是最底层的工作,
就象建筑工人和建筑师。
原文较长,只选了头和尾,翻译不妥之处还望各位大侠海涵。
引言
本文的目的是为了给VC++程序员提供一个Delphi 5专业版和Visual C++ 6专业版的比较,
着眼于一个程序员在实际使用中所需要和希望从他(她)的开发工具中得到的东西。
回顾Visual C++和 Delphi的历史就可以了解他们之间根本上的差异。Visual C++源于
Microsoft C/C++, 那时M$在C++ 开发工具市场上还是个失败者。Delphi 源于Borland的
Turbo Pascal,它本身又由来于曾经是Borland的第一个产品,一个以其令人惊异的低价
高质的优点而彻底改变了世界,同时也使得Philippe Kahn成为在程序员中人所皆知的名字
的Pascal编译器。象borland一样,M$也曾创立了一个计算机语言产品--Basic,但和
borland不同,后来M$很快转移到了操作系统、办公室套件和一大堆其他产品上。Borland
在桌面数据库市场上取得了相当的份额,甚至拥有了电子表格软件Quattro Pro,但后来因
为电子表格的界面问题与Lotus进行的一场代价高昂的官司,和从C/S数据库到桌面领域的转
移,最终导致了他在这两个市场都日渐势微。两个公司的开发工具都反映了这段不同的历史。
他们的销量最好的语言产品都是基于他们最开始的语言产品。Visual Basic是从Basic继承
下来的,而Delphi是从 Borland Pascal继承下来的。Visual C++ 同 Visual Basic在微软
内部竞争资源和注意力,这样永远不能做出Visual Basic和Delphi那样的RAD工具。这可能
是Visual C++和Delphi最大的差别。
在Visual C++和Delphi的差别上有趣的一点是由于Borland一度曾几乎拥有整个桌面数据
库市场,因此通过Borland Database Engine中包含的直接数据驱动,Delphi具有完全的创建
和操作Paradox和DBase数据库表的能力,而无须依赖ODBC。Microsoft也拥有两个桌面数据库
:FoxPro 和 Access。据我所知,Visual C++ 6 Pro除了处理DAO和ADO(两者都是ODBC的进
一步发展)的类,没有包含更直接的对FoxPro 和Access的支持。DAO 过去通常是Microsoft
开发工具中用来访问Access的方式,但它不支持多线程。现在首选的方式是ADO,它具有的
多线程和大量的改进使它在进行数据库访问时远远优于DAO。使用ADO的代码在Visual C++中
与在Visual Basic中几乎一样,因为ADO是对连接过程、维护和缓存连接以及刷新数据等操作
的高层抽象封装。比起Delphi中使用BDE,在Visual C++中使用ADO的最大缺点就是Visual C++
需要你自己编写所有的接口代码,而几乎没有提供什么能减轻这些工作的数据库组件。Visual
C++允许你使用ActiveX控件来提供一些这种功能,但ActiveX也有很多自身的问题,如因为
它是二进制兼容的控件而必须将它全部包含,即使只需要用到它的很小一部分功能。
Delphi带有很多和BDE集成得很好的数据库组件,以至于即使一个仅是delphi初学者的人
也能在几分钟内创建一个具有完全功能的数据库应用程序而无须写任何代码。即便是一个经验
丰富的Visual C++程序员要达到这种速度也会感到窘迫,因为Visual C++根本没有什么可以
与delphi中的数据库组件相比。
编译器和连接器
组件
集成开发环境
调试
语言
COM
性能
数据库支持
结论和建议
开发工具的选择取决于几个不同的因素,其中的一些与开发工具本身的技术优势根本无关。
没有哪个程序是在真空中写出来的而不受到外界因素的影响。程序员经常为他们最喜爱的
开发工具而争论,好象这些工具都处在理想状态的设定下,由富有经验的编程老手优雅地尽情绘洒
而又威力无比,但事实与这些狂热者所说的情况大相径庭。在Delphi 5和Visual C++ 6之间做出选择时应
考虑的因素有:
1. 现有熟练程度:C++ 和Object Pascal 的学习曲线意味着作为新手的程序员在刚开始上手
时花费的时间必须在两者的比较中加以考虑。依照多方面的原始资料,程序员的生产力可划分
为1-10级。多数delphi程序员一致同意delphi的总体生产力要比Visual C++ 高2-4倍,而尝试
用过delphi的Visual C++程序员的评价是其间的生产力差别要小得多。从中可以看出,如果
你能找到富有经验的优秀程序员,你或许应该考虑让他们使用他们最得心应手的开发工具。
如果他们对一种开发工具非常熟练而对另一种一无所知的话,他们在技能上的差别可能远远
超过开发工具本身的差别。不幸的是,人才市场上的真实情况是:最优秀的程序员非常难找,
而你最终找到的十有八九是简历上写的天花乱坠而实际基本上是一无所知的新手。因为delphi
对新手来说比Visual C++更容易上手, 因此在这一点上看来对delphi比较有利,除非你已经
有了一大拨富有经验的编程老手。如果找到了你就会发现富有经验的熟练delphi程序员将比
同等的C++程序员表现出更高的生产力。
2. 现有遗留代码。简单地说,从头开始编写代码从来就是一个花费高昂的过程。尽管面向
对象的程序设计在代码重用上蕴涵有很多好处,重用已有的代码比其他任何措施更能缩短
项目的完成时间。VC++中的粘贴、拷贝,delphi中的拖、放,仍然是代码重用的最主要形式,
而一个项目中能包含的现成代码越多,你就越占是有先机。程序员们最臭名昭著的就是想以
他们自己的思想来重写一切,而且普遍患有不把别人的代码视同己出的毛病。这种个性特点
的代价是非常高昂的。那种已找到一个已经具有他们需要的功能的东西,却声称他将会用最新
的面向对象技术从头到尾把它全部重写一遍的人是自命不凡的假内行,他对程序"纯正性"的圣杯
的寻找将会耗空你的钱包。这也适用于那些拒绝适用组件和基于组件的系统的人。组件代表了
代码重用的终级标准,而Delphi提供了比Visual C++更有效的组件。
3. 开发程序的类型。在开发某种特定的程序时两者都有自己的所长。Delphi在开发数据库
前端以及快速开发华丽而给人深刻印象的用户局面上要远远超过Visual C++。另外,在那些
已出现了代码可靠,功能强大的delphi控件的领域,delphi再一次占有很强的优势。这包括
了internet 和intranet应用,图表和报表制作,数据库访问和复杂的用户界面。而Visual C++
长于编写设备驱动程序,com服务器,工程和精密计算,以及统计应用,控制台程序,WinCE
应用以及小型应用。恰当的做法是,要想得到最大的生产力就应当同时精通这两种工具,并针对
给定的应用采用最适合的开发工具。所以任何一个真正优秀的程序员应该在使用两种工具时都
熟练且富于生产力。
4. 未来的可移值性和可扩展性。在撰写本文时borland已经宣布他们的C++ Builder
和Delphi 产品将在2000年中期推出linux版。这将使这两种产品编写的windows应用程序移植
到linux的工作减到最少。borland在对他们未来的计划大肆宣扬时,Microsoft却对未来表现
出异乎寻常的沉默。尽管过去可以用Visual C++编写Intel和Alpha版winnt的程序,但现在
新版本的windows nt已不再支持Alpha处理器。这使得WinCE成为唯一的Visual C++支持的
唯一的“多”平台。不幸的是WinCE的市场表现差强人意。另外,指望Microsoft将Visual C++
移植到任何非MS平台几乎是没什么可能的,不管是现在还是将来,这从他以前的记录就可以看出来。
另一方面,borland看来注定会在linux上大红大紫。同时在数据库方面,borland最近宣布
他们的数据库interbase将开放源码(也就是免费),并改善interbase与borland开发工具的集成。