跳至內容

SWI-Prolog

出自Taiwan Tongues 繁中維基
這是此頁批准,以及是最近的修訂。

SWI-Prolog 是 Prolog 程式語言的一種免費實作,常用於教學和語義網應用。它具有豐富的功能、用於約束邏輯程式設計的函式庫、多執行緒、單元測試、GUI、與 Java、ODBC 等的介接、文學編程、網頁伺服器、SGML、RDF、RDFS、開發者工具(包括附有圖形介面除錯器和圖形介面效能分析器的 IDE),以及詳盡的文件。

SWI-Prolog 可在 Unix、Windows、Macintosh 和 Linux 平台上執行。

SWI-Prolog 自 1987 年以來一直持續開發。其主要作者是 Jan Wielemaker。

SWI 這個名字源自「社會科學資訊學」(Social Science Informatics),這是阿姆斯特丹大學一個團體的舊稱,Wielemaker 在發起 SWI-Prolog 開發時正任職於此。

執行模型

SWI-Prolog 並非基於 Prolog 的沃倫抽象機(Warren Abstract Machine)執行模型。

相反地,它基於 ZIP 虛擬機的擴充版本,這是一種 Prolog 的最小虛擬機,實作了一種僅由七個指令組成的簡單語言。SWI-Prolog 的特定擴充旨在透過多種方式提升效能:引入特定指令以支援合一(unification)、謂詞調用、一些常用的內建謂詞、算術、控制流程以及失敗即否定。Prolog 可以輕易地編譯成這種語言,而抽象機碼也很容易反編譯回 Prolog。此特性常被用於交錯執行編譯碼和解譯碼。

約束邏輯程式設計

約束邏輯程式設計功能在 SWI-Prolog 的發展歷程中出現得相當晚,因為它缺乏基本的支援。這種情況在 2004 年初發生了改變,當時屬性變數被加入到該語言中。魯汶大學的 CHR 函式庫隨後成為第一個被移植到 SWI-Prolog 的 CLP 函式庫。我們還可提及 SWI-Prolog 的 INCLP(R) 函式庫(De Koninck et al. 2006),它提供了對實數的非線性約束,並在 CHR 之上實作。後來又移植了 Christian Holzbaur 的 CLP(QR) 函式庫和一個有限域 CLP(FD) 求解器。最後,還增加了一個布林 CLP(B) 求解器。

SWI-Prolog 的擴充功能

SWI-Prolog 安裝時附帶一個基於定式子句文法的網路框架。 SWI-Prolog 的查詢可以透過 Pengines 系統分佈在多個伺服器和網頁上。

XPCE

XPCE 是一個為 SWI-Prolog、Lisp 及其他互動式和動態型別語言設計的跨平台物件導向 GUI 工具包。雖然 XPCE 的設計初衷是語言無關的,但它主要在 Prolog 社群中受到歡迎。XPCE 圖形工具包的開發始於 1987 年,與 SWI-Prolog 同期。 它支援按鈕、選單、滑桿、分頁和其他基本的 GUI 小工具。XPCE 可在所有 SWI-Prolog 支援的平台上使用。

PceEmacs 是 SWI-Prolog 的內建編輯器。PceEmacs 是一個用 Prolog(和 XPCE)實作的 Emacs 複製品。它支援適當的縮排、語法高亮、透過呼叫 SWI-Prolog 解析器進行完整的語法檢查、對單一變數發出警告,以及根據 Prolog 資料庫中的原始碼資訊尋找謂詞定義。

介面

JPL 是 Java 和 Prolog 之間的雙向介面。它需要 SWI-Prolog 和 Java SDK。它作為 SWI-Prolog 的一部分進行安裝。

參見

  • Prolog
  • Prolog 實作的比較
  • Prolog 語法與語義

參考資料

外部連結

Category:自由及開放原始碼編譯器 Category:Prolog 程式語言家族 Category:約束程式設計 Category:整合式開發環境 Category:以 C 語言編寫的自由軟體 Category:以 Prolog 語言編寫的自由軟體 Category:跨平台自由軟體 Category:使用 BSD 授權條款的軟體 Category:使用 GNU 寬通用公共許可證的軟體