2007-03-04

"ハッカーのたのしみ" Henry S. Warren, Jr 著

たまには真面目にプログラムの本を読むのも悪くない。本書は、いかにエレガントにコーディングするかがテーマである。マシン動作をイメージしたアセンブラレベルの話もあり、ハードウェア的要素もある。よって、ディジタル回路も気まぐれで設計するおいらには良書と言えるのである。

いきなりデータのビット操作から始まるが、目から鱗が落ちるのである。
演算回路でいつも悩まされるのが、符号付/符号なし演算、ビット操作など、いかにコンパクトにするかである。本書は、ビット操作やワード操作といったレベルから要素技術が紹介されているので、いろいろなアルゴリズムで使えそうである。
おいらは単純で頭が悪いので、できるだけわかりやすく記述しようとする。正確には自分にとってわかりやすくである。よって、冗長したコードとなり実行時間を犠牲にする。ゴリゴリとコンパクトに仕上げるのが苦手なのである。
こうした冗長プログラムもハードウェアの進化により時代が解決してくれている。とうとう、おいらの時代がきたぜ!と思っているうちに、今や高機能化、大規模化についていけない。どちらにせよ馬鹿は馬鹿なりに世界をみつけるのである。

除算の項の締めくくりにこんなフレーズがある。
「割り算ほど可愛くない演算を思い描くことは決してないだろう。答えを推測してから掛け算で確かめなければならない演算、我々が大きな犠牲を払っている演算、毎日は繰り返し無駄に過ぎた割り算のコードは多くの場合ぞっとするほど難しく、longの割り算は身の毛もよだつ。証明は脳に過負荷をかけることがあり、切り上げと切り捨てで狂気に追いやられるかもしれない。割り算の良いコードはクヌース級の英雄を魅了するが、神でさえ0で割ることができない!」
まったくだ。ディジタル回路で除算の実装で狂気に震えたことがある。こんな仕様を考えた奴は誰だ!と、いつも愚痴るのである。アル中ハイマーは、こんな面倒な仕事から逃避するのである。

平方根では、こんなフレーズがある。
「おお、捕らえ所のない平方根、それは確実に計算できるに違いない。けれど可能な最善の方法は、2のべき乗を用いてニュートン法を繰り返すであろう!」
おいらは、平方根にしても三角関数にしても、面倒なものはテーブルで逃げることばかり考える。そして、数値を組み合わせて近似する。最大限の手抜きしか考えない。たまにはエレガントにプログラムできないといけないと反省するのである。

本書を全部理解するのは生涯かけても無理だろう。アル中ハイマーは自分の馬鹿さ加減に飲むしかない。腹いせにヒルベルト曲線でも作って遊ぶしかないのである。

0 コメント:

コメントを投稿