ESP プログラムの CESP 化について


ESP (Extended Self-contained Prolog) は当機構 (ICOT) が開発したオブジェ クト指向論理型言語で, そのままでは専用マシンである PSI の上でしか実行 することができません. これに対し, ESP を発展させ, 汎用ワークステーショ ン上でも実行できるようにした CESP (Common ESP) が (株) AI言語研究所 (AIR) により開発、三菱電機東部コンピュータシステム(株)から販売されてい ます. 本ドキュメントでは, ESP のプログラムを CESP に移植する上での一般 的な注意点についてご説明します. なお, 本ドキュメント作成に当たっては AIR にご協力頂きました.

1. CESP について

1994年3月現在の最新バージョン CESP Ver 3.3 のフルセット仕様版で想定され ている動作環境は次の通りです.

  機    種  : SUN4 (SPARC)
  バージョン    : SunOS R4.0.3, R4.1, R4.1.1, R4.1.2
  メモリ容量    : 主記憶 16MB 以上 (スワップは 64MB)
  ディスク容量  : 90MB以上
  開 発 環 境   : エディタ   : GNU Emacs を利用した開発環境が用意さ
                                 れています. GNU Emacs を利用しなくて
                                 も動作します. 
                    ウインドウ : X11R5 対応のインタフェースが用意され
                                 ています. また, 日本語の利用も可能で
                                 す. 
詳細は, 下記までお問い合わせ下さい.

  連 絡 先 : 〒244 神奈川県横浜市戸塚区川上町87-1
               三菱電機東部コンピュータシステム株式会社
               応用システム第二部SP推進グループ

               TEL : 045-825-5679
               FAX : 045-825-5822

2. CESP への移植について

ESP によって書かれたプログラムは, 通常 PSI マシンとそのオペレーティン グ・システムである SIMPOS の上で実行することを想定していますので, CESP に移植する場合は入出力関係等を書き換える必要があります. また, 基本デー タが異なるなどの問題点がありますので, CESP の言語マニュアル [1] の Appendix B をまず御覧下さい. 移植のノウハウには次のようなものがありま す.

(1) 組み込み述語

(a) PSI固有の組み込み述語をなくして下さい.
PSIのハードウェア (レジスタ, 1ワード40ビット) に依存した処理をなく して下さい. 例えば組み込み述語の word, set_system_register, address な どは書き直してください.
(b) ESPとCESPの組み込み述語の違いに注意して下さい.
ESP の heap_vector は CESP では impure_vector に, stack_vector は pure_vector に, それぞれ名称が変っていますのでご注意ください. ESP と CESP の組み込み述語の違いについては [1] を参照して下さい.
(c) ESP にはなく CESP では登録されている演算子があります.
演算子 &, ** 等は ESP にはなく CESP では登録されています. add_opす るときは先に remove_op する必要があります.

(2) データ形式

(a) ストリングのデータ形式が違います.
ESP の1ビットストリングと32ビットストリングは CESP にはありません ので書き換えて下さい. 例えば impure_vector で代用することができます.
(b) 整数の範囲が違います.
整数の範囲は ESP が -2^31 ~ 2^31-1 であるのに対して CESP では -2^28 ~ 2^28-1 となっていますので注意が必要です. マスクを使用してビッ ト演算をしているような箇所は, 個別またはマクロ記述による修正が必要にな る場合があります.
(c) 文字コードが違います.
文字コードは, ESP は JIS ですが CESP は EUC となっていますので, 文 字コードは全てマクロを使用してお書き下さい. 漢字のアトムがアトムと認識 されない場合, コード変換が誤っている可能性があります.
(d) 異なる型の比較には注意が必要です.
ESP と CESP では異なる型の大小関係が異なります.

(3) 入出力関係

(a) ウインドウ関係のメソッドを変更する必要があります.
ESP のウインドウと CESP のウインドウは似ていますが違うものです. 同 じクラスの同じメソッドでも機能が違うことがありますので注意が必要です. 特に, CESP の emacs_window は ESP の pmacs_window と別のものなのでご注 意ください (pmacs_window のかわりには scrollbar をお使い下さい) . ESP のマウス関係のマクロは CESP ではアトムになっていますので, 例えば mouse#r は'mouse#r' に変更が必要です. また, ウインドウのフォントは PSI と UNIX では互換性がありません.
(b) ファイル関係のメソッドを変更する必要があります.
ファイルはウインドウほどの違いはありませんが ESP と CESP では違い ます. 特に引数の順番が違っているメソッド (:create) がありますのでご注 意ください.
(c) ライブラリ管理クラス, ディレクトリクラス等が違います.
ライブラリ管理クラス, ディレクトリクラス等には ESP にはあって CESP にはないメソッドも存在しますので, これは個別に対応するか自分で差分をプ ログラミングする必要があります.

(4) その他

(a) PSI と UNIX マシンの性能差を考慮する必要があります.
UNIX マシンは ESP 専用マシンではありませんので, 実行スピードは遅く, メモリも PSI ほど豊富ではありません. 1クラスの節の数が多い場合には分割 してカタログして下さい. その他, 性能改善のテクニックについては「CESPプ ログラミングII」[2] を参照して下さい.
(b) 例外発生時の処理の設定が違います.
・ set_mode exception_fail/exception_handler
CESPshell で設定します. fail として扱うか, メニューを出す かを選択することができます.
・ set_exception_object/2
例外発生時に呼ばれる独自のクラスを設定することができます. ただし ESP と互換性はありません.
(c) as_program を継承してはいけません.
CESP には存在しません.

参考資料

[1] CESP 言語 3版, AI言語研究所 (1992).
[2] CESP プログラミングII, AI言語研究所 (1992).
[3] 小型化PSI/SIMPOS ESP 説明書 (SIMPOS 8.0版), 新世代コンピュータ 技術開発機構 (1992).
[4] 小型化PSI/SIMPOS プログラミング説明書 (SIMPOS 8.0版), 新世代コ ンピュータ技術開発機構 (1992).
[5] 中澤 修他 : ESPer への道, bit Vol.22, No.1-12, 共立出版 (1990).
[6] 藤瀬 哲朗他 : Common ESP 上の LTB について, 情報処理学会第42回 全国大会予稿集 5M-2 (1991).
[7] 中澤 修, 近山 隆 : オブジェクト指向論理型言語 Common ESP, 情報 処理, Vol.32, No.6 (1991).