Turbo Prolog で作成されたエキスパート システムの GUI を作成することを目標とする大学の課題があります。これを行う一般的な方法はありますか?あるいは、たとえば Java アプリケーションが Prolog アプリケーションを呼び出してその結果をインポートする方法はありますか? または、アプリケーションを Visual Prolog に移植する必要がありますか? 前もって感謝します。
2 に答える
XPCEは非常に優れていますが、Turbo Prolog で使用できるかどうか、またはいくつかの変更を加える必要があるかどうかは 100% わかりません。とはいえ、ポーティングは論外ではないので、利用できるのではないでしょうか。
これは、XPCE に関する非常に役立つ (imho) FAQ/ガイドです。
グラフィックスに関するswi-prologのページからのいくつかの他のオプション:
グラフィカル API への直接アクセス 従来、Prolog コミュニティの人々は、システムのネイティブ (C) API の周囲に Prolog ラッパーを作成してきました。Xwip は、Prolog のこのクラスの GUI アプローチの重要な例です。問題は、これらの API のほとんどがかなり低レベルであり、Prolog で適切かつ自然に表現される API のデータ型を取得するために多くの作業が必要なことです。外部 GUI 言語 GUI 開発用に設計された外部言語を使用するのが、より優れた一般的なアプローチです。人気のある候補は、Tk/Tcl、JPL/Java、Visual Basic、および Delphi です。Prolog は、パイプ、埋め込み、またはその他の適切な通信メカニズムを使用して、これらのシステムに接続されます。XPCE の使用 star.gif XPCE は、最初から Prolog での GUI 開発用に開発されています。XPCE には、動的に型付けされたオブジェクト指向のカーネルがあります。メソッドは任意の言語で定義できます。XPCE は、データ表現とグラフィックスを目的として、多数のクラスを事前定義しています。グラフィカル ライブラリは、インターフェイス コンポーネントの抽象的な記述を可能にし、Win32 および Unix/X11 に移植可能です。
XPCE を使用すると、インタラクティブな Prolog アプリケーションを完全に Prolog で作成できます。XPCE は、オブジェクトの (スペース) 効率の良いストレージと、アプリケーションのオブジェクト指向構造化に使用できます。XPCE-5 の時点で、ネイティブの Prolog データを渡して XPCE/Prolog 定義のクラスに格納できます。
Turbo Prolog を使用した GUI の「ネイティブ」アプローチは、DOS ベースのBorland Graphics Interface (BGI)でした。このライブラリ自体は MS Windows と互換性がありませんが、このアプリケーションでターゲットにしているオペレーティング システムを指定していません。
Windows を対象としており、BGI グラフィックスを使用したい場合は、このWindows ポートの BGI が使用可能であることがわかる可能性があります。
Turbo Prolog で BGI 呼び出しを使用したことがない場合は、Visual Prolog にアップグレードすることをお勧めします。Visual Prologは、PDC が現在のリリースの MS Windows で維持しています。ユーザー インターフェイスのビルディング ブロックは、Visual Prolog IDE ですぐに利用できます。
追加:私は、Turbo Prolog と BGI 呼び出しを使用して、特定のアイテムが倉庫フロアのどこにあるかを表示する、倉庫/ロジスティック システムのグラフィカル プロトタイプを作成したことがあります。だから、これはあなたの「大学の課題」のためにできると思います。Java で Turbo Prolog を呼び出す方法を準備するよりも手間はかかりませんが、Java とやり取りするか、Java で記述された Prolog 実装がいくつかあります。 たとえば、 GNU Prolog for Javaは無料でオープン ソースです。
Turbo Prolog から ISO Prolog への変換は、外部データベースまたは Turbo Prolog 固有の他の機能を使用していない限り、それほど難しくありません。基本的に、Turbo Prolog に特有のドメインと述語の宣言を削除するだけで、さまざまな ISO Prolog 実装の下でテストおよび実行できるものが得られる可能性があります。エキスパート システムが外部データベースを使用している場合、 consult/ 1および/またはassertz/ 1 を使用して動的に入力される内部データベース (ファクト句) に変換するのが魅力的であることがわかります。