Ruby / the genuine-object-oriented scripting language#
言語の特徴#
Rubyがよく分類される言語としての位置づけは、
- 純オブジェクト指向言語
- 軽量言語
- UNIX指向言語
などが挙げられます。
三つ目の表現はあまり聞きなれないかもしれませんが、 RubyはUNIXで培われた文化を色濃く受け継いでいます。 UNIXコマンド、C言語ライブラリ関数、Perlライブラリルーチンあたりから 借用されたネーミングは数多く、それに馴染んでいる人ならば 容易に動作を予測できるでしょう。 (が、リファレンスはちゃんと見ましょう :-)
また、この特徴を抜きにしても、Rubyはある面では非常に保守的な 手続き型言語です。
Rubyの導入#
動作を確認#
Windowsならコマンドプロンプト、UNIXならシェルに
ruby -vと訪ねてみましょう。インストールに成功していれば、 バージョン情報を教えてくれるはずです。
Hello, world!#
定番ですな。
print "hello, world!"文法#
などをさらっと流して書く。
Rubyドキュメントでの慣習#
メソッドとかを説明文中に表記するさい、 それなりに決まった流儀があります。 知っておくとマニュアルとかが読みやすい鴨。
- Hoge#piyo
- Foo.bar
- Vipper::IQ
上から順に、
- Hogeクラスのオブジェクトが持つpiyoというメソッド
- Fooクラスが持つメソッド(Javaでいうstaticメソッド)
- Vipperクラスが持つ定数IQ
ドキュメントの形式
テキトーな用語集#
- Matz
Rubyの生みの親であるまつもとゆきひろ氏のこと。
- モルモン教
キリスト教の宗派。Matzはこの信者。よく煽りのネタにされたが、あまりにイジられすぎて、最早2chRubyスレの習慣と化しつつある。
- Duck Typing
アヒルは、アヒルみたいに振舞うからアヒルとして認識されるんだぜ、という考え。つまりvipperがVipperクラスのインスタンスだからVipperなんだなー、と考える のではなく、 aori()やtsuri()など、Vipperらしい振る舞いをする(メソッドを持つ)からこそ、そのvipperというオブジェクトはVipperなんだなー、と捉える考え。 静的型付け言語における「型」とはその名の通りコンパイル時に決定できる変数の情報であるが、Rubyのような動的型付け言語では「型」=「応答できるメッセージ」と考える、それがDuck Typing。たしかSmalltalk辺りに由来する。
- 関数
Rubyに関数なんてものはない。 …が、例えばトップレベルで定義されたメソッドはレシーバなしで
n = method()のように書ける。そのようなメソッドを関数と呼び習わす。