Unix and Beyond: An Interview with Ken Thompson
https://cse.unl.edu/~witty/class/csce351/howto/ken_thompson.pdf
非常に複雑なものを提示されても理解できないのです。 私が今やっているようなことをしているのは、もし私がもっと複雑なものを構築していたら、それを理解できなかったからかもしれません。
これは昔のベル研究所の研究モデルで、人々は毎日交流しています。時には何もすることがない時もあります。プロジェクトが終了したり、飽きてしまったりして、何となく座って何かするものを探している。他の誰かにくっつき、水分子が相互作用するように、一緒にいて「言語に関するアイデアがある」と言い、誰かが興味を持つ。他の誰かが「ネットワークをどう組み込むのか」と尋ねる。そう、誰それがネットワークのモデルを持っている、と誰かが言う。 このように、5人か6人を超えることはめったになく、通常は2人か3人程度のチームがいくつかある。
何かを生み出すのに、初めから多くの人が必要ではない。必要なのはスケールじゃないYudai.icon
すべてのパーツが正しいにもかかわらず、システム全体に問題があることがわかると、「何かもっと良い方法があるはずだ」ということになります。そこで、議論を繰り返すのです。説得できる場合もあれば、できない場合もありますが、ほとんどの場合は代替案を提示することになります。それを試してみるのです。多くの議論は、最終的にそのようにして終わります。「私は正しい。お前など知るか」というわけです。そして、もちろん「地獄に落とされた」側は自分の主張を証明したくなるので、その場を離れてそれを実行します。それが最終的に自分の主張を証明する方法なのです。つまり、ほとんどの議論は、それを試してみるだけで終わるのです。
こういう環境を僕は作りたいんだYudai.icon
そしてこれは多分何より自分が求めているからなんだと思う
私がやっていることは、ある種のコンピュータ・ダーウィニズムのようなものだと思います。試してみて、うまくいかなければ捨てて、またやり直す。製品開発の環境では、それはできません。
技術的負債なんて意識もしていないんだと思うYudai.icon
だって「知」に対して貪欲なだけだから。証明することに貪欲なだけだから。そして違ったら違ったって情報を得ることができるんだから
Unixの開発の歴史についてはどうですか?
初期のバージョンは、そのプロジェクトが解散した後、私がPDP-7上でMulticsのコンセプトをいくつか試したものでした。想像できる限り最も小さなチームでした。その後、言語に興味を持っていたユーザーのダグ・マクイロイとデニス・リッチーの2人を引き入れました。彼らの非常に専門的で厳しい批評により、PDP-7のアセンブリ言語で2度ほど書き直しを行いました。ある時点で、私はMITのマーティン・リチャーズからBCPLを学び、かなり忠実な翻訳だと思ったのですが、それは結局異なる言語であることが判明したため、私はそれをBと呼び、次にデニスがそれを引き継いで型を追加し、Cと呼びました。私たちはPDP-11(初期の製品の一つ)を購入し、私はPDP-11アセンブリ言語でUnixを書き直し、実行できるようにしました。
何回書き直しているんだ....。
積み上げてきたことを破壊するをここでも実際に実現しているんだYudai.icon