回答:
アカデミア以外では... AIで、時にはゲームで使用されることを聞いたことがあります(Black&WhiteシリーズでAIを動かしたと聞きました)。特定のビジネスや経済シミュレーションのためにルールエンジンを実行するために使用されるバリエーションについても聞いたことがあります。
広く採用されていないという私の推測は次のとおりです。
パーサーの構築に使用しました。lex / yaccよりも作業が簡単でした。
検出可能な業界で使用されていないのはなぜですか?
これは答えられません。「検出可能」とはどういう意味ですか?誰が検出メモを取得する必要がありますか?
http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp
事実が必要な場合は、Meridian Softwareにプロローグの提供について問い合わせてください。
しかし、私が経験した参入にはいくつかの障壁があります。
まず、プロローグは遅くなる可能性があります。候補ルールが多数あり、検索スペースを制限する単純なカット操作がない場合、何かを完了するには時間がかかることがあります。
第二に、プロローグは手続き的でも機能的でもないため、多くのプログラマーがプロローグの使用をためらっています。(興味深いことに、一部のプログラマーもSQLの使用をためらっています。その点については、一部のプログラマーはしぶしぶSQLを使用し、結合操作を避けたり、COUNT(*)
魔法のように効率が悪いと主張するなどの奇妙なことをします。)
第三に、プロローグには、さまざまなケースが何であるかについてかなり明確な思考が必要です。手続き型プログラミングはだらしなくても、確実に動作します。実行不可能なステートメントも受け入れられます。
以下はほとんどのサークルで受け入れられます。
b = a + 1
if a > b: # always False
このような曖昧な思考は、プロローグであなたを困らせます。
1つの問題は、Prologが実際に1次述語論理でプログラミングされていないことであり、これは計算的に扱いにくいです(私はどの程度覚えていませんが、NPではありませんし、それに算術を追加すると正式に決定できません)。したがって、それは単純化です。
論理では、命題は真であると証明されるか、偽であると証明されるか、どちらの方法でも証明されないことがあります。プロローグは証明されているだけであり、証明されていない。「証明されていない」とは、通常、偽を意味する。さらに、Prolog句の順序は実行に影響する可能性がありますが、論理句の場合はそうではありません。私がそれを使ったコースで、私はPrologを論理的な言語というよりもパターンマッチング言語として考え始めました。
したがって、Prologプログラミングは、Prolog言語自体ほど論理的な正確さに依存しません。いくつかの点で便利な言語ですが、主流にはほど遠いものであり、C ++のような言語のツールやコミュニティの利点はありません。