MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
Dedicated technical support for IF/Prolog ended Dec 31 2008.
This site is maintained as a community service only.
IF/Prologを使った巻物切断設計のシステム
宣言型プログラミング言語: Prolog
Prologは、生産性の高い宣言型プログラミング言語です。 従来のC
やPascalなどの「手続型」言語では、マシン側から必要とされる
手続きを書く必要がありましたが、 Prologのプログラマーは実装
レベルでの概念にわずらわされることなく、応用分野での概念のみに
集中し、アプリケーションの記述を進めることができます。
例えば、Prologはメモリ管理を自動的に行なうので、プログラマーは
エラーをおこしがちなメモリ管理を行なう必要はありません。また、
ポインタを使うことなく、常に明確な名前を使ってプログラミングを
行ないます。探索・パターンマッチング・バックトラッキングによる
別解答の生成機能は、Prologの中に組み込まれており、基本的でかつ
力強い問題解決手段となっています。 さらに、IF/Prologには、より
強力な機能があります。バイナリツリーやハッシュテーブルが自動的に
生成されるので、IF/Prologは、高い実行性能とスケーラビリティを
達成しつつ、プログラマからはリニア的な観点で見えかつ生産性と
わかりやすさも達成します。
この結果、Prologプログラム自体も、応用分野の専門家の問題解決
プロセスに近いものとなります。プログラムはより簡潔で、保守
しやすく、アイデアから商品化のサイクルを短くすることができ
ます。
Prologの簡便さにより、プログラムの一部のみを作り上げ、走らせ、
検証することができます。つまり、Prologではコードをトップ
ダウン形式で仕上げることがきますので、時間が経つにつれ次第に
完成形に近付きます。 そして、プロトタイプを作った後にそれを
捨ててしまい、新たに最終的なプログラムを作る必要はありません。
この結果、開発者は、開発時間を節約し、継続的にフィードバックを
与えられ、かつ革新的なアプリケーションの品質を確保できます。
一言でまとめると以下の通りです: Prologは柔軟で完成度の高いプログラミング言語で、低レベルのマシン概念にとらわれず、低レベルのコーディングや最適化を行なう必要がありません。 IF/Prologは、高いプログラマ生産性と高い実行性能を兼ね備えています。
産業応用の為のIF/Prolog
IF/Prologは、産業応用を目指して設計・開発されました。世界中の
様々な分野の現実の業務用エキスパートシステムや従来型のアプリ
ケーションで使用されています。
企業は、進んだ問題解決能力のみならず、単純にプログラマの利便性
および生産性の為にIF/Prologを選択しています。
例えば、弊社は戸田建設株式会社の発注を受け、 泥水加圧シールド集中管理システムを開発しました。これは、東京での海面高度以下におけるトンネル工事のための集中管理システムで、異常・起こり得る危険・採り得る解決方法をリアルタイムで予測します。
ドイツでは、InterFace Computer GmbH社は、ドイツ郵政省の発注を受け、IF/Prologにより、電話の構成、販売支援のための知識ベースシステムを開発しました。このシステムは数多くの電話モデルやオプション機能の中から、顧客に最も適した組合せを選ぶための支援を行ないます。
以下に上記以外の例をいくつか紹介します。
- 鉄道駅業務計画
- 石油調査危険予知
- タービン振動診断
- 鍛造工程設計
- 建築用ロボット工程計画
- 空港環境制御
- 高分子材料設計
- 眼鏡設計
- ASIC設計
- CADデータ変換
- 販売支援
- 株式評価
- 生命保険リスク分析
- COBOLプログラムの保守分析
多くのサポート機種
IF/Prologは、パーソナルコンピュータ、ワークステーション、
スーパーコンピュータ、その他の特殊用途マシン上で作動します。
イフコンピュータは、通常新しいマシンが市場に出る前に、
IF/Prologをポーティングしますので、お客様は常に、アプリケー
ションに合ったプラットフォームを選び、より良いプラットフォーム
が市場に出た場合には、それに移行することができます。長いライフ
サイクルを持つ大規模なアプリケーションを開発する場合、
ポーティングのコストのみを考えても、多くのマシン上での互換性を
持つIF/Prologを選択するメリットがあります。
対応チップ: Alpha, HPPA, MIPS, 80x86,Pentium,
Power, SPARC, 68K, 88K, その他
対応OS: 主要UNIX, Windows
標準準拠
IF/PrologV5.0は、ISO Prolog標準Part1に完全に準拠しています。
Siemens AGとIF Computerは、
DIN、JIS、ISO標準化プロセスに積極的に関わってきました。
IF/Prologは、ANSI Cによって実装され、その開発工程は、
ISO 9000品質標準にも準拠しています。
SiemensとIF Computerは、Prologマネジメントグループ(PMG)において、
他のPrologのベンダーと協力し標準化に取り組んでいます。
制約処理パッケージ(オプション)
制約処理パッケージは、IF/Prologに最新の制約に基づいた問題解決
手段を導入しました。これにより、航空・鉄道での運航計画、生産
計画、乗務員などの人員配置計画を始めとする資源割り当ての課題
などの複雑な組合せ問題を、扱えるようになりました。
Prologと制約処理機能との組合せにより、従来Prologのみでは扱う
のが難しかったオペレーションリサーチの問題も扱えるようになり
ました。
Prologのプログラミングは、制約処理機能が探索空間を限定するので、
Prologの探索機能を使った探索は、より効率的に行なえるようになり
ました。
制約処理パッケージでは、
長精度整数と有理数、コルーチン、数値的制約、有限領域、論理制約
を扱うことができます。
高度なGUI開発機能(オプション)
UNIX版IF/Prologでは、グラフィカル・ユーザ・インタフェース
(GUI)開発ツールとのインタフェース
(OSF/Motifインタフェース)があります。
第1に、このインタフェースを使用すると、開発自体をウィンドウ上で
行ない、オンラインヘルプ機能などのプログラミングを簡単化する
多くのツールを使い、画面上での制御を行なうことができます。
第2に、Prologで直接アプリケーション用のGUIを書くことができます。
洗練され、複合的、ダイナミックなデータ構造を持つGUIを開発する
場合には、Prologの上で挙げたプロトタイピングの手法、自動メモリ
管理、ポインタの代わりに名前を使用するというPrologの特長が十分に
生かされます。そして、CあるいはC++でプログラミングする場合に
比べてかなり簡単です。ウィンドウイベントは、対話的なウィンドウ
ベースデバッガを使用することにより、シンクロナイズされます。
さらに、Prologのコードはソースコードが簡単にリコンサルトされる
ので、テスト毎に再リンクする必要がなく、開発時間を節約すること
ができます。
Windows版IF/Prologでは、グラフィカル・ユーザ・インターフェース
によって、コンサルト、ロード、デバッグ、トレース、コンパイル
昨日へのアクセスをすばやく行うことができます。ハイパーテキスト
マニュアルもデータベースブラウザ−もあります。
データベースへ直接アクセス
IF/Prologは、業界標準のデータベースに直接アクセスするインタ
フェースを提供しています。これを利用して、より拡張的な開発を
行なうことができます。
UNIX版: SQL関係データベース(Oracle、Informix、Ingresなど)
Windows版: MS Accessなど(DDEMLインタフェース、COMインタフェース、ADOを介して)
SQL関係データベースとのインタフェースはオプションです。
DDEMLインタフェース、COMインタフェース、ADOは、Windows版に含まれています。
Java インタフェース (v5.3のみ)
Cインタフェースと同じように、Javaとの双方向のインタフェースを提供します。
IF/Prologは、Javaクラスを介して呼ばれる、あるいは、Javaで実装された
述語を含むことができます。
現在のところ、Javaインタフェースを含むv5.3は、Windows版のみリリースしています。
柔軟なC言語インタフェース
CおよびC++との柔軟な双方向のインタフェースにより、Prologの
中からCの手続きを呼び出したり、Cのプログラム中にIF/Prologの
プログラムを埋め込み、Prologをインテリジェントサーバとして
使うことができます。C++のクラス定義は使えません。実際の業務で
使用されるアプリケーションに使われる際により重要になるこのイン
タフェースの特長は以下の通りです。
- オペレーティングシステムとの完全な対話
- オペレーティングシステム(OS)は、CおよびPrologから簡単にアクセス
することができます。Prologはコマンドパラメータ・パイプ・ファイル
・他のOS・ユーザが定義したストリーム型を制御することができます。
- CからPrologへの二段階インタフェース
- ユーザはPrologゴールをC文字列として引渡しこれを解析することが
できます。あるいは予め設定されたマクロセットを使って効率的に
システム内で内部表現、複合項を作り上げることもできます。
- PrologからCへのインタフェース
- 決定的述語および非決定的述語のどちらもCルーチンとして定義する
ことが可能です。これらの述語はIF/Prolog自身の内蔵述語と同様に
効率的です。
- CとPrologを共に使用
- PrologとCコードは自由に混在させ、再帰的にまたgenerate-and-test
の組合せとして使用することができです。
- モジュールの中でのC述語
-
- Cルーチンをモジュールに割り当て、Prologで書かれたモジュールと
して大規模なアプリケーション中に取り入れることができます。
- データ数は無制限
-
- CとPrologの間で交換されるデータについてサイズの制限はありません。
これは、ガーベジコレクションやメモリ拡張が、Cルーチンの実行中
にもユーザに見える形で行なわれるからです。
ソケットサポート
IF/Prologでは、完全なソケットサポートをしています。
インターネットソケットと高度入出力ストリームを直接
サポートしているので、
IF/Prologは、インターネット/イントラネット上の
アプリケーションに組み込んで、
知的タスクを実現することができます。
また、ソケットサポートによって、クライアントサーバーアプリケーション
の開発を容易にします。
ソケット接続を介して存在する複数の入出力ストリームをサポート
する組み込み述語により、複数のクライアントとサーバ間でトランスアクション
を容易に引き渡すことができます。
使いやすいIF/Prologエンジン
IF/Prologのカーネルは、高い精度とメモリ効率を提供する最新の
Prologエンジンです。
- 増分最適化コンパイラ
- すべての述語に対して引数の完全なインデクシングや浅いバック
トラックを扱えるように実装された増分最適化コンパイラにより、
増分コンパイル・デコンパイル・コンパイルされたコードのロードを
行なうことができます。 さらに、ソースレベル、および、より
低レベルでの最適化は、コンパイルされた修正不可能な静的述語に
適用されます。
- コンパイラ/インタプリタ
- IF/Prologのコンパイラは小さなファイル単位でコンパイルを行ない
ますので、開発時のプログラマーにとってインタプリタの様に使い
やすくなっています。かつ実行時のコンパイル時間は著しく短く
なっています。
- 効率的で柔軟なメモリ管理
- 全データエリアが、ユーザプログラムから見える形で、自動的に
リサイズされ、ガーベジコレクションが行なわれます。これにより、
プログラム実行に必要な時間が短縮されます。リアルタイムシステム
に必要な時間的要求も満足します。
ガーベジコレクションは、Cで定義されたユーザ述語の実行中でも行な
うことができます。また、アトム、複合項の数の限界も存在しません。
- 述語ベースのモジュール概念
- V5.0では、モジュール概念が改めて設計し直され、モジュールでデー
タを隠したりメタプログラミングができるようになりました。C述語も
特定のモジュールに格納し、インポート/エキスポートすることができ
ます。
完全なアジア言語サポート
IF/Prologはシングルバイト(8-bit)文字セットと、アジアの様々な
国語用のマルチバイト(16-bitと32-bit)文字セットの両方に対応しています。これに
より、日本語・韓国語・中国語などのアジア言語を使って、プログ
ラムおよびデータを書くことができます。
エディンバラ構文の採用
既存のアプリケーションのコードやパブリックドメインのProlog
ライブラリを導入するために、ISO標準の厳しい構文条件を使わず、
エディンバラ構文を採用することができます。
その他の特長
- 使いやすいデバッガ
- 内蔵デバッガは、プログラムの実行をいろいろな深さのレベルで
段階的に追っていくことができます。また、ブレイクポイントを
コードの中の任意の場所に置くことも可能です。
- アプリケーショプロファイル
- 新しいプロファイラによって、あなたのIF/Prologのプログラム
の実行中に、どの述語がどれだけの時間を要しているかを
測ることができます。プロファイラは、アプリケーション全体あるいは
個々のゴールに対して使うことができます。
- 信号処理
- IF/Prologは、オペレーティングシステムからの信号に応じて
作動し、完全にシステムプロセスとして反応することができます。
ライセンス形態
- 単一マシンライセンス
- IF/Prologの開発ライセンスは、実行マシン毎に発行しています。
ユーザ数は限定されません。
- ランタイムライセンス
- IF/Prologを使用して
開発されたアプリケーションは、開発後、社内での展開、ア
プリケーションの販売をする際に、低コストのランタイムライセンス
を使用することができます。
ユーザサポート
IF/Prologを購入すると、6カ月間無償で保守を受けることができます。
保守には、電話・ファックス・電子メールによるサポート、依頼に
応じて、OSの変更に伴うIF/Prologのアップグレード、IF/Prolog新
バージョンへのアップデートサービスが含まれます。その後、保守は
一年ごとに保守契約により継続されます。(Windows版には保守
契約はありません。)
教育機関向け、複数ライセンス購入時には割引が適用されます。
個々のニーズに合った教育及びコンサルティング
イフ コンピュータでは、Prologを使用したプログラミングのための
実習中心の教育コースを提供しています。基礎コース、上級コースが
あり、お客様の専門分野をテーマとして取り上げたワークショップも
行ないます。(IF/Tutorial)
また、お客様のニーズに合わせてエキスパートシステムやその他の
高度のアプリケーションを設計・開発するプロジェクトも請け負っ
ています。 (IF/Projects)
開発元
IF/PrologはドイツのSiemens AGが
開発しました。販売・支援はドイツ・アメリカ・香港・日本に拠点
を持つIF Computer社が行なっています。
|