Gaucheは他のScheme言語処理系にない、いくつかのユニークな特徴を持っています。
- 多くの部分がC言語で書かれている
- 高速である
- マルチバイト文字列に最初から対応している
- 正規表現ライブラリが最初から組み込まれている
- モジュールシステムが最初から組み込まれている
- SXML、コレクション、パターンマッチなど豊富なライブラリを持つ
- CLOS(Common Lisp Object System)ライクなオブジェクトシステムが最初から組み込まれている。Gaucheではすべてがオブジェクト
- ネイティブコード拡張機能を持つ。RDBMS対応ドライバやOpenGLなど、既存のCライブラリの利用が容易
Scheme自身で書かれているScheme言語処理系も少なくありませんが、Gaucheは多くの部分がC言語で書かれています。これは、C/C++言語からの呼び出しを容易にするという設計思想に由来しています。
Gaucheは高速なScheme言語処理系です。実行の都度ソースを読み込むスクリプト処理系でありながら高速化できたのは、ある程度の最適化を行うコンパイラを走らせてVMで実行しているからです。(ただし、バッチコンパイルを行う処理系に比べて高速というわけではありません)
Gaucheはマルチバイト文字列に最初から対応しています。最近ではマルチバイト文字列に対応しているScheme言語処理系が増えてきましたが、過去にはマルチバイト文字列に対応していなかったり、マルチバイト文字の処理に特別な機能拡張を必要とするものもありました。Gaucheは日本人によって開発されているので、最初からマルチバイト文字列を扱えるように設計されています。
Gaucheには正規表現ライブラリが最初から組み込まれています。Schemeの言語仕様に正規表現は存在しませんが、GaucheではPerlバージョン5に似た正規表現が使用できます。
Schemeの言語仕様にはモジュールシステムは存在しませんが、GaucheにはPerlのモジュールシステムに似たモジュールシステムが最初から組み込まれています。モジュールシステムは様々なライブラリをパッケージ化して管理するのに役立ちます。
GaucheにはXML表現を扱うためのSXMLや、C++やJavaのコレクションライブラリに似たコレクション、パターンマッチ(正規表現とは異なる)といった様々なライブラリが用意されています。これらのライブラリはモジュールシステムによって管理され、自分のプログラムに容易に組み込む事ができます。
Gaucheには、Common LispのオブジェクトシステムであるCLOSに似たオブジェクトシステムが最初から組み込まれています。Gaucheでは、数値や文字列といった基本データもすべてオブジェクトです。CLOSではクラスやメソッドを定義したり利用したりできるだけでなく、オブジェクトシステム自身を再定義したり操作したりできます。これをMOP(Meta Object Protocol)と呼びます。GaucheのオブジェクトシステムもCLOSと同様にMOPの上に構築されているので、オブジェクトシステムそのものを再定義したり操作したりできます。
Gaucheには既存のCライブラリを利用するためのネイティブコート拡張機能が用意されています。MySQLやPostgreSQL、FirebirdといったRDBMSを利用するためのドライバや、OpenGLに対応したグラフィックスライブラリをはじめとする多様な拡張ライブラリが開発されています。
既存の拡張ライブラリを利用できるだけでなく、独自のライブラリを書くためのAPIも公開されています。
背景にある思想
Gaucheはあくまで実用を主眼に開発されています。
標準への準拠も重要ですが、
実用的な多くの仕様や機能を備えています。
要約
- GaucheはSchemeの言語仕様の標準に準拠しているが、それ以外に多数の特徴を持つ
- Gaucheは実用に使えることを主眼に開発されている
Trackback URL: http://karetta.jp/trackback/book/004620/004630 Trackbacks: |