ハッカーのたのしみ

【 評価    】★★★☆☆ Amazonレビュー

【 難易度 】★★★★★

【 ISBN    】4-434-04668-3

プログラマ屋さんの本ではなく、コンパイラ屋さんのための本です。購読対象は、科学技術計算や画像処理、暗号アルゴリズムを実装する人です。本のタイトルから、セキュリティ本と勘違いしそうですが、その要素はまったく有りません。ひたすら数学とコンピュータの内部処理の話です。最初にいっておきますが、評価が不当に低い(☆3つ)のは、私のような普通のプログラマにこのような技術が要求されることは少ないからです。日本語訳が駄目な所以外は、良く纏まっていると思います。

本の内容としては、Knuth先生の本(Art of Computer Programings)を、整数演算とビット操作だけに絞り、コンパクトに纏めたような感じです。さらに数値の内部表現を32bitの2の補数だけとすることにより、ページ数を裂くことにも成功しています。浮動小数点についてはホンの数ページしか触れられてません(このように整数しか使わないのは、暗号屋さんに多いです)。

書いてあることの一部を紹介します。

  • ビット操作の基本
  • 32bitレジスタを使った64bit計算
  • 多倍長演算の基本

1番目にある、ビット操作の基本とは、ビットのシフトやローテイトを言ってるのでは有りません。一番右のビットをオンオフするためにはX=X|(X-1)X=X|(X+1)を行うなどを指します。

2番目についてはCのソースコードを交えてかなり詳細に説明されています。割り算がいかに高コストになるか、ソースコードを見るだけでも伝わってきます。

3番目はOpenSSLやJavaのBigNumクラスを使ってるような人には不要の話ですが、ICカードや組み込みなど脆弱なCPUで、且つ算術計算ライブラリが無い環境で開発している人には学習の助けとなると思います。いかんせんこのコードがそのまま使えるとは思いませんが・・・。

最後になりましたが、この本はコンピュータの歴史を感じられる読み物としての価値が高いと思います。よほど脆弱なコンパイラを使ってない限り、この本にあるような最適化手法をCのコードとして実装することはないでしょう(普通のコンパイラは割り算をそのままmul命令にコンパイルせず、マジックナンバーを利用します)。

ちなみに、コンパイラ最適化の仕組みを知りたい方には良い本なのかもしれません。いかんせん、人によって大きく価値の変わる本であることは間違いないです。

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz