For Gauche 0.9.5


Next: , Previous: , Up: はじめに   [Contents][Index]

1.1 Gaucheの概要

GaucheはScheme言語のスクリプトエンジンです。 Schemeプログラムを読み込み、直ちにコンパイルして仮想マシンで実行します。 Scheme言語の標準である、"Revised^7 Report on the Algorithmic Language Scheme" (R7RS)に準拠しています。また、SRFI (http://srfi.schemers.org) に規定されている数多くのライブラリを サポートしています。

Gaucheは、プログラマやシステム管理者がこなす日常の雑事を 効率よくSchemeで書けるようにすることを目的として設計されています。

世の中には多くのSchemeの実装がありますが、 それぞれの実装には長所と短所があります。 Gaucheが長所とするべく重点を置いているのは次のようなポイントです。

立ち上りが速いこと

Gaucheが想定している用途のひとつは、プロダクション環境でちょろっと 10行スクリプトをでっちあげて、それが非常に頻繁に呼ばれるようなケースです。 CGIスクリプトなどもそうです。 Gaucheは頻繁に使われる共通の機能については、豊富な組み込み関数として、 あるいはプリコンパイルされ素早くロードできるSchemeライブラリとして提供しています。

マルチコアの完全な活用

Gaucheは多くのプラットフォームでネイティブスレッドをサポートしています。 内部は全てプリエンプティブな並行スレッドを意識してかかれており (つまり、「巨大なひとつのロック」はありません)、 複数のコアを存分に活用できるようになっています。

マルチバイト文字列

文字列が1バイトキャラクタのみを扱っていれば良かった時代は過ぎ去りました。 現代のプログラミングシステムは、様々なエンコーディングによるマルチバイト文字/文字列を 自然に扱える必要があります。 Gaucheは内部的に文字列を全て、コンパイル時に選択したエンコーディングの マルチバイト文字列として扱います。後から付け足したライブラリレベルでの マルチバイト文字列のサポートよりも、一貫性がありロバストな文字列操作が可能になっています。 詳しくはマルチバイト文字列を参照してください。

統合されたオブジェクトシステム

CLOSライクなメタオブジェクトプロトコルを備えた強力なオブジェクトシステム が組み込んであります。STklosやGuileのオブジェクトシステムとかなり互換性があります。

システムインタフェース

Schemeは計算機の詳細の多くを抽象化しますが、プログラムを書いていると、 それらの高レベル層をバイパスして地下室に降りて作業しなければならないような時が あります。GaucheはPOSIX.1システムコールのほとんどを組み込みでサポートします。 また、ネットワーキングモジュールなど他のシステム関連モジュールは通常、 高レベルの抽象的なインタフェースと低レベルのシステムコールに近いインタフェースを 両方提供します。

強化された入出力

本物のアプリケーションはI/O無しでは成り立ちません。 SchemeはI/Oをポートとして簡潔に抽象化していますが、 標準のSchemeには最低限の操作しか定義されていません。 Gaucheはポートオブジェクトを入出力のための統合された抽象化オブジェクトと考え、 それを通して下位のI/Oシステム層にアクセスするユーティリティ関数を提供しています。 入出力を参照して下さい。

拡張された言語

Gaucheは単なるScheme実装というだけでなく、言語レベルでいくつかの拡張が施されています。 例えば、遅延シーケンスによって、あたかもそれが(遅延して実体化される点を除いて) 普通のリストであるかのように振るまう遅延データ構造を扱うことが可能になります。 あらゆるリスト処理を使用できるという意味で、遅延シーケンスは、 例えばストリーム(srfi-41)のようにライブラリレベルで 実装した遅延構造とは異なります。 これによって、遅延アルゴリズムをよりふんだんに使用したプログラミングが可能になります。


Next: , Previous: , Up: はじめに   [Contents][Index]