_

もし、自分の娘が「おとうさん、私はこの人と一緒になります」と言いだして、その男がたまたまプログラマーだったら、俺はそいつにRubyでコードを書かせる。そして、そのコードを見て娘を幸せにできるかどうか判定する。

Rubyというプログラミング言語は、楽しいことを仕事にすること、あるいは仕事を楽しむことを要求する。それができないとうまくプログラムができないようになっている。開発者のまつもと氏は、何事にもすごく柔軟な発想をしバランス感覚に優れている人だが、「Rubyはプログラミングを楽しくする言語」ということだけには、かなり頑固であり意固地である。 Rubyは過去の言語の「いいとこどり」をした寄せ集めの言語だが、この点だけはユニークであり一貫している。

楽しさを最大化するには、自由が必要である。 Rubyは他の言語に比べて、プログラマに大きな自由を許している。「オブジェクト指向」という思想をそのために使っている。そして、自由が混沌にならないように、「自治」のための仕組を用意している。自分で自分を律していけば、どれだけ仕事が大きくなっても仕事は崩壊しない。たくさんの人がネットを通して共同作業しても問題ない。ただし、自治でなく他律的なコントロールを求めた瞬間に、全ての自由度が反逆してコードは滅茶苦茶になってしまう。

Javaはこのようの観点で見ると、Rubyの対極にある言語だ。 Javaプログラマ性悪説を取っている。誰かの仕事を監視するために、これほど洗練されたシステムはない。「監視」するということは期待すべき仕事の「成果」について、何かを知っていなくてはいけない。ソフトの世界で「成果」を全部予見できたら、仕事が終わっているということだ。最終的な「成果」の本質をうまく取り出さないと「監視」はできない。 Javaは「オブジェクト指向」をこのような「監視」のシステムとして活用している。

同じ「クラス」という言語の概念を、 Javaはひとを縛るために使い、 Rubyはひとのいましめを解くために使っている。どちらも過去の伝統を正統的に引きついでいる言語だが、 Javaではプログラマーが迷子にならないように伝統を活用し、 Rubyではプログラマーが冒険に出るために過去の知恵を集積している。

「Just for fun」という動機から成された最も大きな仕事がLinuxだ。 Rubyは同じ道を行き、これに匹敵する成果をあげるだろう。 オープンソースの本質はここにある。

ここ数ヶ月、痛いほど思い知らされたように、「憎しみ」も大きな仕事の動機となり得る。「憎しみ」にかられたプログラマーにはJavaが必要だろう。この事実から目をそむけるのは非現実的だ。

しかし、"fun" も同じように大きな仕事を成し遂げる。これも事実であり現実である。 RubyJavaというふたつの現実を同時に見ることは、たやすい仕事ではない。

だが、人間はそれをするためにこころとからだを同時に不可分に与えられているのだ。