まつもと ゆきひろ@トヨタケーラムです.

htmlで書いちゃったチュートリアルですが,w3-modeを使えばプレ
インテキストに変換できることに気がつきました.

というわけで,「rubyとは?」です.
--
rubyとは?
----------------------------------------------------------

rubyは「お手軽オブジェクト指向プログラミング』を目指すオブジェ
クト指向言語です.rubyはインタプリタ型言語ですから,コンパイ
ル無しに気軽にプログラミングできます.また,perl並のテキスト
処理機能を備えていますので,たんなる玩具ではなく,実用的なプ
ログラミングもできます.それから,C言語による拡張が容易です
から,いろいろなライブラリのフロントエンドとしても使えます.

「お手軽なオブジェクト指向言語が欲しいなあ」とか,「perlの機
能は便利だが,あの文法は耐えられない」とか,「lisp系の言語の
思想は嫌いじゃないけど,括弧だらけなのはいや.せめて数式は普
通に書きたいし」などと思っている人には喜ばしい言語かもしれま
せん.

rubyの特長を箇条書にすると以下の通りです.

    インタプリタ
      rubyはインタプリタ型の言語です.コンパイルなどの手順 
      無しに手軽にプログラムを実行できます.

    変数に型が無い
      rubyの変数には型がないので,静的な型の整合性について 
      頭を悩ます必要はありません.その代わり,エラーチェッ 
      クはそのぶん甘いです.

    変数宣言が不要
      全ての変数は宣言無しにいきなり使うことができます.ま 
      た,変数名を見るだけでその変数の種別(ローカル,グロー 
      バル,インスタンス)を区別することができます.

    シンプルな文法
      Algol系の雰囲気を持つ比較的シンプルな文法を持ってい
      ます.

    メモリ管理が不要
      参照されなくなったオブジェクトはごみとして回収するゴ 
      ミ集め(Garbage Collect, GC)の機能を持っています.

    全てがオブジェクト
      rubyははじめから純粋なオブジェクト指向言語として設計 
      されていますので,整数などの基本的なデータ型をはじめ 
      として全てがオブジェクトであり,メッセージを送る統一 
      的なインタフェースを持ちます.

    クラス,継承,メソッド
      オブジェクト指向言語として基本的な機能は当然持ってい 
      ます.

    特異メソッド
      ある特定のオブジェクトにメソッドを付加することができ 
      ます.たとえば,GUIのあるボタンを押された時の動作を
      メ ソッドとして記述するような使い方ができますし,こ
      れを 応用してプロトタイプベースのオブジェクトプログ
      ラミン グも可能です(そんなことやる人はいないか).

    モジュールによるMixin
      rubyは意図的に多重継承を持っていませんが,クラス階層 
      を横断して実装を共有するための,モジュールを使った 
      Mixinという機能があります.

    イテレータ
      ループの抽象化を行うイテレータという機能があります.

    クロージャ
      手続きをオブジェクトとして扱う機能があります.このオ 
      ブジェクト化された手続きのことをクロージャと呼びます.

    強力な文字列操作/正規表現
      perlをお手本とした強力な文字列操作や正規表現検索の機 
      能があります.

    多倍長整数を持つ
      組込みの多倍長整数機能がありますので,非常に大きな整 
      数の演算もできます.たとえば,400の階乗なども簡単に
      計算できます.

    例外処理機能あり
      例外処理機能は例外的な状況への対処が簡単に書けます.

    OSへの直接アクセスが可能
      rubyは(UNIXの)ほとんどのシステムコールの呼び出し機能 
      を持っています.rubyだけでシステムプログラミングも可 
      能です.

    ダイナミックローディング
      OSが許せば,オブジェクトファイルを実行時に読み込む機 
      能が提供されます.

逆にrubyの欠点は以下の通りです.
    o インタプリタだから遅い
    o 静的チェックが少ない
----------------------------------------------------------
                                         matz / caelum.co.jp
Last modified: Tue Apr 16 18:25:08 1996