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