Ruby

Rubyピッケル本(言語編)を一応読みました。
3つ驚いた点があります。


1つは、文字列だけではなく、5とか3の整数も、trueやnilなどの値もオブジェクトになっていることです。
C++C#Javaはオブジェクトと基本型が融合した不純な(ハイブリッドな)オブジェクト指向言語ですが、Rubyは純粋なオブジェクト指向言語です。まぁ、Smalltolkが純粋なオブジェクト指向だったのでそれほどの驚きはなかったです。


2つめは、とても文法の細かいところに気が利いている点です。
例えば、配列の[-1]は後ろから1番目の要素になります。色々ありすぎて説明に困るけれど、色んな書き方ができたり、色んな小ワザがあります。そういう意味ではRubyってシンプルというよりは構文糖衣たっぷりの甘い言語です。それと旨いです。


3つめは、文法の粒度が細かいことです。
Javaだとオブジェクトとして扱えるのは、クラスやインターフェースと配列(・・・と列挙型やアノーテーション)だけですが、Rubyはメソッドや引数列、範囲までもオブジェクトです。それにハッシュやパターンも言語に入ってます。
コレだけ細かいとJavaなど他の言語で困るようなケースがRubyでは起こらないハズです。
Javaだと、ソートするときにわざわざComparatorを作ったり、独自に通知する仕組みを作るために新たにリスナーのinterfaceを作り、引数に渡すイベントクラスを作り、リスナーを実装したクラスとメソッドを作る必要があります。本当に書きたいのはメソッドの中だけなのに本質的でないコードが多すぎます。こういうところはJavaの小回りが効かないところです。
こんな細かいのはLISP/SchemeVDMぐらいしかみたことがありません。
しかも書きやすいし、オブジェクト指向です。
多分色んな局面でも困らないんじゃないかな?