Next: Common Lispとの互換性
Up: はじめに
Previous: EusLispにおけるオブジェクト指向プログラミング
- オブジェクト指向プログラミング
-
EusLispは、単一継承オブジェクト指向プログラミングである。
数値を除いた全てのデータ型は、オブジェクトで表現され、その動作は
それらのクラスの中に定義されている。
- Common Lisp
-
EusLispは、EusLispのゴールやオブジェクト指向と一致する限りにおいて、
[2]や[3]に書かれているCommon Lispの文法に従う。
次の節に互換性について記述する。
- コンパイラ
-
EusLispのコンパイラは、インタプリタによる実行よりも5〜30倍実行速度を
上げることができる。
コンパイラは、インタプリタと同一の構文を持っている。
- メモリ管理
-
フィボナッチバディ方法は、メモリ制御・GC・ロバスト制御に有効なため、
メモリ管理手法として、使用されている。
EusLisp は、比較的に平均的な量のメモリを持つシステムで動作できる。
ユーザーは、それぞれのデータ型毎のページアロケーションの最適化
を考える必要がない。
- 幾何学関数
-
数値は、いつも直接データとして表現されるため、
数値計算によってゴミは発生しない。
任意の大きさのベクトル・行列におけるたくさんの幾何学関数は、
内部関数となっている。
- 幾何学モデラー
-
立体モデルは、CSGの処理を使用して、基本的な形から定義することができる。
質量や干渉チェックや接触判別等を備えている。
- グラフィックス
-
描画時の陰線処理やレンダリング時の陰面処理を備えている。
画像をポストスクリプトデータとして出力できる。
- 画像処理
-
エッジ抽出機能を備えている。
- マニピュレータモデル
-
6自由度を持つロボットマニピュレータを簡単にモデル化できる。
- Xwindowインターフェース
-
Xlibの関数呼び出しとXlibのクラスおよび独自のXToolKitクラスの3つの
レベルのXwindowインターフェースを備えている。
- 他言語インターフェース
-
Cや他の言語で書かれた関数をEusLispの中から呼び出すことができる。
EusLispと他言語間の両方向呼びだしを備えている。
LINPACKのようなライブラリ内の関数は、このインターフェースを通して実行される。
X toolkitのCall-back関数はLispへ定義することができる。
- UNIX依存関数
-
ほとんどのUNIXのシステム呼びだしおよびライブラリ関数は、Lisp関数として
揃っている。
通信処理や非同期入出力も可能である。
- マルチスレッド
-
グローバルデータを分割してマルチ処理を実現するマルチスレッドプログラミングが
Solaris 2オペレーティングシステムの上で可能となった。
マルチスレッドは、非同期プログラミングを容易にし、実時間応答を改善する[5, 6]。
もし、マルチプロセッサのマシン上でEuslispを実行するならば、並列プロセッサの
高い計算能力を利用することができる。
Hirofumi Nakagaki
Fri Mar 22 14:04:29 JST 1996