Overview of Free Pascal and Lazarus/zh TW

From Lazarus wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) Bahasa Indonesia (id) italiano (it) 日本語 (ja) 한국어 (ko) polski (pl) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

Free Pascal(FPC)是一個開放原始碼的 Pascal 和 Object Pascal 程式語言編譯器,它有兩個值得一提的特色: 和Delphi有高度的相容性,以及在多種作業系統上都可以使用。(包含 Windows,Mac OS X 跟 Linux)Free Pascal 對 Delphi 的相容不只是兩者都支援完全相同的 Object Pascal 程式語言,還包含了許多 Delphi 為世界各地的程式設計人員所稱道的函式庫與各式各樣的類別(Classes),同時它也使用了跟 Delphi 相同的單元名稱,如 System,SysUtils,StrUtils,DateUtils,Classes,Variants,Math,IniFiles 跟 Registry,這些在 Delphi 裡面經常用到的單元檔,以及裡面的各種功能,在 Free Pascal 當中都提供,各種功能的函式也都分別放在跟 Delphi 相同的單元檔名裡面,更棒的是,這些單元跟功能是能夠支援各種作業系統的。

Free Pascal 也包含了特定作業系統所需要的特定單元檔,例如 Windows,ShellAPI,BaseUnix,Unix 以及 DynLibs,有了這些特定作業系統所須的單元檔,程式人員可以更輕鬆的使用各種不同作業系統上面的特有功能。這數以十計的單元檔跟函式庫,構成了 Free Pascal 的核心,也統稱為 Free Pascal 的Run-Time Library。(RTL,中文或可翻成執行時期函式庫,但我個人是習慣叫 RTL 的。)

Lazarus 是一個開放原始碼的應用程式開發系統,它是使用 Free Pascal 編譯器製作出來的,主要是提供一個整合開發環境(IDE),能夠讓程式碼更容易閱讀、協助程式人員偵錯,以及讓程式人員以視覺化的方式開發視窗應用程式。同時這個 IDE 也提供了一個元件庫,能跟 Delphi 的 VCL(視覺元件函式庫)高度相容。

Lazerus 元件函式庫(LCL,原文為 Lazarus Component Library)包含了跟 VCL 控制項極為相似的許多元件,例如表單(forms),按鈕(buttons),文本框(text boxes)等在製作視窗應用程式的時候常用的元件。

Free Pascal 跟 Lazarus 都是使用 Pascal 語言撰寫的,從 Free Pascal 編譯器、Lazarus IDE 以及 Free Pascal RTL 跟 Lazarus LCL 的所有原始程式碼都可以從網路上下載,因為它們都是開放原始碼的專案。

跟 Delphi 相同的是,Free Pascal 跟 Lazarus 都是通用性的程式開發工具,意即您可以透過它們來開發各式各樣的應用程式,包含有:

命令模式應用程式

命令模式的程式不包含圖形化使用者介面(GUI),取而代之的是從命令提示字元(console)下鍵入該應用程式的名稱以執行程式。因此它們會從命令提示字元的命令列讀取輸入值,也從該模式下把資料輸出。

在 Windows 模式下,命令提示字元已經被獨立分離出來成為一個視窗程式,所以在 Windows 模式下,可以同時有多個命令提示字元的視窗。而在 Mac OS X 跟 Linux 底下,命令提示字元則被描述為終端機視窗。命令模式的應用程式包含有 Windows FC(file compare,檔案比對工具),以及 Unix 的 cdcp 指令。命令模式應用程式也能提供複雜的計算、3D 建模或者資料處理等功能,這些功能都不需要炫麗的 GUI,因為這些功能大多都是由其它程式呼叫,或者由批次程式大量執行的(在 Unix/Linux 上面也可能是由 Shell 程式來作的)。

Free Pascal 編譯器跟內含的工具程式幾乎都是命令模式的應用程式,意即這些程式可以從命令模式、批次檔或是由 Lazarus IDE 來呼叫。

您可以用一個簡單的文字編輯器撰寫程式碼,然後用 Free Pascal 編譯器把它變成命令模式的應用程式,不一定非要透過 Lazarus 的 IDE 不可。然而如果您比較習慣 IDE 的整個作業環境,您也可以用 Lazarus 來建立命令模式應用程式的專案,然後在 Lazarus IDE 裡面對這個程式進行編譯。

動態載入函式庫(DLL,dynamically loadable libraries)

動態載入函式庫是把一些常用的功能預先進行編譯,放在同一個函式庫檔案中,如此一來,當別的程式需要使用到這些常用功能時,就可以把它們引入到程式中來使用。

從字面上來解讀,我們也能理解它的原意,這個函式庫在應用程式被進行編譯的時候,是沒有進行連結的,而會等到執行的時候才將之載入到記憶體當中。在 Windows 作業系統裡,這樣的函式庫檔案的副檔名是 .dll (意為動態連結函式庫,原文為 dynamic-link library,或 DLL),而在 Mac OS X 裡面,函式庫程式的副檔名則是 .dylib(意為動態分享函式庫,dynamic shared library)。在 Linux 系統中,函式庫檔案則是用 .so 作為副檔名(表示 shared object library,分享物件函式庫)。

動態載入函式庫則通常作為其它應用程式的附屬品,開發函式庫的目的,主要是要讓其它程式(例如 C 或 C++)可以呼叫,或者將大型專案切割成多個部分,以利分別獨立開發與測試,或者可以重複使用該功能。Windows 本身就是由數百個 DLL 所組成的,其它大型的應用程式,例如 OpenOffice 也是一樣的。

就像在寫命令模式的應用程式一樣,您只需要用純文字編輯器編輯程式碼,再使用 Free Pascal 編譯器就能夠開發函式庫了。當然,如果您習慣 IDE 的開發環境,也可以使用 Lazarus 來建立 Library 專案,效果是一樣的。

在 Windows 作業系統上,DLL 常被誤認為是讓系統複雜跟不穩定的元凶,這種誤解可能是由於在安裝跟 DLL本身運作的規則而來。但是事實上從 DLL 傳入或接收的資訊都是標準而簡單的資料型態(這裡所謂的簡單,是相對於各種語言自定的物件跟結構而言),這個要求也迫使程式人員必須要對他們在處理的資訊更小心。如果處理得宜,會讓所有程式都更穩定,也更容易設計。

圖形介面應用程式

目前我們日常用的應用程式,大多是使用圖形介面的程式,例如 Word,網路瀏覽器,Excel 之類的試算表程式,以及許多程式的開發工具,都屬此類。Lazarus 跟 Delphi 也是全功能的圖形介面應用程式。

當我們在使用 Lazarus 開發圖形介面的應用程式時,我們不只是撰寫了很多 Pascal 的程式碼,也同時把視覺化元件,例如按鈕、表單控制項等等一併規劃好了。Lazarus 跟 Delphi 一樣,在介面的設計上,是直覺式的設計,我們可以直接把控制項放在表單介面上,而這些控制項的屬性也可以從 IDE 或者從程式碼裡面來進行設定或修改。

因為 LCL 的控制元件可以在所有 Lazarus 支援的平台上使用,因此在 A 平台上面開發的程式(例如 Windows 作業系統),就可以透過重新編譯,拿到其他平台上面使用(例如 Mac OS X 或 Linux),而不用變更任何程式碼或者表單上面的設計。

貢獻者及修改