タグ付けされた質問 「prolog」

18
何千ものIF…THEN…ELSEルールをどのように管理できますか?
私はアプリケーションを構築することを検討しています。そのアプリケーションのコアは、数千のif ... then ... elseステートメントで構成されます。このアプリケーションの目的は、あらゆる風景で牛がどのように動き回るかを予測できるようにすることです。彼らは太陽、風、食物源、突然の出来事などの影響を受けます。 このようなアプリケーションはどのように管理できますか?数百のIFステートメントの後、プログラムがどのように反応するかは予測不可能であり、特定の反応につながることをデバッグすると、毎回IFステートメントツリー全体を走査する必要があることを意味すると思います。 ルールエンジンについて少し読みましたが、この複雑さをどのように回避できるかわかりません。

4
PrologがAIプログラミングに適しているのはなぜですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 AIプログラミングに使用されるプログラミング言語を研究しています。私の大学ではLISPがAIプログラミング言語として教えられていることを知っていますが、Prologはめったに教えられません。私はPrologが好きですが、AIプログラマーではないので、PrologがLISP / Schemeよりも優れている理由を自分で判断する資格がないと思います。プログラマーがこのトピックについて何か意見を持っているのではないかと思っていました。 PrologがAIプログラミングにもっと役立つだろうとどのように主張できますか? 私はそれを少し研究していますが、私が何度も見てきた基本的な議論は、思考は論理で提示され、Prologは論理プログラミング言語であるため、Prologは意思決定マシンを簡単に構築できる、またはその効果があるということです。 AIのPrologについて言えることは他にありますか?

4
ビジネスルールエンジンと制約プログラミング言語の関係
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 (おそらく古い)Droolsまたは他のルールエンジンのマニュアルを見ると、その付加価値の例の1つは、Miss Mannersパズル(Droolsのマニュアル)などのパズルを解くことです。現在、このようなパズルはPrologまたは最新のConstraint Programming言語を使用して自然に定式化および解決されており、なぜこの目的にDroolsを使用するのか疑問に思われます。この場合、PrologとCPLが提供する付加価値は、パズルを論理的な述語のセットとして自然に定式化し、ソリューションのスペースを自動的に検索できることです(この点でCPLの方が効率的です)。しかし、Droolsなどの製品の付加価値は何ですか(たとえば、Excelファイルを取得して、それを一連のルールに変換するという付加機能を意味します)。 より具体的には、Prologはバックトラック検索を実装し、CLPは制約伝播を使用したバックトラック検索を実装します。したがって、いわば、個々の変数の空間のデカルト積全体を検索する代わりに、この製品空間の大部分を取り除きます。これがそれらを効果的かつ有用にするものです。PrologとCLPの両方が文献で十分に議論されています。 一方、Reteアルゴリズムがいくつかのデータ構造の形式でルールセットをキャッシュすることは明らかであるため、(私の理解では)入力の一部が変更された場合に出力を評価する方が効果的です。このデータ構造を段階的に変更するために効果的に更新する手段を与えると、基本的な考え方を理解することは難しくなります(私にとっては)、さらにその有効性(何に比べて?残念ながら、この広いコンテキストでReteアルゴリズムを表示する適切な参照を見つけることは困難です。 Droolsのドキュメントは、残念ながらこの点に関してあまり有益ではありません。最も見つけられたのは、「Reteアルゴリズム、Leapsアルゴリズム、およびDrools 'Reteoo(およびLeaps)などの子孫は、ルールオブジェクトをドメインオブジェクトデータに一致させる非常に効率的な方法を提供します。これらは、 (ルールエンジンは過去の一致を記憶できるため)完全に変更することはできません。これらのアルゴリズムは戦闘で実証済みです。」非常に効率的-何と比較して?バトルで実証済み-現実世界のアプリケーションを指すことができますか? このテーマにもう少し光を当てるか、有効な参考文献を提供していただければ幸いです。

5
関数型プログラミング言語を命令型ではなく宣言型にするのはなぜですか?
関数型プログラミングの利点を説明する多くの記事で、C / C ++ / C#/ Javaなどの命令型言語とは異なる「宣言型言語」と呼ばれるHaskell、ML、Scala、Clojureなどの関数型プログラミング言語を見てきました。私の質問は、関数型プログラミング言語を命令型ではなく宣言型にするものです。 宣言型プログラミングと命令型プログラミングの違いを説明するよくある説明は、命令型プログラミングでは、宣言型言語の「何をすべきか」ではなく「何をするか」をコンピューターに伝えるというものです。この説明に関して私が抱えている問題は、すべてのプログラミング言語で常に両方を実行しているということです。最下位レベルのアセンブリに移動しても、コンピューターに「何をすべきか」と伝え、CPUに2つの数字を追加するように指示します。追加の実行方法については指示しません。Haskellのような高レベルの純粋な関数型言語であるスペクトルのもう一方の端に行くと、実際には特定のタスクを達成する方法をコンピューターに伝えていることになります。それはあなたのプログラムがコンピューターが単独で達成する方法を知らない特定のタスクを達成するための一連の命令です。Haskell、Clojureなどの言語はC / C ++ / C#/ Javaより明らかに高いレベルであり、遅延評価、不変データ構造、匿名関数、カリー化、永続データ構造などの機能を提供することを理解しています関数型プログラミングは可能かつ効率的ですが、宣言型言語として分類しません。 私にとって純粋な宣言型言語は、宣言のみで構成される言語であり、そのような言語の例はCSSです(はい、CSSは技術的にはプログラミング言語ではないことを知っています)。CSSには、ページのHTMLおよびJavascriptで使用されるスタイル宣言が含まれています。CSSは宣言以外に何もできません。クラス関数、つまり、パラメーターに基づいて表示するスタイルを決定する関数、CSSスクリプトを実行できない関数などは作成できません。プログラミング言語)。 更新: 私は最近Prologをいじくり回してきましたが、完全に宣言的なプログラミング言語だけではない場合、Prologは完全に宣言的な言語(少なくとも私の意見では)に最も近いプログラミング言語です。Prologでプログラミングを精緻化するには、ファクト(特定の入力に対してtrueを返す述語関数)またはルール(入力に基づいて特定の条件/パターンに対してtrueを返す述語関数)のいずれかを宣言することによって行われます。パターンマッチング手法を使用して定義されます。プロローグで何かを行うには、述語の1つ以上の入力を変数に置き換えてナレッジベースを照会し、プロローグが述語が成功する変数の値を見つけようとします。 私のポイントは、プロローグには命令的な指示はなく、基本的にはコンピューターに知っていることを伝え(宣言)、知識について尋ねる(問い合わせる)ことです。関数型プログラミング言語では、メモリの場所を直接操作したり、段階的に計算を書き込んだりしていなくても、値の取得、関数Xの呼び出し、それに1の追加などの指示を与えています。私は間違っているかもしれませんが、Haskell、ML、Scala、Clojureでのプログラミングがこの意味で宣言的であるとは言いません。上で説明した意味で、適切で、真で、純粋な関数型プログラミング宣言です。

3
Prologでルールエンジンが作成されないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私がPrologで見たことから、アプリのルールエンジンを作成するのに理想的であるように思えます。それでも、Prologで記述されたルールエンジンを見たことはありません。Prologには、ルールエンジンの構築に使用できないような固有の制限(ガベージコレクションアルゴリズムなど)がありますか?

5
AIの最近のプログラミング言語?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 数十年の間、AIに選ばれたプログラミング言語はPrologまたはLISP でしたが、あまり知られていない他の言語もいくつかありました。それらのほとんどは、70年代以前に設計されました。 他の多くのドメイン固有の言語では多くの変更が発生しますが、AIドメインではWeb固有の言語やスクリプトなどほど表面化されていませんでした。 AIのゲームを変更し、以前の言語の不足から学ぶことを目的とした最近のプログラミング言語はありますか?

9
Prologは専門的に役立ちますか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は何年も前に大学でプロローグを学びました。私の職業生活の間、私はPrologを使用する必要がありませんでした。何か特別なものを見逃していませんか? 私が覚えている限り、Prologは著名なプログラミング言語と比較してまったく異なる考え方を必要とします。 プロローグは、専門的に有用なものを実装するために本当に使用されていますか?

3
なぜロジックプログラミング(ではない)ですか?
ソフトウェア業界での論理プログラミング言語(Prologなど)の使用についてはまだ聞いていませんし、趣味のプログラミングやオープンソースプロジェクトでの使用についても知りません。(Prolog)は、ある程度学問的な言語として使用されます(学問で使用される理由)。 これは、なぜロジックプログラミングを使用する必要があるのか​​、なぜ使用しないのかと疑問に思います。検出可能な業界で使用されていないのはなぜですか?

4
Prologが命令型プログラミングでSQLよりも人気がない理由の歴史的な先例は?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 宣言 的プログラミングSQLは、命令型プログラミングで非常に人気があるようです。ただし、Declarative を記述するPrologことで複雑さを大幅に節約できるようにも見えますが、これはあまり一般的ではありません。 PrologよりもSQLがこのように優先されるという歴史的な先例はありますか? 理由が命令型言語によるネイティブサポートの欠如である場合、言語の作成者がそもそもネイティブサポートPrologが有用であるとは思わなかった理由に答えることは可能ですか? 特定の例を提供するには: 例1 ローンアプリケーションの評価は、ほんの数行のコードでPrologあるSELECT/JOINクエリのように、ほんの数行のコードであるかもしれませんがSQL、利点はそれほど明白ではないようですSQL。 例2 別の問題例とPrologの解決策を次に示します。次の制約論理プログラムは、教師としてのジョンの歴史の簡略化されたデータセットを表しています。 teaches(john, hardware, T) :- 1990 ≤ T, T < 1999. teaches(john, software, T) :- 1999 ≤ T, T < 2005. teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012. rank(john, instructor, T) :- 1990 ≤ T, …

1
プロローグ並列処理
効率を向上させるために「プログラム」を機能的に分解できるプロローグインタープリターはありますか? 並列処理によってCに近い速度に到達するプロローグインタープリター(典型的なCプログラマーが「見ることができない」種類)についての研究があることは知っています。誰かがこのトピックについてもっと知っていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.