• ベストアンサー

Prologについて

C言語とJavaのプログラミングはやったことがあります 春学期からPrologをやるみたいでちょっと自習してみようかと・・・・ Prologをwikiで見てみるとC言語とかJavaとちょっと違った雰囲気があって具体的にどこがどう違うのかが分かりません>< 大雑把でいいので教えていただけませんでしょうか??? あと, コンパイラ等開発環境を色々とそろえたいので参考になるサイト, 書籍などがあれば教えてください><。 できれば入門でw オネガイシマス

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

昔の話でうろ覚えなんで、間違ってたらすいません。 > Prologをwikiで見てみるとC言語とかJavaとちょっと違った雰囲気があって具体的にどこがどう違うのかが分かりません>< 後者の手続き型言語というのは、あーしろとかこーしろとかあらかじめ決められた命令を駆使して処理を実現します。 Prologの場合、一階述語論理という難しそうで実は単純な一連の定義によって構成される言語です。 「AはBである」と「AがBならCである」という2種類のデータベースのような論理定義で構成されたもので、実行時には質問を投げかけて回答を得るという処理になります。 たとえば上記例に「AはBですか?」と問えば「Yes」と答えるという具合です。 多少実用的なプログラムだと階乗計算なんかが優れたサンプルとしてよく引用されてますので探してみてください。 > あと, コンパイラ等開発環境を色々とそろえたいので参考になるサイト, 書籍などがあれば教えてください><。 文法(表記方法)に関しては、これも種々あるのですが大きく分けると「エジンバラ版(日本企業なんかではDEC10版が通称みたいです)」と「マルセイユ版」とがあって、日本では政府主導のプロジェクト(ICOT)もあってエジンバラ版が主流です。 エジンバラ版はICOTのホームページから国民の税金で作られたcu-Prologという処理系(UNIX)が入手できます。MS-DOSではむかし「AI-Prolog」という処理系(アセンブラソース付)が本屋さんで市販されていました。 マルセイユ版は昔ボーランドから売られていたTurboProlog(なんとコンパイラです)の文法がそれに近いかも・・・。 「BASICで学ぶPROLOGシステム」という本にはPrologの処理系がBASIC(MS系)で書かれたソースが付いてます。 「AI事典」 ちょっとググッてみると「お気楽 Prolog プログラミング入門」「神戸大学 Prolog ホームページ」というHPが処理系の紹介もしてくれているので参考になるかもしれません。

その他の回答 (1)

回答No.1

Prologって使える人どれくらいいるんでしょうね? 当然、僕も知りません(笑)。 手元の本を見ると次のような事が書いてあります。 Prolog(Programming in Logic)は、人工知能分野でLispと直接競合する言語である。Prologのアプローチは、(その本で紹介されている)どの言語とも根本的に異なる。Prologプログラムは、基本的には解決すべき問題を表すものであり、Prologが組み込みの推論エンジンを使ってそのソリューションを導く。Prologは(他の言語の制御構造に対して)簡単に対応させることができない言語である。他の言語とこれだけ違うという理由だけでも、Prologは十分に知っておく価値のある言語である。 これを読む限り、 >C言語とかJavaとちょっと違った雰囲気があって どころじゃないですね(笑)。「他と全く違う」そうです。 少なくとも、これを見る限りは、 通常のプログラム: 問題がある→解法をプログラムする→答えが出る と言う流れなんですが、Prologの場合、どうやら、 問題がある→「答えを」プログラムする→解法が出る と真逆のプロセスを辿るんじゃないか、って事です。 例えば、もっと具体的に言うと、 2+3は? と尋ねられ、 5 と答えるのが通常のプログラミング言語。 Prologの場合はそうじゃなくって、 2□3=5 と言う「問題と答えが分かってるケースに対して」 + と記号(と言うか「手続き」)を返すような、そんな言語ではなかろうか、と思います。(違っていたら申し訳ないんですが・笑) >コンパイラ等開発環境を色々とそろえたいので参考になるサイト, 書籍などがあれば教えてください 多分、ザーッと見た限り、次のサイトが良いのではないでしょうか? M.Hiroi's Home Page: http://www.geocities.jp/m_hiroi/prolog/ 僕はまるっきりPrologやった事は無いんですが、Common Lispを勉強している時にお世話になったページです。色々な「ヘンでマイナーな(失礼・笑)」言語を分かりやすく説明してくれてると思います。 また、処理系に関してもそちらのページで紹介されています。

関連するQ&A

専門家に質問してみよう