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

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

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

以下Amazonから抜粋

プログラマであるピーター・サイベル氏が15人の偉大なプログラマー(コーダー)から その技を聞き出すインタビュー集を、『Joel on Software』訳者の 青木靖氏が翻訳。 

XEmacsとNetscapeブラウザの開発で名を馳せた――『ジェイミー・ザウィンスキー』 

大学に入る前に遊びでLiveJournalを立ち上げ必要だったからmemcashedも作った――『ブラッド・フィッツパトリック』 

影響力あるJavaScriptの論客にしてJSONの生みの親――『ダグラス・クロックフォード』 

ごく限られた時間と強い制約の中でJavaScript言語を設計した――『ブレンダン・アイク』 

世界中のJavaプログラマの尊敬を集めるカリスマ開発者――『ジョシュア・ブロック』 

並行プログラミングの必要性が増す中で注目を集めているErlang言語を作った――『ジョー・アームストロング』 

先進的言語Haskellの設計と実装における中心人物――『サイモン・ペイトン・ジョーンズ』 

NASAとGoogleという対照的なソフトウェア開発組織で研究部門のトップを勤めてきた――『ピーター・ノーヴィグ』 

SchemeとFortressを作り数々の主要言語の標準化に携わってきた真の多言語話者――『ガイ・スティール』 

BitBltを作って近代的GUIへの道を開き代々のSmalltalk環境を実装してきた――『ダン・インガルス』 

JITコンパイル技術を生み出しGhostscriptを作った――『L・ピーター・ドイチュ』 

スカンクワークスでUnixを作った――『ケン・トンプソン』 

最適化コンパイラ技術発展への貢献で女性初のチューリング賞受賞者となった――『フラン・アレン』 

最初のARPANETシステムを実装し「チューリングテストに通った」と騒がれたプログラムを60年代に書いた――『バーニー・コーセル』 

そして、多くの人が「地上最高のプログラマ」として名前を挙げる――『ドナルド・クヌース』

1年ほど前に原書を買っていたのだが途中で放置したままになっていた。

kindle買ってCoders at Work買ってjwzの章を読んでみた - wyukawa’s blog

で、IT業界の翻訳家としては村上春樹といってもいい青木さんによる翻訳が出たので早速買ってみました。まだ全部は読んでなくてジョー・アームストロングまで読みました。

本書はピーター・サイベルが15人の偉大なプログラマーに、下記のような内容をインタビューしていくものです。

  • 初めて書いたプログラムはどんなものか?
  • どうやってプログラムを設計するのか?
  • どうやってデバッグするのか?
  • いままで遭遇したなかで一番ひどいバグはどんなものか?
  • 人材の採用はどうするのがいいのか?
  • プログラミングに数学の知識が必要なのか?
  • クヌースの文芸的プログラミングはどう思うか?
  • The Art of Computer Programmingを読んだか?

本書の魅力は3つあって、第一に大物プログラマーがインタビューに答えている、第二にインタビューアーがかなり突っ込んで質問している、第三に翻訳が良い、ということです。

また各章の順番も微妙に関連している気がします。

例えばブレンダン・アイクがJavaをdisった後にジョシュア・ブロックが登場してJavaの並行処理は一番イケテルって主張してそのあとにはジョー・アームストロングが出てくるという感じです。

ただC++は一貫してdisられている気がしますw

誰が面白かったかというとジェイミー・ザウィンスキーも面白いんですが以前書いたので省くとブレンダン・アイクが面白いですw

具体的には、

p135

プログラミングに関しては、先ほど言った通り、低レベルのコーディングをやっていました。オブジェクト指向デザインパターンにはまるタイプではありません。エリック・ガンマの本は買ってません。Netscapeには、買収でやってきた、私やジェイミー・ザウィンスキーの天敵がいて、デザインパターンの本をバイブルみたいに振り回していて鼻につきましたが、彼らは良いプログラマではありませんでした。

p137

抽象化は強力です。90年代に私が大嫌いだったもの、嫌悪反応を示していたものは、CORBAやCOMやDCOMといったオブジェクト指向のナンセンスすべてです。当時のスタートアップはみんな、起動して"Hello, world"とプリントするだけで20万行のメソッド呼び出しを必要とするような狂ったことをやっていました。滑稽です。

デザインパターンオブジェクト指向がお嫌いのようですw

というかパターンは言語の欠陥を示していると言ってます。

p145

ダグはみんなにいろいろなパターンを教えましたが、私はピーター・ノーヴィグと同意見です。パターンは言語にある欠陥をしてしているのです。パターンはタダではありません。「ただのランチ」はないのです。

またJavaジェネリクスに関しては
p144

Javaのような労働者階級の言語はいかれたジェネリックシステムなど持つべきではありません。労働者たちは共変、反変のような型制約の構文がいったい何を意味するのか理解できないでしょう。

サーセンw

他にもp138あたりのJavaScriptの実装の話は面白いです。グローバルオブジェクトの設計に関してはやはりというべきか後悔しているようです。ただその背景についてもしゃべっていて興味深いです。