Prolog実装の比較

初期のPrologシステムのタイムライン(ISO標準まで)

以下のProlog実装の比較は、Prologコンピュータプログラミング言語の異なる実装における相対的な機能セットとパフォーマンスの参考となります。最も重要なPrologシステムに関する包括的な議論は、ジャーナル『 Theory and Practice of Logic Programming (TPLP) 』のProlog50周年記念号に掲載された記事に掲載されています[1]

携帯性

Prologの遺産。
濃い灰色の背景のシステムはサポートされていません。矢印はシステムの影響とインスピレーションを示しています。凡例:JIT = 「Just in Time Compiler」、JVM = 「Java Virtual Machine」、TOAM = 「Tree-Oriented Abstract Machine」

Prologの実装には根本的に異なるものがあり、構文や意味論が異なります(Visual Prologなど)[2]。また、さまざまな実装を中心にサブコミュニティが形成されてきました。[2]

ISO-Prologコア言語に厳密に準拠したコードは、ISO準拠の実装間で移植可能です。しかし、モジュールに関するISO標準は、ほとんどのPrologシステムで完全には採用されていない拡張機能です。[2] [1]

移植性に悪影響を与える要因としては、有界整数演算と非有界整数演算の使用、文字列オブジェクトなどの追加型、高度な数値型(有理数、複素数)、Unicode、スレッド、テーブル化などの機能拡張などが挙げられる。[3] 他の実装では利用できないライブラリの使用とライブラリ構成:[2]

現在、述語がライブラリやシステム組み込みに分散されている方法は大きく異なります。[...] 幸いなことに、同じ名前でありながら異なる意味を持つ述語が見つかるケースはほとんどありません (例delete/3)

主な特徴

プラットフォーム特徴ツールキットPrologの仕組み
名前OSライセンス
ネイティブグラフィックス
コンパイルされたコード
ユニコード
オブジェクト指向
ネイティブOS制御
スタンドアロン実行ファイル
Cインターフェース[a]
Javaインターフェース[a]
インタラクティブ通訳
デバッガ
コードプロファイラー
構文
アレグロプロローグ[4]UnixWindowsMac OS X独自仕様(限定無料版あり)はいはいはいはい、Lisp経由ですはいはい、Lisp経由ですはい、Lisp経由ですはいはいはい、Lisp経由ですS式。完全なCommon Lisp統合。
BプロローグUnixWindowsMac OS X独自仕様(非商用利用は無料)はいはいはいはいはいはいはいはいはいはいISO-Prolog、イベント処理、CLP(FD)、およびテーブル化
チャオUnixWindowsMac OS XGPLLGPLはいはいはいはいはいはいはいはいはいISO-Prologと拡張機能
DOS-Prolog [5]MS-DOS独自のはいはいはいはいはいはいエディンバラ・プロローグ
日食LinuxWindowsSolarismacOSMPLはいはいはいはいはいはいはい拡張Prolog、マルチ方言(ISOを含む)
GNUプロローグUnixWindowsMac OS XGPLLGPLはいはいはいはいはいはいISO-Prolog
JIProlog [6]JVMAndroidAGPL(商用サポートあり)はいはいはい、Java経由はいはい、Java経由はいはいはいISO-Prolog
JLog [7]JVMGPLはいはいはいはいISO-Prolog
JScriptLog [7]ウェブブラウザGPLはいISO-Prolog
jTrolog [8]JVMLGPLはいはいはいはいISO-Prolog
WIN-Prolog [9]ウィンドウズ独自のはいはいはいはいはいはいはいはいはいはいはい拡張版エディンバラプロログ
オープンプロローグ[10]Mac OSシステム 7フリーウェアはい
ポップログプロローグLinux(32ビットおよび64ビット)、UnixWindows無料のオープンソースLinuxではPOP-11経由のみはいはいはいはいはいはいEdinburgh Prolog(Poplog Common LispおよびPop-11へのインターフェース付き)
スクライアープロローグ[11]LinuxWindowsmacOSBSDライセンスはいはいISO-Prolog
SICStus プロローグUnixLinuxWindowsmacOS独自のはいはいはいはいはいはいはいはいはいはいはいISO-Prolog
ストロベリープロローグ[12]UnixWindowsフリーウェアはいはいはいはいはいISO-Prolog +拡張機能ではない
SWI-PrologUnixLinuxWindowsmacOSBSDライセンスはいはいはいはいはいはいはいはいはいはいISO-Prolog、エディンバラProlog
tuProlog [13]JVMAndroidLGPLはいはいはいはいはいはいISO-Prolog
ビジュアルプロローグウィンドウズフリーウェアはいはいはいはいはいはいはいはいはい
XSBプロローグLinuxWindowsSolarismacOSLGPLはいはいはいはいはいはいはいはいはいISO-Prolog、テーブル化されたWFS
YAP-PrologLinuxWindowsSolarisMac OS XHP-UXGPLまたは Artistic(ユーザーの選択)はいはいはいはいはいはいはいはいISO-Prolog、Edinburgh Prolog、Quintus、SICStus Prologと互換性あり
OS関連ウェブ関連
名前条件付きコンパイルソケットマルチスレッドテーブルHTTPクライアントHTTPサーバーHTMLパーサーRDFトリプルストア
Bプロローグはい
チャオはいはいはいはいはいはいはい
日食はいはいはいはいはい
GNUプロローグはい
WIN-プロローグはいはいはいはい
スクライアープロローグはいはいはいはいはい
SICStus プロローグはいはいはい
SWI-Prologはいはいはいはいはいはいはいはい
ビジュアルプロローグはいはいはいはいはいはい
XSBはいはいはいはいはい
YAP-Prologはいはいはいはい

静的解析

名前型チェッカー決定性チェッカーコールパターンチェッカー
チャオはいはいはい
GNUプロローグ
SICStus プロローグはい
SWI-Prologはい
ビジュアルプロローグはいはいはい
XSB
YAP-Prolog

最適化

名前末尾呼び出し最適化選択ポイント除去環境トリミングジャストインタイムインデックス
チャオはいはいはい?
日食はいはいはい複数引数(コンパイル時)
GNUプロローグはいはいはい
SICStus プロローグはいはいはい
SWI-Prologはいはいはいはい
ビジュアルプロローグはい(コンパイル時)はい(コンパイル時)該当なしN/A (コンパイル時)
XSBはいはいはい?
YAP-Prologはいはいはいはい

リリース

名前バージョン日付
アレグロプロローグ1.1.22018年12月12日
Bプロローグ8.12014年2月23日
JIProlog4.1.7.12021年8月26日
チャオ1.252025年6月21日[14]
DOS-Prolog8.0
日食7.12023年1月1日
GNUプロローグ1.5.02023年2月21日
JLog1.3.62007年9月13日
JScriptログ0.7.5 ベータ版2007年9月10日
jトロログ
WIN-プロローグ8.02022年7月14日
オープンプロローグ
ポップログプロローグV162020年1月6日
スクライアープロローグ0.10.02025年9月27日[15]
SICStus プロローグ4.9.02023年12月18日
ストロベリープロローグ6.12023年8月23日
SWI-Prolog9.3.282025年8月8日[16]
tuProlog2P-Kt 1.0.42024年5月26日[17]
ビジュアルプロローグ10、ビルド10002021年4月15日
XSBプロローグ5.02022年5月15日
YAプロローグ7.1.02020年12月19日

ベンチマーク

  • ベンチマークの問題:奇妙なPrologベンチマーク、パフォーマンスの違い。[18]
  • ベンチマークソフトウェア:古いもの、Dobry's Benchmarks、Aquariusベンチマークスイート、(Bothe、1990)、[19](Demoen et al. 2001)、ベンチマークの説明
  • ベンチマーク結果: B-Prolog、SICStus、XSB、[20] SICStus vs Yap vs hProlog [21]
  • ベンチマーク結果: Michael Zeising による Java Prolog エンジンの調査
  • ベンチマーク結果: OpenRuleBench ルールエンジンの年間オープンソースベンチマーク

注記

  1. ^ ab C/Java インターフェースはグラフィックスや OS 制御にも使用できます。

参考文献

  1. ^ フィリップ・ケルナー氏;マイケル・ロイシェル;ジョアン・バルボーサ。ビトール・サントス・コスタ。ヴェロニカ・ダール。マヌエル・V・エルメネジルド。ホセ・F・モラレス。ヤン・ヴィーレメーカー;ダニエル・ディアス;サルバドール・アブレウ。 Giovanni Ciatto (2022 年 11 月)、「Fifty Years of Prolog and Beyond」、論理プログラミングの理論と実践22 (6): 776–858doi : 10.1017/S1471068422000102hdl : 10174/33387
  2. ^ abcd Wielemaker, J.; Costa, VTS (2011). 「Prologアプリケーションの移植性について」.宣言型言語の実践的側面. コンピュータサイエンス講義ノート. 第6539巻. pp.  69– 83. CiteSeerX 10.1.1.1030.9396 . doi :10.1007/978-3-642-18378-2_8. ISBN  978-3-642-18377-5
  3. ^ Jan WielemakerとVıtor Santos Costa: Prologプログラムの移植性:理論とケーススタディ。CICLOPS-WLPEワークショップ2010。Wayback Machineに2010年7月16日にアーカイブ。
  4. ^ アレグロ プロローグ
  5. ^ "DOS-Prolog 8.0". Logic Programming Associates . 2023年11月5日.
  6. ^ JIProlog
  7. ^ ab "JLogホームページ". jlogic.sourceforge.net . 2023年11月3日閲覧
  8. ^ “Jtrolog — Java.net”. 2012年11月13日. 2012年11月13日時点のオリジナルよりアーカイブ2023年11月3日閲覧。
  9. ^ "WIN-Prolog 8.0". Logic Programming Associates . 2023年11月5日.
  10. ^ Prologホームページを開く
  11. ^ スクライアープロローグ
  12. ^ ストロベリープロローグ
  13. ^ tuProlog
  14. ^ https://github.com/ciao-lang/ciao
  15. ^ https://github.com/mthom/scryer-prolog
  16. ^ https://github.com/SWI-Prolog/swipl-devel/tags
  17. ^ https://github.com/tuProlog/2p-kt/releases
  18. ^ B. Demoen、P. Nguyen、「Prolog 実装間の不要なパフォーマンスの違いについて」、制約および論理プログラミングシステムの実装に関するコロキウムの議事録 (CICLOPS 2001)
  19. ^ Bothe, K. (1990). 「Prolog空間ベンチマークスイート」. ACM SIGPLAN Notices . 25 (12): 54– 60. doi : 10.1145/122193.122197 .
  20. ^ XSBパフォーマンスの概要(1993)
  21. ^ Demoen, B.; Nguyen, PL; Vandeginste, R. (2002). 「WAM におけるコピーガベージコレクション:マークするべきか、しないべきか?」.論理プログラミング. コンピュータサイエンス講義ノート. 第2401巻. pp.  194– 208. CiteSeerX 10.1.1.13.2586 . doi :10.1007/3-540-45619-8_14. ISBN  978-3-540-43930-1
  • Ulrich Neumerkel による Prolog システムの概要
  • 適合性評価 I: 構文
「https://en.wikipedia.org/w/index.php?title=Comparison_of_Prolog_implementations&oldid=1325355925」より取得