Coders at Work—プログラミングの技をめぐる探求

Peter Seibel著, 青木靖訳『Coders at Work プログラミングの技をめぐる探求 』(オーム社, 2011)

カバーは「アテネの学堂」。カットされた右サイド、アリストテレス側を埋めるにふさわしい、スーパースター15人へのインタビュー集。さまざまな抽象度で仕事をしている偉人の多くが、ライブラリを組み合わせるだけの現状を憂えているのが印象的だった。ソフトウェアに関わる最重要文献を網羅した、巻末の文献リストは要チェック。デザインパターンや形式的証明、XPなど、流行りものをやっつけるための権威付けがほしい人にもおすすめ。

印象に残った発言(一人一個)と、インタビューに登場したにもかかわらず巻末のリストには載っていない文献をまとめておく。文脈が気になる人は書籍にあたってほしい。

ジェイミー・ザウィンスキー (Jamie Zawinski)

みんなが最高だと言っていた本に『デザインパターン』があります。私はくだらないと思いましたけど。あれはいわばカットアンドペーストによるプログラミングです。(p.40)

ブラッド・フィッツパトリック (Brad Fitzpatrick)

あのXSS脆弱性を作りまくっているPHPプログラマたちは、航空管制システムを作っているのとは別の種類の人間だということは、はっきりさせておいたほうがよいと思います。(p.84)

ダグラス・クロックフォード (Douglas Crockford)

TeXのソースコードを)小説のように読みます。(p.112)

ブレンダン・アイク (Brendan Eich)

Netscapeには、買収でやってきた私やジェイミー・ザウィンスキーの天敵がいて、デザインパターンの本をバイブルみたいに振り回していて鼻につきましたが、彼らは良いプログラマではありませんでした。(p.135)

ジョシュア・ブロック (Joshua Bloch)

ある形態のトランザクショナルメモリは将来重要になるかもしれません。おそらくは並行ライブラリ設計者のための道具として。しかしSTMがツールとして成功し、それによってアプリケーションプログラマが、ロックなど気にすることなくスレッドが互いに干渉しない美しい世界に暮らすようになるとは思いません。そんなことは起き得ないことです。(p.195)

ジョー・アームストロング (Joe Armstrong)

Prologはほかのどのプログラミング言語とも違っています。まったく驚くべき考え方をもっています。(p.230)

サイモン・ペイトン・ジョーンズ (Simon Peyton Jones)

システムはあまりに多くのぐちゃぐちゃしたものに満たされています。ASP.NETでWebサービスみたいなものを構築しようと思ったら、これこれのAPIとこれこれのツールを知る必要があり、3つの異なる言語を使って書く必要があり、SilverlightとLINQを知る必要があり、頭文字がどこまでも続いていきます。そしてそのそれぞれに分厚い解説書があるのです。(p.276)

ピーター・ノーヴィグ (Peter Norvig)

多くのプログラマがモナドとは何かを理解せず、圏論の授業を受けてもいない、というのはギャップがあることを示しています。(p.291)

ガイ・スティール (Guy Steele)

TeXのソースコードについて)プログラムというのは、このようによく組織化し、よくドキュメントを付け、何かを素早く見つけられるようにできるものなのだと驚いたものです。(中略)ほとんど小説か何かのように読んでいくことができます。(p.331)

ダン・インガルス (Dan Ingalls)

私たちは知っているプログラミングシステムと言語については非常に上達しました。もし論理プログラミングについても同じくらいよくできたら? そしてそれがうまく統合されていたら? 人間中心の領域でずっと多くのすごいことができるのではないかと思います。(中略)私たちは意識せずにそれを押しとどめているのではないかと思います。(p.382)

L・ピーター・ドイチュ (L Peter Deutsch)

身の回りにあるまずいやり方がされているものを見ると、私はいつも不快に感じて、もっと改善できるはずだと考えたのです。若い人間の考え方です。(p.436)

ケン・トンプソン (Ken Thompson)

コンピュータサイエンス学科をでたばかりの人間を面接したら、下層のことは何も知らないでしょう。コンピュータとは何かということから、あるいは計算の理論からさえ、彼らが抽象化によっていかに隔てられているかを思うと、怖いくらいです。(p.470)

フラン・アレン (Fran Allen)

1960年までには、見事の言語のリストができていました。Lisp、APL、Fortran、COBOL、Algol 60。Cよりも高級な言語です。Cが開発されて、私たちは大きく後退したのです。(中略)Cのような言語は問題の解決法を細かく決めすぎてしまうからです。そういう言語が、学問としてのコンピュータサイエンスを壊してしまったのです。(JavaとかC#とかPythonとかRubyとかは?)依然として指定しすぎです。(p.490)

バーニー・コーセル (Bernie Cosell)

(Javaは)あまりできのよくないプログラマを助けようと、できることを制限してまっすぐな細い道を歩かせる言語(p.544)

ドナルド・クヌース (Donald Knuth)

私の本のどの5ページを取っても、誰かの一生涯分の研究になっているということです。(p.553)