| 原作者 | ヤン・ヴィーレメーカー |
|---|---|
| 開発者 | ヤン・ヴィーレメーカー、アンジョ・アンイェヴィエルデン 他 |
| 初回リリース | 1987年 |
| 安定リリース | 9.2.2 [1]
/ 2024年2月29日 |
| プレビューリリース | 9.3.2 / 2024年2月29日 |
| リポジトリ |
|
| 書かれた | C、プロローグ |
| オペレーティング·システム | クロスプラットフォーム |
| 利用可能 | 英語 |
| タイプ | 論理プログラミング |
| ライセンス | 簡易 BSD、LGPLバージョン 7.3.33 以前 |
| Webサイト | swi-prolog.org |
SWI-Prologは、教育やセマンティック Webアプリケーションでよく使用されるプログラミング言語Prologの無料実装です。豊富な機能、制約論理プログラミング用のライブラリ、マルチスレッド、ユニット テスト、GUI 、 JavaやODBCなどへのインターフェイス、文芸プログラミング、Web サーバー、SGML、RDF、RDFS、開発者ツール ( GUIデバッガーと GUIプロファイラーを備えたIDEを含む)、および広範なドキュメントを備えています。
SWI-Prolog は、 Unix、Windows、Macintosh、Linuxプラットフォームで動作します。
SWI-Prolog は 1987 年以来継続的に開発されています。主な作者はJan Wielemakerです。
SWIという名前は、アムステルダム大学のグループの旧名であるSociaal-Wetenschappelijke Informatica (「社会科学情報学」)に由来しています。Wielemakerは、SWI-Prologの開発を開始したときにアムステルダム大学に勤務していました。[2]このグループの名前はHCS (Human-Computer Studies)に変更されました。
実行モデル
SWI-Prolog は、Prolog のWarren Abstract Machine実行モデルに基づいていません。
代わりに、ZIP仮想マシンの拡張バージョンに基づいています。ZIP仮想マシンは、Prolog用の最小限の仮想マシンで、7つの命令のみで構成される単純な言語を実装しています。SWI-Prolog固有の拡張機能は、いくつかの方法でパフォーマンスを向上させることを目的としています。アドホック命令が導入され、ユニフィケーション、述語呼び出し、頻繁に使用される組み込み述語、算術、制御フロー、および失敗としての否定がサポートされています。Prologはこの言語に簡単にコンパイルでき、抽象マシンコードは簡単にPrologに逆コンパイルできます。この機能は、コンパイルされたコードと解釈されたコードの実行をインターリーブするためによく使用されます。[3]
制約論理プログラミング
制約論理プログラミング機能は、基本的なサポートが不足していたため、SWI-Prolog の寿命のかなり遅い時期に登場しました。[4]これは、属性変数が言語に追加された 2004 年の初めに変更されました。Leuven CHR ライブラリは、当時 SWI-Prolog に移植された最初の CLP ライブラリでした。ここでは、実数に対する非線形制約を提供し、CHR 上に実装された SWI-Prolog の INCLP(R) ライブラリ (De Koninck 他 2006) について言及します。その後、Christian Holzbaur の CLP(QR) ライブラリと有限領域 CLP(FD) ソルバーが移植されました。最後に、ブール CLP(B) ソルバーが追加されました。[5]
SWI-Prolog の拡張
SWI-Prologは、定節文法に基づくWebフレームワークとともにインストールされます。[6] SWI-Prologクエリは、Penginesシステムを通じて複数のサーバーとWebページに分散される場合があります。[7]
XPCE
XPCEは、 SWI-Prolog、Lisp、その他の対話型および動的型付け言語用の、プラットフォームに依存しないオブジェクト 指向[8] GUIツールキットです。XPCEは言語に依存しないように設計されていますが、主にPrologで人気を博しました。XPCEグラフィックツールキットの開発は、1987年にSWI-Prologとともに開始されました。ボタン、メニュー、スライダー、タブ、その他の基本的なGUIウィジェットをサポートしています。XPCEは、SWI-Prologがサポートするすべてのプラットフォームで利用できます。
PceEmacsは SWI-Prolog 組み込みエディタです。PceEmacsはProlog (および XPCE) で実装されたEmacsクローンです。適切なインデント、構文の強調表示、SWI-Prologパーサーの呼び出しによる完全な構文チェック、シングルトン変数の警告、および Prolog データベースのソース情報に基づく述語定義の検索をサポートします。
インターフェース
JPLはJavaとProlog間の双方向インターフェースです。[9] SWI-PrologとJava SDKの両方が必要です。[10] SWI-Prologの一部としてインストールされます。
参照
参考文献
- ^ 「リリース V9.2.2」。
- ^ https://www.linkedin.com/in/jan-wielemaker-6a270a1b3/ [裸のURL ]
- ^ ケルナー、フィリップ;ロイシェル、マイケル。バルボサ、ジョアン。コスタ、ビトール・サントス。ダール、ベロニカ。エルメネジルド、マヌエル V.モラレス、ホセ F.ヤン・ヴィーレメーカー;ディアス、ダニエル。アブレウ、サルバドール。シアット、ジョバンニ (2022)。 「プロローグの50年とその先へ」。論理プログラミングの理論と実践。22 (6): 776–858。土井:10.1017/S1471068422000102。hdl : 10174/33387。ISSN 1471-0684。 この記事には、CC BY 4.0 ライセンスの下で利用可能なこのソースからのテキストが組み込まれています。
- ^ Jan Wielemaker、Tom Schrijvers、Markus Triska、Torbjörn Lager: SWI-Prolog。 TPLP 12(1–2): 67–96 (2012)。
- ^ Markus Triska: SWI-Prolog のブール制約ソルバー (システムの説明)。FLOPS 2016: 45–61。
- ^ Wielemaker, Jan; Huang, Zhisheng; van der Meij, Lourens (2008). 「SWI-Prolog と Web」(PDF) .論理プログラミングの理論と実践. 8 (3): 363–392. doi :10.1017/S1471068407003237. S2CID 5404048.
- ^ Wielemaker , Jan; Lager, Torbjorn (2014 年 5 月 14 日)。「Pengines: WebLogic Programming Made Easy」。論理プログラミングの理論と実践。14 (特別号 4 ~ 5): 539 ~ 552。arXiv : 1405.3953。doi : 10.1017 / S1471068414000192。S2CID 9949345 。
- ^ XPCE/Prolog でのプログラミング。
- ^ Paul Singleton、Fred Dushin、Jan Wielemaker (2004 年 2 月)。「JPL: 双方向 Prolog/Java インターフェース」。SWI -Prolog。
- ^ Paul Singleton (2004 年 2 月). 「JPL 3.x のインストール」. SWI-Prolog .
外部リンク
- 公式サイト
