トップ «前の日記(2011-05-18) 最新 次の日記(2011-05-23)» 編集

日々の破片

著作一覧

2011-05-20

_ プログラミングの技をめぐる探究

Coders at Workをいただいたので、紹介します。

と言っても厚さが約600ページという分厚い(と言ってもうまく紙を選んでいるのでそんなに厚くはなく約2.5cm)本をもらったその日に紹介できるわけじゃない。レビューに参加させていただいたので、相当読んだからだ(でも、期間内に全部は読み切れなかった、すみません)。

これはオーム社同時代開発者叢書の白眉とでも言えるやつで、15人のすごいコーダー(コードを書く人)が、ピーター・サイベルというインタビュアー(追記:この人が実に良く、直前のインタビューイがくさしたものを次の人に弁護させたりする)に応えて、どうやってプログラミングを学んだとか、プログラミングってどんなものかとか、設計はとか、どんな本を読んだかとか(ほぼ全員がクヌースを挙げる。で、本書のトリはドナルド・クヌースなので、ちゃんとそれについてインタビューするわけだ)、あなたは一体なんでしょう? とかに応えたインタビューをまとめた本。翻訳はジョエルの訳でおなじみ青木靖さんで、適度に翻訳調、適度にくだけていて、適度に固い、僕は好きな文章だ。

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

いろんな人を揃えているので、それぞれの価値観が全然違うのがまず、とても良い。当然経歴も全然違う。これを読めば、すごい人たちはたった一つの冴えたキャリアパスをたどっているのではなく、いろいろだ、ということが良くわかる。

たとえば、最初に出てくるのは(僕が知ったのはNetscapeは死んだとかいってやめた時なのだが)Netscapeにいたザゥインスキーで、自分を職人とアーティストの間と位置付けていて、Lispは好き、Perlは嫌い、デザインパターン? くだらない、猿まね、塗り絵、ばかじゃないか? みたいな人。あとThe Art of Computer Programmingは読んでいない(でも読んだほうが良かったかも、でも数学をやる人間じゃないからねぇ、といった調子)。この人はすごく好きだ(でもデザインパターンについてはそれほどは同意しない)。

真ん中あたりで、Haskellを作った一人のサイモン・ペイトン・ジョーンズが出てくる。この人もおもしろい。あなたは職人か科学者か……と訊かれてもザゥインスキーのように直截的には答えない。ものを作るのはおもしろい。原理の抽出は重要だ。この人のインタビューはすごくおもしろいのだが、僕は要約できるほどの抽象化能力に欠けているので、自分で読むべきだろう。

かと思うと、ジョシュア・ブロックがいる。大きなプログラムにはIntelliJを使うそうだ。チームのみんなが使っているから。ちなみに、STMに対する評価は低く、並行プログラミングについてはJavaのアプローチが最良だと考えている(か、少なくともそう公言している)。

それから、この本を読んで大好きになったダグラス・クロックフォードという人もいる。JSONの生みの親だけど、読んでいるとJavaScriptプログラマというのはこういう人なのだな、となんか納得してしまう見解を述べまくっている。

Erlangのアームストロングも好きだ。デバッグはprint。「プログラミングの偉い神様が言っています。『汝プログラマの間違っていると思われる部分にprintf文を置きて再コンパイルし実行せよ』」

ケン・トンプソンもデバッグは「ほとんどの場合値をprintfするだけです。」ちなみに、C++については非常に微妙な言い方をしているが、もちろんまずい言語だと考えているし、「C++で書いたっていいんですけど、好きでないので抵抗があります。」とのことだ。

そして、ブレンダン・アイクだ。この人は無茶苦茶で実におもしろい。JavaScriptを作った男だ。「Javaのような労働者階級の言語はいかれたジェネリックシステムなど持つべきではありません。労働者たちは共変、反変のような型制約の構文がいったい何を意味するのか理解できないでしょう。」(そしてこの章の次にジョシュアブロックが来るわけだが)でもデバッグはGDB。

というように、それぞれ好き勝手なことを放言していて滅法おもしろい。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え