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 date=20200918225914 用于为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 的支持最终变成了一个独立产品叫做Oxygene (见下)。- Borland Kylix是Delphi的Linux变种，仅针对使用Qt的Intel 32位Linux。它不再更新了。现代分发通常不运行于其箱体外。- Free Pascal是一个命令行编译器，目标是与Turbo Pascal和Delphi方言的核心特性集的源兼容性。现在的版本，2.2是高兼容Delphi 6或7。date=August 2009 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的开发也停止了。- Oxygene（正式地称作Chrome）是一个Object Pascal编译器，来自于整合进Microsoft Visual Studio的。它也可用作本地运行在CLI上的自由命令行编译器。它针对.NET和Mono平台。- 是一个生成J2ME字节代码的手机应用开发工具。- 是一个Palm OS的基于Pascal的IDE。

**解释器**
Pascal Script date=20191019010635 （正式地称作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中此处应加上或者，否则不识别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里的新语言特性 date=20100317123638 -  Delphi基础——自由源代码-  关于Delphi社区 date=20180613204120 -  Delphi Wiki-  Torry的Delphi页面 date=20200918220613 -  Delphi教程 date=20090822100457 -  俄罗斯Delphi俱乐部 date=20200803084947 -  Object Pascal风格指南 date=20090129143416 

**RemObjects Software**
  RemObjects Oxygene主页 date=20101105012730 -  RemObjects Oxygene官方Wiki date=20100325210353 -  RemObjects Oxygene开发人员资源、文章和视频

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

**Delphi社区**
  Delphi基础论坛，教程和示例 date=20180208200230 -  Delphi页面 date=20200317220337 -  Torry的Delphi页面 date=20200918220613 -  初学者的自由Delphi源代码 date=20100106194429 -  About.com的Delphi编程 date=20100107181054 -  Merlin的Delphi锻造 date=20091214205509 

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

**Object Pascal工具**
  MSEide+MSEgui date=20101111150448 -  Lazarus IDE date=20100105020535 -  Powtils Web Kit date=20080908074115 

**GNU Pascal**
  GNU Pascal（GPC）信息 date=20041102054016 -  GPC与Mac Pascal的区别页面 date=20081215141335 

**paxCompiler**
  嵌入式Pascal编译器 date=20180307091643 

**WDSybil**
  WDSybil主页 date=20200212174135