読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Rubyの哲学と歴史。そしてまつもとさん。

Ruby
<スポンサーリンク>

Rubyの哲学

まつもとゆきひろさんが監訳ではなく、著者として執筆している本。
1章にRubyの哲学が載っている。

  • 楽しいプログラミング

Rubyは「楽しさ」を第一の目標にした世界初(?)のプログラミング言語です。

たしかに、その通り。

Rubyオブジェクト指向言語なのも、インタプリタ型の言語なのも、またプログラミングが便利になる各種の機能を持つのも、すべて「プログラミングを楽しくする」という目的のためなのです。

作った人が言うんだから間違いない。
そして、実際使ってみても、なぜだか胸が高まる。
Sublime Textに出会ったときのような高揚感。

Rubyでは「楽しい」ということを第一の哲学としている。
プログラミングが大好きな人が、もっと楽しくプログラミングするために作った言語なのだから。

  • 簡潔なプログラミング

楽しくするために、簡潔に記述できるようにする、と。
そのために、面倒な決まり事が少ないようにする。
簡潔に、実際に動くコードを記述できるようにすることがRubyの第二の哲学。
そしてこれは、第一の哲学、「楽しくプログラミングする」につながる。

  • 自然なプログラミング

あることをやろうとしたときに、それに対するできるだけ自然な解決方法を提供することを目標としている。
この自然さは、僕ももっとRubyを触ればわかるのだろうか。
曰く、

人間は本質的に複雑なので、人間にとって自然であるためには、単純なことよりも「賢い」ことが重要です。人間様のために泥臭い仕事を片付けてくれることが、Rubyの設計原理であり、役割なのです。

と。

  • Principle of Least Surprise(POLS)

驚きを最小限にする。「驚き最少の法則」
既存の伝統を尊重し、一貫性を重視する。

やっぱりこうやってみると、美しい言語には美しい哲学があるんだね。

Rubyの歴史

読んでる本自体が2002年に出たものなので、ずいぶん古いけれど・・・。
Rubyの開発は1993年に始まった。
最初はPerlを覚えようとしていたまつもとさんが、Perlの「美しくない」その言語仕様が嫌になってしまったそうだ。
とはいえ、Perlsedawkを組み合わせるよりは強力で便利なことも事実だった。
このジレンマをどうしようと思い立ったのが、

「いっそ自分だけの言語を作るのはどうか?」

ということだったらしい(ここで「言語を作る」というのがすごいんだけど)
そんな経緯もあって、開発当初のRubyは「Perlの次」を意識して設計されている。
PythonRubyのライバルの位置づけのようだ。
で、実装という観点から見ると、最もRubyに近いのはCommon LispSchemeなどのLisp族言語なんだって。

Rubyの実装にあたってはLipsやSchemeの実装がずいぶん参考になりました。
catch/throw,callccなど、LispSchemeからもらってきた機能もいくつかあります。

とのこと。

開発の速度も凄まじく、1993年の2月に作って、夏にはもう動くものができていたという。
ある程度使い物になると感じたのが1994年の夏。
1994年末に限定的に公開された。
で、そのユーザの意見を反映した1年後(1995年12月)に、RubyNetNewsに公開。
その後、着実にユーザーを増やし続け、今に至る。

地味にRubyでもう20歳なんだね。
スーパーファミコンが出たのが1990年で、その3年後だから、ドラクエ5が発売して1年後か。
ドラクエ5が出たのが1992年だから。そんな昔からあるんだ。。

この章を読んで思ったこと

まつもとさんは天の上のまた雲の向こうにいる神様のような人なんだけど、Rubyの開発の原点ってやっぱり「現状への不満」だったんだろうな、と思った。
「なんでPerlはこんなんなんだよ!」という不満。
「俺ならもっとうまく作れるのに」
「もっと良くなるのに」
という不満。それが、世界で最もギークなプログラマを突き動かしたんだろう。

何かを開発するということは、現状への不満が原点になっていることが多い。
この機能足りなくね?もっといいものあるよね?こんなん世の中にあればいいのに!
といった気持ちが、開発者を動かす。それに共感したユーザーがついてきて、コミュニティを大きくしていく。

そして、良きシステムに良き思想があるように、美しいプログラミング言語にも美しい哲学がある。
「さっさと作る」「公開してから直していく」ということに注目されがちだけど、やっぱり長く愛される製品には哲学は必要だ。

そうじゃないと、後でブレてくるから。どこかで立ち返る哲学があれば、時代が進んでも、形が変わってもそこに戻ることができる。
1本の芯ができる。

設計思想、哲学、そういったものをちゃんと意識したい。
そして、その思想とか哲学って、きっと開発者の人生が出るものなんだろうな、と思っている。

美しい哲学には、美しい人生を!
ってなるのかな。

あと、開発のスピード。
Rubyを2月に作って、夏には動かしているって、凄まじいスピードだよね。

読んだ本

感謝のプログラミング

今回で感謝のプログラミングは【556時間目】
10000時間まで、あと【9444時間】