面向对象
毫无疑问,Delphi迈入了一个更高层的领域,即真正意义上的面向对象编程。在这之前,Pascal对面向对象还有点三心二意。Turbo Pascal 5.5是一流的DOS工具包(市场上称为“带对象的Turbo Pascal”),但其实它的对象只不过是带有程序的记录类型。除非你精通C ,否则你必须使用Modula II或Smalltalk之类的语言,才能获得Delphi提供的那种对象模型。但是,它们都缺乏Delphi擅长的RAD(快速应用程序开发)层。
整个80年代和90年代初期,在Delphi的推动下,所有播种和孵化的技术都飞跃发展成了系统,面向对象成了语言本身基本的特征,而不是作为附加功能使用。由于Delphi程序在完整的VMT(虚拟方法表)下运行,因此开发人员可以享受继承、虚拟和抽象方法以及可靠的数据封装——所有这些均来自于易学、易用和竞争激烈的语言。
锦上添花的是Delphi注重视觉编程。你可以将一个按钮拽到窗体上,然后双击填写事件处理程序,这个过程无需离开IDE或切换选项卡。之前已有其他编译器做到了这一点,但Delphi是真正的本地编译器,而不是通过字节码或托管系统让IDE按照自己的规则进行操作(以性能为代价)。Delphi是首个达到C/C 级别的性能和深度(多亏了Object Pascal的易学和优雅)的语言。你还可以与Pascal并排编写机器代码,所以说Delphi与Visual Basic或SmallTalk是完全不同的级别。一夜之间Visual Basic从英雄变成了无名小卒。
现代Delphi与C/C 并肩,但仍非常重视可视化OOP编程
关于这一点,Object Pascal拥有与C/C 并驾齐驱的深度和功能,这是因为Delphi的视觉和非视觉组件库都是由Delphi制作的。换句话说,你没有强制依赖第三方提供的组件(这是竞争解决方案的惯用方法)。任何人都可以坐下来编写自己的组件;然后以可执行文件或源代码的形式打包出售。因此,组件市场蓬勃发展,导致竞争对手黯然失色。
我甚至想说,如果Delphi是在IBM OS/2上发布的,那么就可以拯救这个平台。意义非凡。
大学最后一年,我们的课程使用了Visual Basic,但其实背后我们都在使用Delphi。实际上,我从未参加过任何微软认证课程,而且只学习了一些基本知识就考出了好成绩。那时,我已经在用Delphi编写COM组件,远远超出了课程范围。
我至今仍记得有一天老师将课程放在一边,单独给我们讲起了Delphi。他是一位充满热情的开发人员,将Delphi的包装盒放在我们面前时,他几乎无法抑制自己的激动心情。我们睁大了眼睛,张着嘴,津津有味地听着有关这个奇妙的新系统的所有知识。充满热情的思想涌现出了很多新想法。那真是一个奇迹。
大学毕业后,我曾有机会从事教师的工作,但我拒绝了。除了Delphi之外,什么都不教的想法感觉像是倒退了一步。
Delphi教育
在结束了大学的学习后,头几年里我一直在担任技术新闻记者,同时也在提高自己的开发技术。当再次回到大学学习时,Delphi已被列入了教学大纲。如今,年轻的开发人员常常在问为什么RAD Studio同时包含Delphi和C Builder,其实这种结合构成了传统软件工程学位的骨干。这种趋势一直持续到2002年,而且如今世界部分地区仍然如此。
这两种语言并排发展,而且共同拥有一段1970年代的辉煌历史。尽管许多开发人员错误地认为Object Pascal很老,C/ C 是现代编程语言,但实际上C与Pascal属于同一个时代。就像Delphi并非凭空发展一样,C也不是。而BrianKernigan和Dennis Richie的标准也是基于大型机行业已有(且经常相互冲突)的工具。
因此,作为编程语言,Pascal和C以及进一步的Object Pascal和C 都是并排发展起来的,尽管它们之间的正式间隔是三年。
值得庆幸的是,Embarcadero继续出色地完成了Delphi产品的最新功能。多年来,泛型、匿名方法、辅助类、属性等功能已发展成为该语言的一部分。在这些工作的推动下,我们看到了Delphi的市场采用非常稳定。无论是使用过其他语言的成熟开发人员,还是新手开发人员都能感受到Delphi的生产力和强大。
振奋人心的一件事是,Delphi和C Builder再次在教育领域大展手脚。在担任Embarcadero的SC期间,我帮助挪威的两所大学建立了社区版。此外,在苏格兰、意大利、葡萄牙、南美和俄罗斯的一些机构Delphi也在蓬勃发展。
挪威的老师都很激动,因为他们在Borland时代教过Delphi。就像一位教授款款而谈:“就像问候多年的老朋友一样。”
上个月Embarcadero宣布,土耳其将免费向其学生提供Delphi课程。估计有100万学生参加,这真是个好消息!对于学生而言,最重要的还是领悟可靠、现代和原型编程语言的优势。这些能让他们成长为更好的开发人员,就像我与数不尽的其他人一样。
软件工程原理
我不想离题太远,只想简单地说说原型编程语言。这是一个专属领域,除了Delphi和C Builder之外,该领域只有一个其他的编程语言(尽管Rust绝对应该位列其中)。
原型语言是体现计算基本原理的一种语言。这些原则不受产品和市场变化等因素的影响,因为它们代表了计算机的基础逻辑,有点像物理定律。在撰写本文之际,只有汇编语言、C/C 和Object Pascal才是原型语言。而且汇编语言是其他一切语言的基础。
另一种语言称为乐观语言,这个名字源自数据库技术的术语(例如,乐观锁定模型)。虽然我不打算在本文中讨论为何一门语言被称为乐观,但总的来说,乐观描述的是一种语言对于现有基础结构的依赖性的大小(因此被称为乐观,其意思就是认为存在某些特定条件是理所当然的)。汇编、C和Pascal是编写操作系统或内核的语言。从根本上讲,它们对操作系统的依赖性不如Java或JavaScript那么强。