なぜロジックプログラミング(ではない)ですか?


13

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

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

回答:


8

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

広く採用されていないという私の推測は次のとおりです。

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

「プロローグの「アプリケーション」は、他の世界と対話する別のアプリケーションにラップする必要があります。」それは実際私たちにとって機能でした。インターフェースが非常にシンプルだったため、プロローグビットをより簡単に分離できました。
S.Lott

@ S.Lott:わかりました。可能性としては肯定的かもしれませんが、私が学校にいて、実際にPrologでアプリケーションを作成したいと思ったとき、作品間の配管と配線が大きな挑戦と障害であることがわかりました。
FrustratedWithFormsDesigner

5

パーサーの構築に使用しました。lex / yaccよりも作業が簡単でした。

検出可能な業界で使用されていないのはなぜですか?

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

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

事実が必要な場合は、Meridian Softwareにプロローグの提供について問い合わせてください。

しかし、私が経験した参入にはいくつかの障壁があります。

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

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

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

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

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

このような曖昧な思考は、プロローグであなたを困らせます。


2

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

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

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

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