この新しいバージョンでは、大きな新しい機能が付け加わりました。制約処理です。 また、拡張性が高くなり、バイナリファイルの入力・出力に対するサポートができました。
MINERVA 2.0は、制約処理の先端的な機能性と共にあなた自身のユーザー定義制約処理を加えるという可能性を提供します。
制約処理は、例えば以下のような難しい管理問題のために非常に強力です: 資源割り当て、スケジューリング、計画。
MINERVAは、制約処理のために2つの述語を定義します:
co_add(+Var, +Constraint) co_get(+Var, -Constraint)
"Var"が変数であるならば、それは制約変数になります。
"Var"が制約変数であるならば、制約は追加の制約としてマークされます、そして、ユーザー定義述語co_merge(+Var,[NewConstraint,OldConstraint])が起動されます。
"Var"が変数でないならば、ユーザー定義述語co_check(+Var, NewConstraint)は起動されます。
co_merge(+Var, +ConstraintList) co_check(+Term, +Constraint)
co_merge/2が起動される前に、関連する制約変数は普通の変数に変えられます。 co_add/2の以下の呼び出しの後でのみ、そして、もちろんバックトラックの場合だけでのみそれは、再び制約変数になります。
これらの述語は、マニュアル/レファレンス/述語/制約に詳しく説明されています。
MINERVA 2.0は、バイナリー・データを処理するための述語セットを提供します、例えば、これはデータマイニング、交信プロトコルまたはコンパイラ書込みのために使用されます。
read_boolean/2, read_byte/2, read_char/2 read_double/2, read_float/2, read_int/2, read_long/2, read_short/2, read_utf/2, read_unsigned_byte/2, read_unsigned_short/2,バイナリーファィルへの書込みのための述語の相補的なセットも提供されます:
write_*/2最初の引き数は常にバイナリー・ストリームです、第二の引数は読取り書込みのための項を含みます。 JavaクラスDataInputStreamとDataOutputStreamは、セマンティックスのために参照して下さい。
これらの述語は、マニュアル/レファレンス/述語/バイナリ入出力において文書化されます。
Java 1.1/1.2スタイルイベント処理は現在一貫しています、同時に、Java 1.0スタイルイベント処理は今後サポートされません。 この変更は、ユーザーアクションを受け入れるGUI要素に影響を及ぼすだけです。
以下は新しいです。
canvas_create / 2,
canvas_create / 5,
menuItem_addActionListener / 2,
textField_addActionListener / 2,
これらは、以下の廃止されたものにそれぞれ置き換わります。
canvas_create / 1,
canvas_create / 4,
list_selectedItems / 2,
textField_getInputStream / 2,
これらの述語のうちの1つを使っているプログラムは、MINERVA 2.0で正しく働くために調節される必要があります。
全てのインタラクティブのプログラム例は、これらの述語の使用を示します。
パッケージGUIビルダーは、開設時間にイベント・リスナーを加えさせます。gui/tst1.min, gui/tst4.minを参照して下さい。
guibuilderで、あなたは以下のリスナーを定義することができます:
付随する動きが起こるとき、Goalは起動されるゴールを表します。
button(Name,Label) ** action(Goal) text_field(Field) ** action(Goal) text_field(Field,Columns) ** action(Goal) checkbox(Checkbox,Label) ** action(Goal) checkbox(Checkbox,Label,Group,State) ** action(Goal) item(Name,Label) ** action(Goal) check_item(Name,Label) ** action(Goal) Component ** mouse(List)
リストは、以下の何でも含むことができます:
clicked=Goal pressed=Goal released=Goal entered=Goal exited=Goal
GUIによるプログラムのために、最高のレベル・ユーザー定義述語は、現在、最初の引き数として、アプレットをも取ることができるmain/2です。
MINERVA 2.0は、与えられたJavaクラスのデータのアレイをつくって、これにアクセスすることができます。
array_set(+Array, +Index, +Value) array_get(+Array, +Index, -Value) create_array(+Class, +Size, -Array) expand_array(+Array, -List)
これらの述語の使用のための実例は、フォルダ例題プログラム/Minervaの特徴/Javaアレイにあります。
名前を変えられてもはや存在しない述語create_interface/2から拡張され、述語と指令java_predicates/2は、どんなJavaクラスのどんなメソッドとでも拡張することができ、名前マッピングを制御することができます。
指令として使われるならば、リファレンスをつけられたクラスとメソッドの存在はコンパイル時にチェックされます。 述語として使われるならば、参照クラスは実行時にアクセスされるだけです。
java_predicates/2は、また、Java変数にアクセスを与えます。
minervaxは、同じ構文を理解します。
MINERVA 2.0では、第三者の全Javaライブラリを加えるツールmetagen があります。 minervaxは、これを知っています。 呼出しは、以下の通りです "minerva -l metagen ClassName"
例:
minerva -l metagen java.awt.Dimension -o dim.mxt
あるいは
minerva -l metagen java.awt.Dimension > dim.mxt
minervax dim
mjavac dim.java
minerva -b dim
...
dimension_create(Dim),
dimension_width(Dim, Old),
dimension_width(Dim, 100),
dimension_width(Dim, New),
...
MINERVAの中でクラスとメソッドを加えるためにすぐ使用できるための実例として、グラフィカルユーザーインターフェースのために広く利用されているSwing、リレーショナル・データベースのためのJDBC、音声認識と合成のためのJSAPIを紹介します。 例題プログラム/機能拡張を参照します。
プログラム・テンプレートは、Java 1.2 Swing、MS-Access 97とIBM ViaVoiceで動く方法を示します。
Windowsシステム環境でダブルクリックでプログラムをコンパイル、実行するために、レジストリエントリを提供すると共に、MINERVAソースと対象ファイルタイプのためのアイコンによるフォルダがあります。 フォルダ・アイコンを参照します。 MINERVAがレジストリ・エントリまたはアイコンに正しく作用することを要求しない点に注意して下さい。
MINERVAのクライアントのアプリケーションを紹介するフォルダ概要/参照ができました。
MINERVAコンパイラminervacによるより多くの警告、例えば別のパッケージに同じ名をつけられた述語があれば、警告を与えます。
あなたは、他のサーバからプログラムをロードするために、load/1を使って、またはオンデマンドでロードするためにMINERVAパッケージ・システム使うことが可能です。
*.minの中のload/1の中でURLを指定するか、:
load(someservice),
load('ftp://ftphost/someservice.mbc'),
load('http://wwwhost/someservice.mbc'),
または、MINERVA Startup Property *.mspの中でURLを指定します:
package.someservice=localdir/someservice.mbc package.someservice=ftp://ari/pub/minerva20/someservice.mbc package.someservice=http://ari/minerva20/someservice.mbc
または、両方の方法を結合します。
ドキュメンテーションへの訂正に加えて、HTMLページのための速いローディングを確保しつつ、我々はより簡単なナビゲーションと索引を加えました。
| 冒頭へ |
|