[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Gaucheの概要

GaucheはScheme言語に基づくスクリプトインタプリタです。 Scheme言語の標準である、"Revised^5 Report on the Algorithmic Language Scheme" (R5RS)に準拠しています。また、SRFI (http://srfi.schemers.org) に規定されている数多くのライブラリを サポートしています。

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

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

立ち上りが速いこと

Gaucheが想定している用途のひとつは、プロダクション環境でちょろっと 10行スクリプトをでっちあげて、それが非常に頻繁に呼ばれるようなケースです。 CGIスクリプトなどもそうです。 Gaucheでは、言語のコアとスクリプトとして良く使いそうな機能に絞って 実行ファイルにコンパイルインし、使う分野が特定される機能は必要に応じて 読み込むようにしています。

マルチバイト文字列

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

モジュラー開発

Gaucheは名前空間を分離する単純なモジュールシステムを備えており、 名前の衝突を心配せずに複数の開発者が並行して作業をすることができます。

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

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

システムインタフェース

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

強化された入出力

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

一方、Gaucheは所詮インタプリタですから、高速に大量の計算をこなしたり 巨大なデータセットを扱ったりするのは苦手です。

但し、そのような場合でも、Gaucheを各コンポーネントをつなぐ「糊」言語として 使うことは可能です。例えば性能の要求の厳しい部分はネイティブコードにコンパイルする言語で 書いておき、セットアップにGaucheを使うといった方法があります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.