「ビューティフルコード」を読みました
分厚くて読むのに躊躇していましたが、「 ビューティフルコード 」を読みました。
率直な感想を書くと期待ほど面白くはありませんでした。ただ、後半の数編が面白かったので読後感は悪くありません。書き手に大御所が並びますが、ありがたい話だと思って思考停止するより、書いてあること古くないか?と批判的に読むべきだと思います。
個別の感想です。名前とメインのプログラミング言語を列挙しています。
1章 ブライアン・カーニハン [C言語]
批判的に読むべきだと大見得切った直後にいきなりですがカーニハンの批判は書けません。Unixの神々のひとりだからです。聖域です。批判的精神は大事ですが聖域はそれを超越します。内容は正規表現の実装の話です。「 プログラミング作法 」から適当に抜粋しただけの手抜き...ではなく再利用記事です。つまらなくはないです。面白くもないですが。
2章 カール・フォーゲル [C言語]
subversionの実装の話です。何が美しいのか理解できませんでした。
3章 ジョン・ベントリー [C言語]
名著「 珠玉のプログラミング 」のジョン・ベントリーです。ビッグネームを冒頭に並べて気を惹こうという編集者のいやらしい魂胆が見え隠れしますが、名著は名著です。昔(http://dev.ariel-networks.com/blog/inoue.php?blogid=2&archive=2004-5-22)、アリエルでも「 珠玉のプログラミング 」を使って勉強会していました。みんな若かったです。「 ビューティフルコード 」の本記事(クイックソートの話)は、後半あまり面白くなかったです。
4章 ティム・ブレイ [Ruby]
かつてのSunのスターエンジニア、いつの間にかGoogleに移籍していたティム・ブレイです。Rubyの紹介記事みたいになっています。内容が薄すぎます。
5章 エリオット・ラスティ・ハロルド [Java]
JavaでXMLパーサの話です。つまらないです。Javaだからでしょうか?
6章 ミカエル・フェザーズ [Java]
またJavaです(題材はテスティングフレームワークFIT)。5章と同程度につまらないです。もしかしたらぼくはJavaを嫌いなのかもしれません。
7章 ミカエル・フェザーズ [Java]
寡聞にして、2006年までJavaの2分探索のコードに潜在バグがあったこと(http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html)を知りませんでした。それを知っただけでも読む価値はありました。内容はJUnitネタであまり面白くありませんでした。つくづくJavaと相性が悪いようです。
8章 チャールズ・ペゾルド [C#]
Cで速いコードを書いた話に続いてC#で書くと遅くなった話、仕方ないのでC#から.NET中間コードを実行時に生成して速くする話、という展開です。ネタとしては面白いのですが、遅い部分だけ素直にCで書けばいい気がしてなりません。
9章 ダグラス・クロックフォード [JavaScript]
JavaScript教団の教祖格ですが、ぼくはJavaScript教徒ではないので関係ありません。JavaScriptでJavaScriptインタプリタ(パーサだけ)を書く話です。難しいです。
10章 ヘンリー・S・ウォーレンJr [C言語]
ビットカウントの話です。ビット演算はいいですね男らしくて。後半難しくて理解できませんでしたが。
11章 アシシ・グルハッチ [Perl]
PGPの話です。信じられないほどつまらない記事でした。Perlのせいでしょうか。
12章 リンカーン・シュタイン [Perl]
これもつまらないです。コールバック関数(フック)で拡張できる仕組みを説明していますが、常識的すぎます。
13章 ジム・ケント [C言語]
CでCGI書いている時点で古いです。ぼくはCが好きなのでCを悪く書く気もないですが、さすがにCでCGIを書くと本質的でない部分に労力が割かれすぎます。
14章 ジャック・ドンガーラ、ピョートル・ラスツゼック [Fortran]
行列演算の話。全然わからないので感想はパス。
15章 アダム・コラワ [Fortran]
同じくパス。
16章 グレッグ・クローハートマン [C言語]
Linuxカーネルの話です。Cで継承およびリファレンスカウンタによるメモリ管理をする話です。古典テクニックですが、ここまで読んできた中では一番面白く読めた記事です。やはりCはいいです。
17章 ディオミディス・スピネリス [C言語]
FreeBSDの話です。ネタは微妙に16章と被っている気がしますが、こちらはあまり面白くありませんでした。
18章 アンドリュー・クッヒリン [C言語]
Pythonの辞書(ハッシュ表)の実装の話です。普通すぎて特に感想はありません。
19章 トラビス・E・オリファント [C言語]
18章に引き続きPythonネタですが、Python自体の内部実装の話なので言語はCです。面白くありませんでした。
20章 ロナルド・マック [Java]
EJBでSOAの話です。と言っても、載っているコードはただのサーブレットです。Spring時代の目で見ると古く感じます。
21章 ロジェリオ・アテム・デ・カルバルホ、ラフェエル・モネラ [Python]
Zope上に構築されたERP5の話です。ERP5の一部分の抜粋すぎて理解できませんでした。
22章 ブライアン・キャントリル [C言語]
Solarisカーネル内部の排他制御の話です。マルチスレッドがある局面で見せる信じられない難解さは伝わってきます。最終的な結論は実はあまり理解できていませんが。
23章 ジェフ・ディーン、サンジェイ・ゲマワト [擬似コード]
MapReduceの話です。単語の数え上げです。ごめんなさい、もう見飽きました。
24章 サイモン・ペイトン・ジョーンズ [Haskell]
排他制御をロックでやるのは難しすぎる、という話に続いて、HaskellでSTM(ソフトウェア・トランザクション・メモリ)の話です。途中までわかった気になりました。騙された気分とも言えます。22章でパズルのようなロックを見た後なのでSTMに夢を見たくなります。
25章 ケント・ディビィグ [Lisp]
Lispのマクロの話です。手段が目的化している懸念が消えません。
26章 ウィリアム・R・オッテ、ダグラス・C・シュミット [C++]
テンプレートメソッドパターンを中心に据えたフレームワーク設計の話です。昔は好きなネタでしたが個人的には多少聞き飽きた感が強いです。嫌いになったわけではなく、考え方(変わりやすい部分を外部に追い出す)がむしろ常識化して今更何も感じなくなりました。
27章 アンドリュー・パッツァー [Java]
JavaでRESTfulなWebアプリの話ですが、20章同様、アノテーションもDIもないコードは古く感じます。
28章 アンドレアス・ツェラー [Python]
タイトルは「美しいデバッグ」。DDD作者(のひとり)。まあまあ面白いです。
29章 まつもとゆきひろ [Ruby]
Rubyのデザインの話です。Ruby宣伝ネタです。お世辞ではなく面白いです。
30章 アラン・メータ [なし]
ユーザインターフェースの話です。タイトルは「世界につながる手段がボタンだけだったら」。特に感想はありません。
31章 T・V・ラマン [Emacs Lisp]
Emacspeakの実装の話です。defadviceを知らずに読めば感動したかもしれません。
32章 ローラ・ウィンガード、クリストファー・セイワルド [C++]
この章と次の33章が本書で面白く読めた双璧です。内容的には、ソースコードは「本のよう」であるべき、に始まるプリティコードの7ヵ条の話です。7ヵ条は以下のページで読めます(Webはアルファベット順なので"Blend In"から始まっています)。
本記事から引用します。
コードそのものがアウトラインの形をしていて、ページの左側をざっと眺めていくことで論理構造の大局観を得ることができます。
美しいです。
33章 ブライアン・ヘイズ [Lisp]
軽いアルゴリズム話。文章の展開がうまいです。よくできた短篇小説を読むようです。本記事で最後が締まりました。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/beautiful-code/tbping