Prologは専門的に役立ちますか?


15

私は何年も前に大学でプロローグを学びました。私の職業生活の間、私はPrologを使用する必要がありませんでした。何か特別なものを見逃していませんか?

私が覚えている限り、Prologは著名なプログラミング言語と比較してまったく異なる考え方を必要とします。

プロローグは、専門的に有用なものを実装するために本当に使用されていますか?


3
プロローグ(およびポップログ)はAIコーディングに非常に適しています。AI関連のことを専門的または真剣に行っていない場合は、まったく使用しないでください。非エンジニアがMATLABを真剣に使用することはないかもしれません。
グラスント

1
良い質問。Prologは、Uni Potsdamで計算言語学で教えられた最初のプログラミング言語ですが、その後は、たとえそれが得意であっても、それほど多く使用しません。それは残念だ。StackOverflowで「アキュムレータの使用方法」や「考えられるすべての回答を取得する方法」などの質問を見るたびに、実際のプロフェッショナルユーザーはどこにいるのだろうと思います。ほとんどは宿題のようです。または、Prologの習熟度により、質問のないロボットになります。
フェリックスドンベック

Prologで記述され、オーストリアのどこかで実装された障害検出システムを聞いたことがあります(クラーゲンフルト?)私に言われたところによると、この製品は非常に良く、顧客に販売されていました。これを「専門的に役立つ」と考えるなら、答えは「はい」です。
ジョルジオ

回答:


12

私の考えでは、Prologの基礎を学ぶことは、あなたが現実の世界でPrologを使用するかどうかに関係なく、非常に価値があります。また、統合の根底にある基本的な考え方、および(些細で非効率的な)実装の処理方法を理解することも非常に価値があります。

宣言型ロジックを使用して最適に解決される問題がある場合、理想的にはそれを認識し、(選択できる場合)そのジョブに適切なツールを使用することを知っておく必要があります。

しかし、Prologには従来の命令型言語とは非常に異なる考え方が必要であり、関数型言語とは非常に異なる考え方も必要であることに同意します。ある点を超えて、それは多くの経験を必要とするように見えます(何かと同じように)。そして、私の脳を私の耳から垂れさせる多くの「教科書」の知識さえあります。

私の印象は...おそらく私たちは両方ともある程度特別なものを見逃しているかもしれませんが、現実世界の経験を開発しようとすることはもちろん、Prologのかなり完全な教科書レベルの知識を学ぶ時間を捧げることは実用的ではありません、可能性のあるロジックプログラミングのキャリアを検討している場合を除きます。

最近、1989年に出版されたAIとエキスパートシステムに関する本を読んでいます。古本屋での幸運な発見です。重要な部分は、LispとPrologに関する専門的なチュートリアルです。確かに、それがカバーするもののほとんどは、しばらくの間それほど印象的ではありませんでしたが(検索、ヒューリスティックなど)、それでも非常に興味深いものであり、IMOは少し時間をかける価値のあるものです。

Prologを具体的に説明している最近の本は、言語の学習には適していますが、リスクは、中級から上級の教材のどこかであなたの脳が耳から滴り落ちることです。


AI /プロローグ初心者はこちら。おすすめのオンラインリソースはありますか?
ヤティサガデ11

@yati -試しamzi.com/AdventureInProlog/advtop.phpを私はこれまで私が覚えているとしてOKだったようAMZIサイト上のチュートリアルを走ったら、それはだった- 非常に長い時間前。私が最近(おそらく過去5年間)Prologで見たのは、この答えで言及したAI本だけです。コメントを投稿するのではなく、ここで質問を検索/質問する必要があります。特に、とにかく基本的に長期の初心者である人によって書かれた回答に追加されたコメント。プロローグは私がめったに見ず、ほんの少しの深さで見ているものです。さもないと、10年以上前に初心者にならなかったでしょう。
Steve314

10

これは私ではありませんでしたが、「プロローグで何か深刻なものを実装した人はいないだろうか?」これは重要かもしれません:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watsonは、Linuxを実行する10ラックのIBM Power 750サーバーで稼働し、15テラバイトのRAM、2,880プロセッサーコアを使用し、80テラフロップスで動作できます。Watsonは主にJavaで記述されていましたが、かなりのコードチャンクがC ++とPrologで記述されており、すべてのコンポーネントはUIMAを使用してデプロイおよび統合されています。


7

私はAIプログラマーがそれを使用することを知っています.....私はAIクラスでPrologコースを受講しましたが、それ以外はそれについて他に多くのことを言われていません。よくある質問と同様の質問があります! /programming/130097/real-world-prolog-usage


6

Prologは、高速プロトタイピングに最適です。たとえば、http: //www.cri.ensmp.fr/classement/doc/A-381.pdfでは、GCCのSSA変換が最初にPrologに実装され、次にCに実装されます。

型システム、特定の最適化およびセマンティックチェックの迅速で汚い実装のためにコンパイラ内でPrologを使用しています。そのパフォーマンスが許容できない場合にのみ、Prologコードを必須のものに書き換えます。


2

あなたは非常に迅速に答えましたが、90年代半ばにPrologを使用して保険料率計算機を設計し、プレミアム率に収まる特定の顧客セグメント(リスクの読み取り)を決定しました。これは必ずしも毎日見られるものではありませんが、長年にわたってP&Cプレミアムに確実に影響を与えているものです。


2

(このFAQ)によれば、JeopardyをプレイしたIBMマシンであるWatsonの1パートは、プロローグで書かれていました。(質問6を参照)


1

私はPrologを(重要な)ほんの一握りの機会(診断エキスパートシステム、HTML変換、セットメンバーシップ)で専門的に使用しました。私は言語に深い愛情を持っているので、はい、ここにはバイアスがありますが、Prologがいつ(より/ちょうど)適切であるかについて客観的であるのは簡単です-あなたは本当に再帰構造を処理する必要があります; 私が提供できる最良の例はリレーショナルデータベーステーブルですが、他にも数え切れないほどの例があります(ランダムなユーザー入力や(ほとんどの)数学関数(ただし、多くの数学関数には再帰構造があるため、完全に適切です(たとえば、離散高速フーリエ変換)。

しかし、もちろん、再帰構造の処理だけで定義できる「エンドツーエンドシステム」はほとんどありません(例外:定理証明-しかし、これはかなりアカデミックな演習です*)。あらゆる種類の異なる手法を使用して、「より標準的な必須プロセス」につなげることができます(Webサービスインターフェイスが一般的に適している以外はほとんど問題になりません)。そのため、UI、ランダムイベント処理などを処理し、必要に応じて引き渡すことができます(複雑なデータベースクエリや、再帰構造を使用してやりたいことを行うため)。たとえば、LINQよりも美しく動作します。

繊細なビットで再帰構造をつかみ、素敵できれいでエレガントで保守可能なPrologを書きましょう!:)

PS Prologを使用していないとき、C#にフォールバックします

  • しかし、私は、商業プログラムの少なくともいくつかの側面が標準的な慣行として正しいことが証明される日を待ち望んでいます。

1

好きな言語で数独ソルバーを書いてみて、Prologでそれがどのように行われるかを確認してください。一般に、CLPの問題はPrologのような宣言型言語に適しています。

また、ハードウェアとソフトウェアの正式な検証にも広く使用されます(学問的に、おそらく専門的にですが、企業への言及はありません)。

最後に、Erlangは、フォールトトレランスと同時実行性を念頭に置いて、Prologに深く影響を受けています。


0

米国および他のいくつかの国でメールの多くを読み取り、分類するソフトウェアは、高度に最適化されたコンパイラを使用して、Prologで記述されています。メールアドレスの構文は明確な句の文法で書かれているため、メンテナンスが簡単になり、さまざまな国や産業ユーザーの慣習に読者を適応させるのが簡単になります。多くの場合、郵便サービスには、転送先住所、私書箱と住所などに関する複雑なルールセットがあり、これらのルールはメンテナンスを容易にするためにPrologでも定式化されています。

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