Difference between revisions of "Overview of Free Pascal and Lazarus/zh TW"

From Free Pascal wiki
Jump to navigationJump to search
(New page: {{Overview of Free Pascal and Lazarus}} Free Pascal (FPC)是一個開放原始碼的Pascal程式語言編譯器,它有兩個值得一提的特色: 和Delphi有高度的相容性,...)
 
Line 1: Line 1:
 
{{Overview of Free Pascal and Lazarus}}
 
{{Overview of Free Pascal and Lazarus}}
  
Free Pascal (FPC)是一個開放原始碼的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 (FPC)是一個開放原始碼的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的)
 
Free Pascal也包含了特定作業系統所需要的特定單元檔,例如Windows, ShellAPI, BaseUnix, Unix以及DynLibs,有了這些特定作業系統所須的單元檔,程式人員可以更輕鬆的使用各種不同作業系統上面的特有功能。這數以十計的單元檔跟函式庫,構成了Free Pascal的核心,也統稱為Free Pascal的Run-Time Library。 (RTL,中文或可翻成執行時期函式庫,但我個人是習慣叫RTL的)

Revision as of 08:13, 22 February 2008

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程式語言編譯器,它有兩個值得一提的特色: 和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控制項極為相似的許多元件,例如Form, Button, Text box等在製作視窗應用程式的時候常用的元件。

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

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


命令模式應用程式

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

在Windows模式下,命令提示字元已經被獨立分離出來成為一個視窗程式,所以在Windows模式下,可以同時有多個命令提示字元的視窗。而在OS X跟Linux底下,命令提示字元則被描述為終端機視窗。命令模式的應用程式包含有: Windows FC(File Compare檔案比對工具),以及Unix的cd跟cp指令。命令模式應用程式也能提供複雜的計算、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作業系統),就可以透過重新編譯,拿到其他平台上面使用(例如OS X或Linux),而不用變更任何程式碼或者表單上面的設計。