Rubyは手軽なオブジェクト指向プログラミングのためのインタプリ タ言語です.Rubyは(Perlのような)テキスト処理やシステム管理の ための豊富な機能を持っています.また,Rubyは単純で,分かりや すく,簡単に拡張できます.
もし,簡単なオブジェクト指向のための言語を求めていたり,Perl は見にくいと感じていたり,Lispの考え方は好きだがあの括弧の多 さには困ると感じているなら,Rubyはまさにぴったりです.
Rubyの特長は次の通りです.
- インタプリタ
- Rubyはインタプリタ言語ですのでプログラムを実行するた めにコンパイルする必要はありません.
- 変数に型が無い (動的型付け)
- Rubyの変数はどのような型のデータも格納する事ができま すので,変数の型について心配する必要はありません.半 面,コンパイル時のチェックは弱くなります.
- 変数宣言が不要
- Rubyでは変数を宣言無しで使う事ができます.変数の種類 (ローカル変数,グローバル変数,インスタンス変数など) は変数名から知る事ができます.
- 単純な文法
- Rubyの文法はEiffelからわずかに影響を受けた単純なもの です.
- ユーザによるメモリ管理が不要
- Rubyはメモリ管理を自動的に行います.どこからもアクセ スされなくなったオブジェクトはインタプリタに組込みの ガーベージコレクタによって回収されます.
- 全てがオブジェクト
- Rubyははじめから純粋なオブジェクト指向言語として設計 されています.整数のような基本的なデータ型をはじめと して,全てのデータをオブジェクトとして統一的に取り扱 えます.
- クラス,継承,メソッド
- Rubyはクラス,継承,メソッドのようなオブジェクト 指向言語として基本的な機能は当然持っています.
- 特異メソッド
- ある特定のオブジェクトにメソッドを付加することができ ます.たとえば,GUIのあるボタンを押された時の動作をメ ソッドとして記述するような使い方ができますし,これを 応用してプロトタイプベースのオブジェクトプログラミン グも可能です(やりたければね).
- モジュールによるMix-in
- Rubyは多重継承は複雑さの源であるという見地から,意図 的に多重継承を持っていませんが,モジュールを使ってク ラス階層を横断して実装を共有できます.この機能を "Mix-in"と呼びます.
- イテレータ
- ループの抽象化を行うイテレータという機能があります.
- クロージャ
- 手続きをオブジェクトとして扱う機能があります.このオ ブジェクト化された手続きのことをクロージャと呼びます.
- 強力な文字列操作/正規表現
- Perlをお手本とした強力な文字列操作や正規表現検索の機 能があります.
- 多倍長整数
- 組込みの多倍長整数機能がありますので,メモリが許す限 り,非常に大きな整数の演算もできます.たとえば,400の 階乗なども簡単に計算できます.
- 例外処理機能
- 例外処理機能は例外的な状況への対処が簡単に書けます.
- OSへの直接アクセス
- Rubyは(UNIXの)ほとんどのシステムコールの呼び出し機能 を持っています.Rubyだけでシステムプログラミングも可 能です.
- ダイナミックローディング
- OSが許せば,オブジェクトファイルを実行時に読み込む機 能が提供されます.