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）。
* 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。
* GNU Pascal（GCC 的一個分離分發部分）在正式地不針對 Pascal 的 CodeGear 方言的同時，它包含一個 Borland Pascal 兼容模式，非常慢地納入一些 Delphi 語言的特性。它不適於直接重編譯 Delphi 代碼的巨大的體，值得注意地是為作業系統和硬體架構提供了豐富的支持。
* Virtual Pascal 是一個兼容 x86 32 位 Turbo Pascal 和 Delphi 的編譯器，主要針對 OS/2 和 Windows，雖然它也開發了一個 DOS+ 擴展器和一個實驗性的 Linux 交叉編譯器。該編譯器的開發在大約 Delphi V2 層次時停止了；它的站點從 2007 年關閉，Virtual Pascal 的開發也停止了。
* Oxygene（正式地稱作 _Chrome_）是一個 Object Pascal 編譯器，來自於整合進 Microsoft Visual Studio 的 RemObjects Software。它也可用作本地運行在 CLI 上的自由命令行編譯器。它針對.NET 和 Mono 平台。
* MIDletPascal 是一個生成 J2ME 字節代碼的手機應用開發工具。
* PocketStudio 是一個 Palm OS 的基於 Pascal 的 IDE。

## 解釋器

Pascal Script（正式地稱作 InnerFuse）是一個開源的用 Delphi 編寫的 Object Pascal 解釋器 / 腳本引擎。支持有限的 Object Pascal 子集。

## "Hello World" 程序樣本

### Apple 的 Object Pascal

### Turbo Pascal 的 Object Pascal

在 Delphi 和 Free Pascal 里仍然支持這種 Object Pascal。FPC 也將自己的（這種 Object Pascal）庫 / 單元的替代品打包。Delphi 不這樣做。Free Pascal 1.0 系列和 FPC 文本模式 IDE 是這種方言的最大的開發代碼庫。Free Pascal 2.0 以更類似 Delphi 的方言重寫了。

### Delphi 和 Free Pascal 的 Object Pascal

注意，對象構建器在 Delphi 和 Free Pascal（Delphi 兼容模式）里仍然有效。

### Oxygene 的 Object Pascal

## 進展

通過擴展 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 主頁