前言
序
1 正規運算式比對器---by Brian Kernighan
程式設計實務
實作
討論
其他做法
基礎之上
結論
2 Subversion 的 Delta 編輯器:只談介面---by Karl Fogel
版本控制和目錄樹轉換
表達目錄樹的差異
delta 編輯器介面
這樣子,美嗎?
吸引人的抽象化
結論
3 我從沒寫過的最美麗程式---by Jon Bentley
我所寫過最美麗的程式
多還要更多、少還要更少
分析
何謂書寫?
結論
誌謝
4 找東西---by Tim Bray
論時間
問題:部落格資料
問題:誰取出什麼、何時?
大量搜尋
結論
5 正確>美麗>快速:設計 XML 查證器的教訓---by Elliotte Rusty Harold
XML 驗證的角色
問題
版本 1:實作雛型
版本 2:模仿 BNF 文法 O(N)
版本 3:初次最佳化 O(log N)
版本 4:第二次最佳化(不要檢查兩次)
版本 5:第三次最佳化(O(1))
版本 6:第四次最佳化(快取機制)
故事的寓意
6 整合測試的框架:來自脆弱性的美感---by Michael Feathers
驗收測試框架的三個類別
框架設計的挑戰
開放式框架
HTML 分析器能簡單到什麼程度?
結論
7 美麗測試---by Akberto Savoia
麻煩的二元搜尋
JUnit 簡介
釘牢二元搜尋
結論
8 動態產生影像處理程式---by Charles Petzold
9 由上而下運算子優先權---by Douglas Crockford
JavaScript
符號表
字符
優先權
運算式
插入運算子
前置運算子
指定運算子
常數
範圍
敘述
函式
陣列和物件實字
行所當行、想所當想
10 追尋加速的族群計數---by Henry S. Warren, Jr.
基本方法
個別擊破
其他方法
兩字的族群計數和與差
比較兩字的族群計數
計算陣列裡的 1 位元
應用
11 安全通訊:自由技術---by Ashish Gulhati
起步的關鍵
可用性是關鍵
基石
測試套組
可用之原型
清理、插入、下一步⋯⋯
在喜瑪拉亞山脈鑽研
看不見的手移動了
速率要緊
個人權利的通訊隱私
鑽研文明
12 BioPerl 的美麗程式---by Lincoln Stein
BioPerl 和 Bio::Graphics 模組
Bio::Graphics 設計流程
擴充 Bio::Graphics
結論和教訓
13 Gene Sorter 的設計---by Jim Kent
Gene Sorter 的用戶介面
透過網站維護和用戶間的對話盒
一點多型會走得長久
過濾出相關基因
大型美麗程式的理論
結論
14 優雅程式隨硬體演化:以高斯消去法為例---Jack Dongarra & Piotr Luszczek
電腦架構對矩陣演算法的影響
分解法
LINPACK 的 DGEFA 次常式
LAPACK 的 DGETRF
遞迴 LU
ScaLAPACK 的 PDGETRF
多核心系統的多執行緒
有關錯誤分析和運算計數
未來研究方向
進階閱讀資料
15 美麗設計的長期益處---by Adam Kolawa
我所想的美麗程式
介紹 CERN 程式庫
外在美感
內在美感
結論
16 Linux 核心驅動程式模型:一起運作的益處---by Greg Kroah-Hartman
從基底開始
再進一步縮減
規模放大至幾千台裝置
小型物件的鬆散聯結
17 另一層間接層---by Diomidis Spinellis
從程式碼到指標
從函式引數到引數指標
從檔案系統到檔案系統層
從程式碼到領域特定語言
多工和解多工
永遠分層?
18 Python 的辭典:滿足所有人的需要---by Andrew Kuchling
辭典之內
特殊調整
碰撞
改變尺寸
迭代和動態修改
結論
誌謝
19 NumPy 的多維迭代器---by Travis E. Oliphant
N 維陣列運算的重大挑戰
N 維陣列的記憶體模型
NumPy 迭代器的起源
迭代器的設計
迭代器的介面
結論
20 NASA 火星探測任務~ 高度可靠的企業系統---by Ronald Mak
火星任務以及 CIP
任務需求
系統架構
案例研究:Streamer 服務
可靠度
結論
21 ERP5:追求最大適應力的設計---Rogerio Atem de Carvalho & Rafael Monnerat
ERP 的一般目標
ERP5
底層 Zope 平台
ERP5 Project 的概念
ERP5 Project 撰碼
結論
22 一匙污水---by Bryan Cantrill
23 分散式程式設計和 MapReduce---Jeffrey Dean & Sanjay Ghemawat
引領範例
MapReduce 程式設計模型
其他 MapReduce 範例
分散式 MapReduce 的實作
模型的延伸
結論
其他閱讀資料
誌謝
附錄:字數計算解法
24 美麗的並行性---by Simon Peyton Jones
一個簡單的範例:銀行帳戶
軟體交易記憶體
聖誕老人問題
Haskell 的省思
結論
誌謝
25 語法抽象:syntax-case 展開器---by R. Kent Dybvig
syntax-case 的簡介
展開演算法
範例
結論
26 省力架構:網路軟體之物件導向框架---William R. Otte & Douglas C. Schmidt
樣本應用程式:日誌服務
日誌伺服器框架的物件導向設計
實作循序式日誌伺服器
實作並行日誌伺服器
結論
27 整合商務夥伴:REST 方式---by Andrew Patzer
專案背景
對外部客戶揭露服務
使用工廠模式替服務安排路徑
使用電子商務協定交換資料
結論
28 除錯之美---by Andreas Zeller
對除錯器除錯
系統化過程
搜尋問題
自動尋找失敗原因
delta 除錯
輸入最小化
獵捕缺陷
原型問題
結論
誌謝
其他讀物
29 把程式視為文章---by Yukihiro Matsumoto
30 對世界的唯一連繫---by Arun Mehta
基本設計模式
輸入介面
使用者介面的效率
下載
未來方向
31 Emacspeak:完備的音訊桌面---by T. V. Raman
產生語音輸出
具語音功能的 Emacs
無痛式線上資訊存取
摘要
誌謝
32 運行中的程式碼---by Laura Wingerd & Christopher Seiwald
有書籍的感覺
該相似處就要相似
縮排的危險
程式碼的導覽
我們所用的工具
DiffMerge 多變的過去
結論
誌謝
其他讀物
33 替「算書」寫程式---by Brian Hayes
非康莊大道
一點小忠告
三點一列問題
要小心應付的斜率
三角不等
迂迴曲折
廢話——我是說「啊哈!」
結論
進階閱讀
後記---by Andy Oram
作者群
索引