Object Pascal

维基百科,自由的百科全书
Object Pascal
编程范型指令式結構化編程面向对象函數程式語言 (仅Delphi支持)
設計者Apple, Niklaus Wirth, Anders Hejlsberg
发行时间1986年,​38年前​(1986
型態系統static and dynamic(dynamic typing through Variants, array of const and RTTI), strong, safe
主要實作產品
Delphix86 and CLI), Oxygene英语OxygeneCLI), Free Pascalx86, x86-64, PowerPC, ppc64, SPARC and ARM), Lazarusx86, x86-64), Virtual Pascal英语Virtual Pascalx86), TMT Pascalx86), Turbo51英语Turbo51Intel 8051
衍生副語言
Apple, Turbo Pascal, objfpc, Delphi, Delphi.NET, Oxygene英语Oxygene
啟發語言
Pascal, Simula, Smalltalk
影響語言
C#, Java

Object PascalPascal编程语言面向对象的衍生分支,是Delphi支持的主要编程语言。Pascal编译器,包括那些Object Pascal编译器,在生成高优化代码同时,一般运行非常快。

版本[编辑]

总而言之,Object Pascal现在笼统地用来指有面向对象编程扩展的Pascal语言的不同方言,虽然这些方言绝大多数与CodeGear实现兼容。

  • Borland将第一版Delphi的编程语言命名为Object Pascal,但是后来将其重命名为Delphi编程语言。然而,宣称兼容Object Pascal的编译器通常试图兼容Delphi源代码。
  • .NET存在的对从Delphi 8到Delphi 2005,Delphi 2006和Delphi 2007的支持现在已被另外的语言Oxygene(参见下面)替代,不完全向后兼容。
  • Lazarus是类似Delphi的Object Pascal语言集成开发环境,使用Free Pascal编译器,是一款开放源代码的自由软件。
  • Morfik Pascal编程语言由Morfik开发,针对支持Ajax的Web应用。Morfik编译器已纳入该公司的AppsBuilder IDE,允许Object Pascal代码用于实现将同时在浏览器和服务器上运行的代码。
  • WDSybil,一个开源的可用于Microsoft WindowsOS/2的类Delphi的IDE和编译器,最初由一个叫做Speedsoft的公司发布的商业Borland Pascal兼容环境,后来在一个叫做Sybil的类Delphi RAD里开发,然后在公司关闭时在GPL下开放源代码。

在Apple的早期历史[编辑]

Object Pascal是对Pascal语言的扩展,它是Apple Computer的一个由拉里·泰斯勒领导,Pascal的发明者尼克劳斯·维尔特提供咨询的小组开发的。它继承自一个用于Lisa计算机的称作Clascal的Pascal的面向对象的早期版本。

为了支持一个现在叫做类库的可扩展Macintosh应用框架MacApp,Object Pascal是必要的。Object Pascal扩展和MacApp本身是由Barry Haynes,Ken Doyle和Larry Rosenstein开发的,Dan Allen测试的。拉里·泰斯勒监督该项目,开始于1985年早期,在1986年成为一个产品。

Apple在1994年从Motorola 68K芯片转移到IBM's PowerPC架构时,删除了对Object Pascal的支持。

一个Object Pascal扩展也在Think Pascal IDE里实现过。该IDE包括编译器,一个语法高亮和检查的编辑器,一个强大的调试器和一个类库。许多开发者首选Think Pascal,而不是MacApp,因为它提供了工具的紧密集成。在4.01之后,开发停止了,因为Symantec购买了该公司。开发人员然后离开了该项目。

Borland和CodeGear的年代[编辑]

在1986年,Borland将也称作Object Pascal的类似扩展引进到Macintosh的Turbo Pascal产品里;在1989年,引进到DOS的Turbo Pascal 5.5。

当Borland在1994年将重点从MS-DOS调整到Windows时,它们创造了Turbo Pascal的一个叫做Delphi的继任者,并引进了创建现在称作Delphi语言的一系列新的扩展。

Delphi的开发开始于1993年,1995年2月14日在美国官方发布了Delphi 1.0。那时,使用Turbo Pascal对象模型的代码仍旧能被编译,Delphi的特性有:先于object使用关键字class的新语法,Create构建器和虚拟的Destroy析构器(并否定了必须调用NewDispose过程),属性,方法指针和一些其它特性。这些是ISO面向对象扩展工作草案所鼓励的,但是许多与Turbo Pascal方言的差异(例如草案要求所有的方法是虚拟的)被忽略了。

Delphi语言在遍及支持诸如64位整数动态数组的新语言概念的年代里继续演化。

编译器[编辑]

现在有许多编译器,绝大多数兼容Delphi的Object Pascal语言。许多是为了让Object Pascal在不同平台上和各种许可下编译而创建的。

  • Delphi可能是最知名的编译器了。它针对Win16(Delphi 1),Win32(Delphi 2+),.NET 1.x, 2.0(Delphi 8,Delphi 2005 - 2007),Mac OS (Delphi XE2以上),iOS (Delphi XE2以上, 在 XE4 及更高版本中生成本机二进制文件),Android (Delphi XE5以上, 在 XE5 及更高版本中生成本机二进制文件)。其对 .NET 的支持最终变成了一个独立产品叫做Oxygene英语Oxygene (programming language) (见下)。
  • Borland Kylix是Delphi的Linux变种,仅针对使用Qt的Intel 32位Linux。它不再更新了。现代分发通常不运行于其箱体外。
  • Free Pascal是一个命令行编译器,目标是与Turbo Pascal和Delphi方言的核心特性集的源兼容性。现在的版本,2.2是高兼容Delphi 6或7。[來源請求] FPC为各种操作系统下的x86x86-64PowerPCSPARCARM处理器生成代码,这些操作系统包括Win32Win64LinuxFreeBSDMac OSMac OS X(包括Xcode集成工具)。除了命令行用法,几个开发环境可用于Free Pascal,尤其是Lazarus IDE。
  • GNU Pascal英语GNU PascalGCC的一个分离分发部分)在正式地不针对Pascal的CodeGear方言的同时,它包含一个Borland Pascal兼容模式,非常慢地纳入一些Delphi语言的特性。它不适于直接重编译Delphi代码的巨大的体,值得注意地是为操作系统和硬件架构提供了丰富的支持。
  • Virtual Pascal英语Virtual Pascal是一个兼容x86 32位Turbo Pascal和Delphi的编译器,主要针对OS/2和Windows,虽然它也开发了一个DOS+ 扩展器和一个实验性的Linux交叉编译器。该编译器的开发在大约Delphi V2层次时停止了;它的站点从2007年关闭,Virtual Pascal的开发也停止了。
  • Oxygene英语Oxygene (programming language)(正式地称作Chrome)是一个Object Pascal编译器,来自于整合进Microsoft Visual StudioRemObjects Software英语RemObjects Software。它也可用作本地运行在CLI上的自由命令行编译器。它针对.NET和Mono平台。
  • MIDletPascal英语MIDletPascal是一个生成J2ME字节代码的手机应用开发工具。
  • PocketStudio英语PocketStudio是一个Palm OS的基于Pascal的IDE

解释器[编辑]

Pascal Script页面存档备份,存于互联网档案馆)(正式地称作InnerFuse)是一个开源的用Delphi编写的Object Pascal 解释器/脚本引擎。支持有限的Object Pascal子集。

"Hello World"程序样本[编辑]

Apple的Object Pascal[编辑]

program ObjectPascalExample;

   type
      THelloWorld = object
         procedure Put;
      end;

   var
      HelloWorld: THelloWorld;

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;

begin
   New(HelloWorld);
   HelloWorld.Put;
   Dispose(HelloWorld);
end.

Turbo Pascal的Object Pascal[编辑]

在Delphi和Free Pascal里仍然支持这种Object Pascal。FPC也将自己的(这种Object Pascal)库/单元的替代品打包。Delphi不这样做。Free Pascal 1.0系列和FPC文本模式IDE是这种方言的最大的开发代码库。Free Pascal 2.0以更类似Delphi的方言重写了。

program ObjectPascalExample;

   type
      PHelloWorld = ^THelloWorld;
      THelloWorld = object
         procedure Put;
      end;

   var
      HelloWorld: PHelloWorld; {这是一个指向THelloWorld的指针}

   procedure THelloWorld.Put;
   begin
      WriteLn('Hello, World!');
   end;

begin
   New(HelloWorld);
   HelloWorld^.Put;
   Dispose(HelloWorld);
end.

Delphi和Free Pascal的Object Pascal[编辑]

program ObjectPascalExample;
//注意在Free Pascal中此处应加上{{$mode delphi}}或者{{$mode objfpc}},否则不识别class
type
  THelloWorld = class
    procedure Put;
  end;

procedure THelloWorld.Put;
begin
  Writeln('Hello, World!');
end;

var
  HelloWorld: THelloWorld;               {这是一个隐式指针}

begin
  HelloWorld := THelloWorld.Create;      {构建器返回一个指针}
  HelloWorld.Put;
  HelloWorld.Free;                       {本行解除引用指针}
end.

注意,对象构建器在Delphi和Free Pascal(Delphi兼容模式)里仍然有效。

Oxygene的Object Pascal[编辑]

namespace ObjectPascalExample;

   interface

   type
      ConsoleApp = class
         class method Main
      end;

      THelloWorld = class
         method Put;
      end;

   implementation

   method THelloWorld.Put;
   begin
      Console.WriteLine('Hello, World!');
   end;

   class method ConsoleApp.Main;
   begin
      var HelloWorld := new THelloWorld;
      HelloWorld.Put;
   end;

end.

进展[编辑]

通过扩展Delphi,许多特性已持续地引进Object Pascal,现在Free Pascal也引进了一些特性。为了应对批评,Free Pascal已接纳了泛型,并且Delphi和Free Pascal现在都支持操作符重载(尽管使用不同的语法)。Delphi从版本7[2]也引进了包括泛型的许多其它特性。

参见[编辑]

参考[编辑]

  1. ^ iPhone/iPod development. Free Pascal development team. [2009-04-13]. (原始内容存档于2009-04-28). 
  2. ^ New Delphi language features since Delphi 7. CodeGear. [2008-07-06]. (原始内容存档于2008-07-02). 

外部链接[编辑]

Embarcadero[编辑]

RemObjects Software[编辑]

Object Pascal介绍[编辑]

Delphi社区[编辑]

Free Pascal的Object Pascal参考指南[编辑]

Object Pascal工具[编辑]

GNU Pascal[编辑]

paxCompiler[编辑]

WDSybil[编辑]