1.2 Delphi 是什么 我们经常会问这样的问题:“到底什么使得D e l p h i 如此优秀?”和“为什么和别的编程工具相比,我更愿意选择D e l p h i ?”等等。这些年来,我们对这类问题已经得出了两种答案,一长一短。短的就是:高效性。要创建Wi n d o w s 应用程序,使用D e l p h i 是我们能够找到的最为简捷的途径。当然,有些人(老板们和未来的客户们)并不满足于这个答案。因此,我们必须推出我们的详细解答,它阐述了使得D e l p h i 如此高效的综合因素。我们把决定一个软件开发工具效率的因素归结为以下五点: • 可视化开发环境的性能。 • 编译器的速度和已编译代码的效率。 • 编程语言的功能及其复杂性。 • 数据库结构的灵活性和可扩展性。 • 框架对设计和使用模式的扩充。 虽然还有许多其他因素应该包括进去,如配置、文档、第三方的支持等,但我们已发现这是向人们解释我们为什么选择D e l p h i 的最确切、最简单的方式。当然,上述五点也可能包含了一些主观因素,但关键在于:你使用一种特定工具进行开发时,到底能有多大的效率?如图1 - 1 所示,对一种工具的各方面性能进行评估量化( 1 到5 之间),并分别标在图1 - 1的各条轴线上,最后就能得到一个五边形。五边形的面积越大,则这种工具的效率越高。
毋需告诉你我们使用这种方法得到了什么答案—你自己一试便知!下面让我们来仔细地看一下D e l p h i 在这几方面的性能如何,并把它们和其他Wi n d o w s 开发工具做一比较。
1.2.1 可视化开发环境 可视化开发环境通常分为三个组成部分:编辑器、调试器和窗体设计器。和大多数现代R A D (快速应用开发)工具一样,这三部分是协同工作的。当你在窗体设计器中工作时,D e l p h i 在后台自动为你正在窗体中操纵的控件生成代码。你还可以自己在编辑器中加入代码来定义应用程序的行为,同时还可以在同一个编辑器中通过设置断点和监控点等来调试程序。
总的来说D e l p h i 的编辑器和其他工具的编辑器类似,但它的C o d e I n s i g h t 技术却省去了许多输入工作的麻烦。这一技术是建立在编译器信息之上的,而不是基于像Visual Basic 等使用的类型库,因此应用范围更广泛。虽然D e l p h i 的编辑器也设置了许多不错的配置选项,但我觉得Visual Studio 的编辑器配置余地更大。在版本5 里,D e l p h i 的调试器功能终于赶上了Visual Studio 的调试器,具备了许多先进的功能,如远程调试、过程关联、D L L 和包调试、自动本地监控以及C P U 窗口等。D e l p h i 还支持在调试时随意放置和停靠窗口并把这一状态保存为命令的桌面设置。由此,D e l p h i 的I D E 实现了对调试功能的良好支持。
正如经常在一些集成环境(如V B 和某些J a v a 工具)中见到的那样,一个性能非常完善的调试器的长处就在于:应用程序被调试时能修改它的代码,从而改变它的行为。遗憾的是,由于这种功能在编译成本地代码时过于复杂而无法实现,故不能为D e l p h i 所支持。 对R A D 工具(如D e l p h i 、Visual Basic 、C + + B u i l d e r 和P o w e r B i l d e r 等)来说,窗体设计器是一项独特的功能。一些更为经典的开发环境,如V C + +和B C + +,都提供了对话编辑器,但却没有将窗体设计器集成到开发流程中。由图1 - 1 的效率图可以看出,没有窗体设计器将会降低开发工具的整体效率。几年可视的来,D e l p h i 和Visual Basic 在完善窗体设计器的功能方面展开了激烈的竞争。它们的新版本功能一个比一个强。D e l p h i 的窗体设计器的与众不同之处在于,D e l p h i 是建立在一个真正面向对象的框架结构基础之上的。这样,你对基类所做的改变都将会传递给所有的派生类。这里涉及的一项关键技术就是VFI(visual form inheritance),即可视化窗体继承。V F I 技术使你能够动态地继承当前项目或对象库中的任何其他窗体。一旦基窗体发生改变,派生的窗体会立即予以更新。在第4 章“应用程序框架和设计”中有对这一重要功能的详细解释。