Prologでルールエンジンが作成されないのはなぜですか?[閉まっている]


16

私がPrologで見たことから、アプリのルールエンジンを作成するのに理想的であるように思えます。それでも、Prologで記述されたルールエンジンを見たことはありません。Prologには、ルールエンジンの構築に使用できないような固有の制限(ガベージコレクションアルゴリズムなど)がありますか?


7
はしご。(ほとんど)プロローグを知っている人はいません。さらに多くの開発者は、家に帰れるように毎日の仕事を終わらせないものを知りたくありません。残念ながら、プロローグはかなりクールです。
ジミーホッファ

3
プロローグは素晴らしいEDSLになります。Haskellのかスキームのような言語でプロローグを埋め込むと、私は通常取るアプローチである
ダニエルGratzer

3
@JimmyHoffaそれは減少しています。一部の人はプロローグを学習し、その後、プロローグを残りの仕事で積極的に忘れようとします。
-ZJR

5
私は3票を投票します-誰が質問の何が間違っているのか教えてくれるので、私はそれを修正するか撤回するでしょうか?
オノリオカテナッチ

2
私は「主に意見に基づく」として閉会することに投票しました。そうでなければ私を納得させることができるなら、私は私の近い投票を撤回します。私は個人的にプロローグが不透明であると感じました。ルールエンジンには、ルールを定義するためのより直感的な構文が必要です。そして、それプログラミング言語であり、ルールエンジン自体の構文プロトタイプではありません。
ロバートハーベイ

回答:


15

まだ初期のルールエンジンは、ほぼ排他的にPrologで記述されていました。これは論理的な言語でした。少数のルールに対して、彼らは素晴らしい働きをしました。ただし、拡張性があまりよくないことがわかりました。明確なリファレンスはありませんが、私の理解では、Prologがルールのチェーンを処理する方法は非効率的です-再帰モデルは、クロールをもたらす非常に大きなスタックを作成するために作成されました。

RETEアルゴリズムとその後続バージョンの開発により、大量のルールをより効率的に処理できるようになり、引き継がれました。

おそらく、現代のプロローグは、初期の作業の大部分が行われた80年代に遡るよりも効率的でしょう。




クレイジーな質問。人々はプロローグでRETEを実装しませんでしたか?(RETEがプロローグでやらないことはたくさんあります)。
user48956

14

舌の答え:ルールエンジンの作成者がProlog(またはMercuryまたはPLANNERなど)を知っていれば、ルールエンジンを作成しないので、Prologを使用することになります。


5

一般に、ルールエンジンのポイントは、それが別のアプリケーションの一部であることです。Prologで記述されたアプリケーションを見るのはかなりまれであり、Prologを他の言語で記述されたアプリケーションに接続するための一般的に利用可能なインターフェースはありません。

ルールエンジン用のルールベースのツールの1つは、他のアプリケーションに追加されるように作成されており、CLIPSです。CLIPSはOPS5に基づいており、プルーニングルールにReteアルゴリズムを使用します。


完全に真実ではありませんが、外部プログラムからPrologコードへのインターフェースがいくつかあります。SWI-PrologはC ++インタフェース及びR.に接続する方法有する
ルドルフオラー

3
実際、「nobody」は完全なアプリにProologを使用するため、私が見たすべてのprologエンジンはCまたはC ++で動作しますが、「everybody」はC関数を呼び出して特殊なライブラリを呼び出す方法を使用します。すなわち、GNU Prolog gprolog.univ-paris1.fr/manual/html_node/gprolog065.html
johannes

そのポインター@johannesに感謝します。私はGNU Prologをまったく知りませんでした。Cから呼び出すことができるという事実よりはるかに少ない
オノリオカテナッチ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.