Paul Grahamのプログラミング言語観・その1

by tanabe on April 05, 2005

3/21のエントリで予告していた「Paul Grahamのプログラミング観」について。

Paul Grahamの言語への要求は明快だ。Grahamのプログラミング言語に関する著述は多いが、その内容から特に重要なものを抽出すると次の三つへと集約できると思う。

  • プログラミング言語は強力であるべし
  • プログラミング言語は簡潔であるべし
  • プログラミング言語はデザインをするものを妨げるべからず

プログラミング言語は強力であるべし

これはすなわち、やりたいことがやれるということだ。プログラミング言語は、ハッカーのやりたいことを阻害する要因であってはならない。ハッカーがやりたいことがあれば、それはできるかぎり実現できる強力さを備えているべきだ。


本当に良い言語は、綺麗でかつ汚くあるべきだ。綺麗にデザインされ、直交性の高いオペレータと良く理解された小さなコアで構成され、しかしハッカーが好きなことをできるような汚さを備えている。 Cがこれに当てはまる。初期のLispもそうであった。本当のハッカーの言語は多少野卑な性質を持っているものだ。

from "人気の言語を作るには ---Being Popular---"

C言語の強力さは有名だ。Cがあれば、大抵のプログラムは書けてしまう。LinuxだってCだし、RubyだってCだ。携帯電話のような組込みのプログラムも多くがC(含むC++)で書かれている。

Cの強力さとは、つまりは「なんでもできること」であり、裏を返せば「なんでもできてしまい、安全のための制限がほとんど加わっていない」ということだ。

一方で、プログラミング言語の大きな流れとして、このような流れもある。

プログラミング言語の歴史をふりかえってみると、「正しくない」と考えられる行いをプログラマがするのを防ぐために驚くべき程の努力が払われて来た。

from "人気の言語を作るには ---Being Popular---"

ちなみに、この”努力”へのGrahamからの回答はこうだ。

これは危険なほどにおこがましい計画である。プログラマが必要とするであろうことを、どうやって言語設計者はあらかじめ知ることが出来ると言うのだ? 言語設計者は、ユーザを自分のミスから守ってやらなきゃならないようなまぬけではなく、設計者が考えもしなかったようなことを実現できる天才と考えた方が良いと思う。何をしようがまぬけは自分の足を撃つのだ。

from "人気の言語を作るには ---Being Popular---"

"ハッカー"にとっては、プログラミング言語の強力さとトレードオフで手に入れる安全には価値がないわけだ。

ただ、"ビジネスの連中"や"スーツ"は必ずしも同意見ではない。彼らは安全で標準な言語が大好きだ。ハッカーが(彼らにとって)わけの分からないことをしでかす恐れは少ないし、スキルの低いものが愚かな間違いを埋め込むのも防いでくれる。負けないビジネスをしていれば良い者にとって、安全で力の弱い言語は望ましいプログラミング言語なのだ。

ベンチャーで生き抜こうという者はこれではいけない。なぜならチャレンジャーは負けないことを目指しているだけでは不十分だからだ。(ボクシングでも引き分けは、チャンピオンの勝ちと同義だ。)大企業が追いつけないほどの圧倒的なアドバンテージを築く必要がある。そのためには、何よりも強力な武器が必要なのだ。

(続く)