Object Pascal

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

版本
总而言之，Object Pascal现在笼统地用来指有面向对象编程扩展的Pascal语言的不同方言，虽然这些方言绝大多数与CodeGear实现兼容。
 Borland将第一版Delphi的编程语言命名为Object Pascal，但是后来将其重命名为Delphi编程语言。然而，宣称兼容Object Pascal的编译器通常试图兼容Delphi源代码。

 CodeGear，Borland的前子公司，现在是Embarcadero Technologies的一部分，将编译Object Pascal代码到Windows上的集成开发环境（IDE）出售了。

 .NET存在的对从Delphi 8到Delphi 2005，Delphi 2006和Delphi 2007的支持现在已被另外的语言Oxygene（参见下面）替代，不完全向后兼容。

 Lazarus是类似Delphi的Object Pascal语言集成开发环境，使用Free Pascal编译器，是一款开放源代码的自由软件。

 Oxygene编程语言由RemObjects Software开发，单独针对通用语言架构。Oxygene编译器已纳入Embarcadero拥有的命名为Delphi Prism的一个新的Delphi开发解决方案，它是Microsoft Visual Studio的基础。

 Morfik Pascal编程语言由Morfik开发，针对支持Ajax的Web应用。Morfik编译器已纳入该公司的AppsBuilder IDE，允许Object Pascal代码用于实现将同时在浏览器和服务器上运行的代码。

 开源Free Pascal项目允许为广泛的操作系统——包括Linux（32位和64位）、FreeBSD、Mac OS/Mac OS X、Win32、Win64和Windows CE——和几个不同硬件架构编译该语言。iPhone SDK 2.x的第一版Free Pascal已于2009年1月17日发布。现在它也支持嵌入式（ARM）。

 MIDletPascal旨在Java字节代码平台。

 开源GNU Pascal编译器可用于GNU编译器集合的一个前端，它实现了ISO 7185 Pascal标准和ISO 10206扩展Pascal标准的“大部分”。

 也是自由编译器的Turbo51 用于为Intel 8051芯片生成代码。

 WDSybil，一个开源的可用于Microsoft Windows和OS/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析构器（并否定了必须调用New和Dispose过程），属性，方法指针和一些其它特性。这些是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 的支持最终变成了一个独立产品叫做 (见下)。
 Borland Kylix是Delphi的Linux变种，仅针对使用Qt的Intel 32位Linux。它不再更新了。现代分发通常不运行于其箱体外。
 Free Pascal是一个命令行编译器，目标是与Turbo Pascal和Delphi方言的核心特性集的源兼容性。现在的版本，2.2是高兼容Delphi 6或7。 FPC为各种操作系统下的x86，x86-64，PowerPC，SPARC和ARM处理器生成代码，这些操作系统包括Win32，Win64，Linux，FreeBSD，Mac OS和Mac OS X（包括Xcode集成工具）。除了命令行用法，几个开发环境可用于Free Pascal，尤其是Lazarus IDE。
 （GCC的一个分离分发部分）在正式地不针对Pascal的CodeGear方言的同时，它包含一个Borland Pascal兼容模式，非常慢地纳入一些Delphi语言的特性。它不适于直接重编译Delphi代码的巨大的体，值得注意地是为操作系统和硬件架构提供了丰富的支持。
 是一个兼容x86 32位Turbo Pascal和Delphi的编译器，主要针对OS/2和Windows，虽然它也开发了一个DOS+ 扩展器和一个实验性的Linux交叉编译器。该编译器的开发在大约Delphi V2层次时停止了；它的站点从2007年关闭，Virtual Pascal的开发也停止了。
 （正式地称作Chrome）是一个Object Pascal编译器，来自于整合进Microsoft Visual Studio的。它也可用作本地运行在CLI上的自由命令行编译器。它针对.NET和Mono平台。
 是一个生成J2ME字节代码的手机应用开发工具。
 是一个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也引进了包括泛型的许多其它特性。

参见 
 Borland Kylix
 编程语言比较
 Free Pascal
 Hello world程序

参考

外部链接

Embarcadero 
 Embarcadero Delphi
 .NET的Embarcadero Delphi Prism
 Delphi 2006和Delphi 2007里的新语言特性 
 Delphi基础——自由源代码
 关于Delphi社区 
 Delphi Wiki
 Torry的Delphi页面 
 Delphi教程 
 俄罗斯Delphi俱乐部 
 Object Pascal风格指南

RemObjects Software 
 RemObjects Oxygene主页 
 RemObjects Oxygene官方Wiki 
 RemObjects Oxygene开发人员资源、文章和视频

Object Pascal介绍 
 Delphi初学者 
 Delphi初学者信息收集web站点
 探索Delphi
 MacTech 1985年12卷第2期

Delphi社区 
 Delphi基础论坛，教程和示例 
 Delphi页面 
 Torry的Delphi页面 
 初学者的自由Delphi源代码 
 About.com的Delphi编程 
 Merlin的Delphi锻造

Free Pascal的Object Pascal参考指南 
 当前版本的Object Pascal参考指南（PDF）
 当前版本的Object Pascal参考指南（html） 
 Free Pascal对Mac Pascal扩展状态页面

Object Pascal工具 
 MSEide+MSEgui 
 Lazarus IDE 
 Powtils Web Kit

GNU Pascal 
 GNU Pascal（GPC）信息 
 GPC与Mac Pascal的区别页面

paxCompiler 
 嵌入式Pascal编译器

WDSybil 
 WDSybil主页 

Pascal语言家族
面向对象的编程语言
Borland軟體
1986年建立的程式語言