7

私は学術プロジェクトにPrologを使用しています。Prologが他のプログラミング言語と相互作用する方法があるかどうか知りたかったのです。私が欲しいのは、Prologの質問と回答の簡単な入力/出力リダイレクトです。

私は、PrologがいくつかのProlog実装でC関数を呼び出すことができることを知っています。すなわちSWIプロローグ。

私が必要としているのは、Prologの質問とユーザーが提供する回答の単純な入力/出力リダイレクトです。

どんな助けでも本当にありがたいです。

4

4 に答える 4

7

あなたの仕事に外国語インターフェースが本当に必要だとは思いません。Prolog IO を使用してください。使いやすく効率的です。プロトコル/1からのサポートのみから開始することもできます。KISSのアドバイスだけ…

外国語インターフェースは、他の言語で何かを実装する必要がある場合に必須です。

SWI-Prolog C++ インターフェイスは、C の対応するものよりもはるかに使いやすく、非常に簡単なビルトインのコーディングで言語を拡張したり、エンジンをスタンドアロンの「メイン」に埋め込むことができます。そして、これらの 2 つの側面はうまく共存できます: たとえば、高速なプロトタイプの場合、ビルトインを実装し、REPL トップレベルを使用するだけですが、本格的なアプリケーションはエンジンを起動してロジックエンジンとして使用し、(できれば REPL を介してテストされます) ) バックグラウンドでクエリを実行します。

次に、SWI-Prolog と Java をインターフェースするJPLがあります。私はそれについてほとんど知りません... SWI-Prologメーリングリストで報告されたいくつかの問題を見ました.これは(主に)異なるスレッドモデルの複雑さが原因です. しかし、確かにそれは機能しています。

IDE を Eclipse で使用できるようにするための興味深い開発が行われています ( PDT、Prolog 開発ツール)。彼らは独自のJavaインターフェースを使用していると思います。現在、JPL よりも優れた選択肢となる可能性があります。

しかし、現在 SWI-Prolog が提案できる最も興味深いインターフェースは、HTTP サーバー インフラストラクチャです。WEB クライアント開発 (HTML/JavaScript/XML/RDF) を知っていれば、MVC クライアント/サーバーでデザインを分割するためのツールがたくさんあります。Prolog は Web サービスを実行し、Rich Client はエンド ユーザーと対話します。このアーキテクチャにより、アプリケーションはローカルでも野生でも実行できるようになります。

関連するハウツーセクションを参照してください...簡単な作業ではありませんが、(IMHO)非常にやりがいがあり、長年の作業です。

于 2012-05-17T21:04:26.740 に答える
2

SWI-Prolog は、C ( http://www.swi-prolog.org/pldoc/package/clib.html )、C++ ( http://www.swi-prolog.org/pldoc/package/pl2cpp.html ) とインターフェースできます。 )、C# ( http://www.swi-prolog.org/contrib/CSharp.html )、および Python ( http://code.google.com/p/pyswip/ )。さらに、外部ファイルなどを介して Prolog と通信できます。

于 2012-05-17T12:45:51.953 に答える
1

Amzi Prolog + Logic Serverを見てください。その目的は、Prolog プログラムをコンポーネントとして他の従来の言語にアクセスできるようにすることです。

于 2012-05-17T16:40:41.237 に答える
1

使用している Prolog ディストリビューションによって異なります。以前にコメントしたように、SWI-Prolog は、C、C++、データベース、HTTP、XML などの最も一般的な用途向けにさまざまなインターフェイスを提供します。Ciaoディストリビューションは、探しているものにも役立ちます。この場合はCなので、このリンクをチェックしてくださいCiao Prolog and C

于 2012-05-18T15:41:25.460 に答える