magazine.gifビューティフルコード


推薦のことば
訳者まえがき
序文
はじめに

1章 正規表現マッチャ(ブライアン・カーニハン)

  • プログラミング作法
  • 実装
  • 議論
  • 代替案
  • 発展
  • 結論

2章 Subversionの差分エディタ:存在論としてのインタフェース(カール・フォーゲル)

  • バージョン管理とツリーの変換
  • ツリーの差分を表現する
  • 差分エディタのインタフェース
  • これは芸術だろうか?
  • 監視点としての抽象化
  • 結論

3章 私が決して書かなかった、一番美しいコード(ジョン・ベントリー)

  • 私が書いたことのある、一番美しいコード
  • より少ない行でより多くのことを
  • 展望
  • プログラムを「書くこと」とは?
  • 結論
  • 謝辞

4章 ものの見つけ方(ティム・ブレイ)

  • 時間について
  • 問題:ブログのデータ
  • 問題:誰が、何を、いつ取り出したか?
  • 大規模な探索
  • 結論

5章 正しく、美しく、速く(この順番で):XML検証ソフトの設計から(エリオット・ラスティ・ハロルド)

  • XML検証の役割
  • 問題
  • 第1版:素朴な実装
  • 第2版:BNF文法を真似て、O(N)で
  • 第3版:最初の最適化で、O(logN)に
  • 第4版:2回目の最適化で、重複チェックを省略
  • 第5版:3回目の最適化で、O(l)に
  • 第6版:4回目の最適化で、キャッシングする
  • 教訓

6章 テストのための統合的フレームワーク:脆さから垣間見る美しさ(ミカエル・フェザーズ)

  • 3つのクラスからなるソフトウェア受理テストのフレームワーク
  • フレームワーク設計の挑戦
  • オープンなフレームワーク
  • HTML解析器はどれくらいシンプルか?
  • 結論

7章 ビューティフル・テスト(アルベルト・サボイア)

  • やっかいな2分探索
  • JUnit入門
  • 2分探索を暴く
  • 結論

8章 画像処理のためのその場コード生成(チャールズ・ペゾルド)

9章 下向き演算子順位解析(ダグラス・クロックフォード)

  • JavaScript
  • 記号表
  • トークン
  • 優先順位
  • 中置演算子
  • 前置演算子
  • 代入演算子
  • 定数
  • スコープ
  • 関数
  • 配列リテラルとオブジェクトリテラル
  • 発展と考察

10章 高速ビットカウントを求めて(ヘンリー・S・ウォーレン, Jr.)

  • 基本的な方法
  • 分割統治法
  • その他の方法
  • 2語のビットカウントの和と差
  • 2語のビットカウントの比較
  • 配列のビットカウント
  • 応用分野

11章 安全な通信:自由のための技術(アシシ・グルハッチ)

  • はじまりの心意気
  • セキュアなメッセージ送信の複雑さを解決する
  • 大事なのはユーザビリティ
  • 基盤
  • テスト群
  • 動作するプロトタイプ
  • 整理し、つなぎ換え、動かす…
  • ヒマラヤ山脈でハックする
  • 見えざる手が動く
  • 速度が実際に問題である
  • 個人の権利のための通信プライバシー
  • 文明をハックする

12章 BioPerlにおける美しいコードの成長(リンカーン・シュタイン)

  • BioPerlとBio::Graphicsモジュール
  • この章のコードを読むために
  • Bio::Graphicsの設計プロセス
  • Bio::Graphicsを拡張する
  • 結論と教訓

13章 遺伝子ソータの設計(ジム・ケント)

  • 遺伝子ソータのユーザインタフェース
  • ウェブ上でのユーザとの対話管理
  • 少しのポリモルフィズムを使いたおす
  • フィルタで関連する遺伝子のみに絞る
  • 大き目のコードにおける美しさ
  • 結論

14章 エレガントなコードはハードウェアに合わせて進化する:ガウス消去法の場合(ジャック・ドンガーラ、ピョートル・ラスツゼック)

  • コンピュータアーキテクチャが行列アルゴリズムに及ぼす影響
  • 行列分解
  • 単純版
  • LINPACKのDGEFAサブルーチン
  • LAPACKのDGETRF
  • 再帰的LU分解
  • ScaLAPACK PDGETRF
  • マルチコアシステムのためのマルチスレッド化
  • 誤差解析と操作数について
  • 研究の将来動向
  • 参考文献

15章 美しいデザインの長期にわたる恩恵(アダム・コラワ)

  • 私の考える美しいコード
  • CERNライブラリの紹介
  • 外側の美しさ
  • 内側の美しさ
  • 結論

16章 Linuxカーネルのドライバモデル:一緒に働くことの恩恵(グレッグ・クローハートマン)

  • 控え目なはじまり
  • さらに小さくする
  • 数千個のデバイスへの規模拡大
  • ゆるく結合された小さなオブジェクト

17章 もう一段の間接参照(ディオミディス・スピネリス)

  • コードからポインタへ
  • 関数の引数から引数ポインタへ
  • ファイルシステムからファイルシステムレイヤーへ
  • コードからドメイン特化言語へ
  • 混合と分離
  • レイヤーは永遠か?

18章 Pythonの辞書実装:すべての人々にすべてのものであること(アンドリュー・クッヒリン)

  • 辞書の内部
  • 特別扱い
  • 衝突
  • 大きさ変更
  • 繰り返しとダイナミックな変更
  • 結論
  • 謝辞

19章 NumPyの多次元イテレータ(トラビス・E・オリファント)

  • N次元配列操作における鍵となるチャレンジ
  • N次元配列のためのメモリモデル
  • NumPyのイテレータの由来
  • イテレータの設計
  • イテレータのインタフェース
  • イテレータの利用
  • 結論

20章 NASAの火星探査機計画のための高信頼エンタープライズシステム(ロナルド・マック)

  • ミッションとCIP(協調的情報ポータル)
  • ミッションのニーズ
  • システムアーキテクチャ
  • 事例研究:ストリーマサービス
  • 信頼性
  • 頑強さ
  • 結論

21章 ERP5:最高水準の適応性に向けた設計(ロジェリオ・アテム・デ・カルバルホ、ラファエル・モネラ)

  • 一般的なERPの目標
  • ERP5
  • Zopeプラットフォーム基盤
  • ERP5 Projectのコンセプト
  • ERP5 Projectのコーディング
  • 結論
  • 謝辞

22章 スプーン一杯の汚水で(ブライアン・キャントリル)

23章 MapReduceでの分散プログラミング(ジェフ・ディーン、サンジェイ・ゲマワト)

  • 単語検索の例題
  • MapReduceのプログラミングモデル
  • MapReduceを使った別の例
  • 分散MapReduceの実装
  • モデルの拡張
  • 結論
  • 参考文献
  • 謝辞
  • 付録:単語計数問題の解法

24章 美しきかな、並列(サイモン・ペイトン・ジョーンズ)

  • 簡単な例:銀行口座問題
  • ソフトウェア・トランザクショナル・メモリ
  • サンタクロース問題
  • Haskellにおけるリフレクション
  • 結論
  • 謝辞

25章 構文の抽象化:syntax-caseマクロ(ケント・ディヴィグ)

  • syntax-caseの簡単な紹介
  • 展開アルゴリズム
  • 例題
  • 結論

26章 労力節約のアーキテクチャ:ネットワークソフトウェアのためのオブジェクト指向フレームワーク(ウィリアム・R・オッテ、ダグラス・C・シュミット)

  • 簡単なアプリケーション:ログ記録サービス
  • ログ記録サーバー用フレームワークのオブジェクト指向設計
  • 逐次的なログ記録サーバの実装
  • 並列ログ記録サーバ実装
  • 結論

27章 ビジネスパートナーをRESTfulにまとめ上げる(アンドリュー・パッツァー)

  • プロジェクトの背景
  • 外部の顧客にサービスを提供する
  • ファクトリパターンを使ってサービスを振り分ける
  • e-ビジネスプロトコルでデータを交換する
  • 結論

28章 美しいデバッグ(アンドレアス・ツェラー)

  • デバッガをデバッグする
  • 系統だった方法
  • 探索問題
  • 失敗の原因を自動的に見つける
  • 差分デバッグ
  • 入力の最小化
  • 欠陥を狩り込む
  • プロトタイプの問題
  • 結論
  • 謝辞
  • もっと学びたい方へ

29章 エッセイのごときプログラム(まつもとゆきひろ)

  • 簡潔さ
  • 保守性
  • シンプルさ
  • 柔軟性
  • バランス

30章 世界につながる手段がボタンだけだったら(アラン・メータ)

  • 基本設計モデル
  • 入力インタフェース
  • ユーザインタフェースの効率
  • ダウンロード
  • 将来に向けて

31章 Emacspeak:完全に音声のみのデスクトップ環境(T. V. ラマン)

  • 音声出力の生成
  • 音声版Emacs
  • オンラインの情報へのスムーズなアクセス
  • 要約
  • 謝辞

32章 働くコード(ローラ・ウィンガード、クリストファー・セイワルド)

  • 「本のよう」であること
  • 似たものは似て見えるようにすること
  • 字下げの危険性
  • コードをナビゲートする
  • 私たちの使うツール
  • DiffMergeの波乱万丈の過去
  • 結論
  • 謝辞
  • 参考文献

33章 「本」のためにプログラムを書く(ブライアン・ヘイズ)

  • 非王道を行く
  • 括弧嫌いの人に警告
  • 3点の共線性
  • あぶない傾き
  • 三角形の不等性
  • 「紆余曲折」をする
  • 「ダァー!」――これがアハ! 体験だあ
  • 結論
  • 参考文献

『ビューティフルコード』日本語版発刊記念対談
久野靖 × まつもとゆきひろ「コンピュータサイエンスをなめるな!」

おわりに
著者・編者紹介
索引
著者あとがきに代えて――日本のみなさんへのメッセージ
訳者あとがき