Overview of Free Pascal and Lazarus/zh TW

From Lazarus wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) 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),而不用變更任何程式碼或者表單上面的設計。

貢獻者及修改