「Paul
Grahamのプログラミング言語観・その1」と「Paul
Grahamのプログラミング言語観・その2」の続き。
昨夜書き終えてストックしていたネタなのだが、うちにしてはめずらしく気の利いたタイミングでのエントリとなった。
プログラミング言語はデザインをするものを妨げるべからず
これは、やりたいことだけに集中できるということだ。プログラミングは創造的作業だ。プログラマが本来やるべきは、ソフトウェアをデザインすることで、そのために力を注ぐべきである。
プログラムというものは、証明のように、もともと様々な間違いの枝がそこいらじゅうに生えていた木の枝をきれいに刈り込んだものだ。だから言語の良さを測るには、完成したプログラムがどれだけ綺麗かを見るだけじゃだめで、プログラムが完成へと至った道筋がどれだけ綺麗だったかをみなければいけない。
from "デザインとリサーチ
---Design and Research---"
プログラムをハックする過程で、ハッカーがストレスを感じるか否かが重要なのだ。本当に創りたいものに集中していられるとき、ハッカーはストレスを感じないものだ。ストレスを感じるとしたら、そこには何か余分な機械的作業が発生している可能性がある。
例えば、Rubyはこの点を非常に重視した言語だ。GrahamがRubyに関しては比較的好意的な文脈で取り上げることが多いのはこの辺りが彼の好みに合うからかもしれない。
Rubyがもっとも重視しているのは多様性ではありません。それよりもむしろプログラミングという精神活動の中でいかにストレスを減らすかという点に注目しています。私は短気なのでプログラミング中の「イラツキ」は嫌いです。怒りによって生産性が下がるからです。生産性が低いとたくさん仕事をしなければなりません。それは怠惰な私にとって耐えられません。ですから、そのようなことをできるだけ感じずにすむようにRubyを設計しています。(略)
そしてなによりストレスが多いとプログラミングが楽しめないじゃないですか。「Enjoy programming」がRubyの真のモットーです。
from "まつもとゆきひろ
答える" at /.
Rubyにとってのストレスを感じないプログラミングは「驚き最小の原則」(言い回しは都度変わることが多い)という言葉に代表される。
Rubyが「驚き最小の原則」と言う場合には、さまざまなバックグラウンドの人々すべてを驚かせないことではなく(それはそもそも不可能でしょう)、Ruby
のやり方に十分に慣れた人が持つ常識が一貫して通用するという意味です。
from "まつもとゆきひろ
答える" at /.
このようなコンセプトで設計された言語でプログラミングをすることは、ソフトウェアをデザインするへ力を集中するのを大きく支援する。(Rubyが無理にPerlに合わせた実装にはストレスを感じることがあるが、それはまた別の話。)
Grahamの話に戻る。
突き詰めてゆくと、最後は自分の腹の底で判断せざるを得ないだろう。その言語でプログラムを書くときにどんな感じがするか。最良の言語を見付ける(そして設計する)方法は、その言語でどれだけうまく考えられるかという点に過敏になることだと思う。そうしておいて、一番いい感じの言語を選ぶか設計するかするんだ。
from "簡潔さは力なり---Succinctness
is Power---"
詳しくは後述するが、Grahamはハッカーの持つ力に最大限の敬意を払っている。そんな彼にとって最高の言語とは、ハッカーの持つ創造力を100%表現しきれる言語なのだ。