web-dev-qa-db-ja.com

なぜ論理プログラミングではないのですか?

ソフトウェア業界での論理プログラミング言語(Prologなど)の使用についてはまだ聞いたことがなく、趣味のプログラミングやオープンソースプロジェクトでの使用についても知りません。それ(プロローグ)はある程度学術的な言語として使われています(なぜそれが学界で使われているのですか?)。

これは、なぜ論理プログラミングを使用する必要があるのか​​、なぜ使用しないのか疑問に思います。検出可能な業界での使用が行われないのはなぜですか?

13
Anto

アカデミア以外では... AIで使用されることや、ゲームで使用されることを聞いたことがあります(Black&WhiteシリーズでAIを駆り立てたと聞いています)。特定のビジネスや経済シミュレーションのルールエンジンを実行するために使用されるバリエーションについても聞いたことがあります。

広く採用されていないのではないでしょうか。

  • 奇妙なことです。ほとんどの人はそのプログラミングに慣れておらず、他の言語で必要なことを実行できます。
  • ベンダーサポートの欠如-Microsoftが突然(.NETライブラリとツールセットの完全な重みとその背後にある正式なサポートを含む)Prolog#をThe Next Big Thingとしてプッシュし始めた場合-そして、IBMとOracleが競合するものを思いついたと思いますそれがピックアップされるのを見ます!
  • 統合の欠如-Prologで使用できるライブラリーがわかりません-最後に、グラフィックまたはネットワークライブラリーが多くないことを確認しました。つまり、Prologの「アプリケーション」を、他のアプリケーションとやり取りする別のアプリケーションにラップする必要があります。世界。

パーサーの作成に使用しました。 Lex/yaccよりも操作が簡単でした。

検出可能な業界での使用法がないのはなぜですか?

これは答えられません。 「検出可能」とはどういう意味ですか?誰が検出メモを入手する必要がありますか?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

事実が必要な場合は、メリディアンソフトウェアにプロローグの提供について質問してください。

しかし、私が経験したエントリにはいくつかの障壁があります。

まず、プロローグは遅くなる可能性があります。多くの候補ルールがあり、検索スペースを制限する単純なカット操作がない場合、何かが完了するまでに時間がかかることがあります。

第二に、プロローグは手続き的でも機能的でもないので、多くのプログラマーはプロローグを使いこなします。 (興味深いことに、一部のプログラマーもSQLの使用に頭を悩ませています。そのために、一部のプログラマーはしぶしぶSQLを使用して、結合操作を回避するなどの奇妙なことを行うか、COUNT(*)が魔法のように非効率的であると主張します。)

第三に、プロローグはさまざまなケースが何であるかについてかなり明確な思考を必要とします。手続き型プログラミングはだらしがなくても確実に機能します。実行不可能なステートメントは許容されます。

以下は、ほとんどのサークルで受け入れられます。

b = a + 1
if a > b: # always False

この種のあいまいな考えは、プロローグであなたを困らせます。

5
S.Lott

1つの問題は、Prologが実際には一次述語ロジックでプログラミングされていないことです。これは計算上扱いにくいです(どの程度かは覚えていませんが、NPにはありません。算術を追加すると、正式に決定できなくなります)。したがって、これは単純化です。

論理的には、命題は真であるか、偽であるか、どちらの方法でも証明されないことが証明されます。 Prologは証明されただけで証明されていません。「証明されていない」とは通常、偽を意味します。さらに、Prolog句の順序は実行に影響する可能性がありますが、論理句の場合はそうではありません。私がそれを使用したコースで、私はプロローグを論理的な言語というよりもパターンマッチング言語として考え始めました。

したがって、Prologプログラミングは、Prolog言語自体ほど論理的な正確さに依存しません。いくつかの点で有用な言語ですが、主流にはほど遠く、C++のような言語のツールやコミュニティーの利点もありません。

2
David Thornley