軟體彈性設計:如何避免陷入程式設計困境 Software Design for Flexibility: How to Avoid Programming Yourself Into a Corner

Chris Hanson,Gerald Jay Sussman 譯 謝學說//王子純//王剛//李濤

買這商品的人也買了...

相關主題

商品描述

本書主要介紹如何利用數學符號操作、基於規則的系統和通用程式建立靈活的軟體,並利用依賴系統追蹤、解釋和控制回溯。
第1章透過對程式設計哲學的介紹提出彈性的概念。
第2章探討如何用一些普遍適用的方法來建構易於擴展的系統。
第3章介紹謂詞分派的一般程序。
第4章介紹符號模式匹配,首先啟用術語重寫系統,然後透過合一展示類型推理的實現。
第5章探討解釋和編譯。
第6章展示如何建構分層資料和分層程式的系統,並以各種元資料註釋其中的資料項。
第7章引入傳播這個概念來擺脫電腦語言的面向表達式範式。

目錄大綱

目錄
譯者序
推薦序
前 言
致 謝
第1章自然與設計中的靈活性
1.1 計算體系結構
1.2 靈活的智慧組件
1.3 冗餘和簡併
1.4 探索行為
1.5 靈活性的成本
第2章領域專用語言
2.1 組合器
2.1 .1 函數組合器
2.1.2 組合器與形體構造
2.2 正則表達式
2.2.1 一種正則表達式組合語言
2.2.2 翻譯器的實現
2.3 包裝器
2.3.1 客製化包裝器
2.3.2 實施客製化器
2.3.3 適配器
2.4 抽象領域模型
2.4.1 單一化實現
2.4.2 領域模型分解
2.5 小結
第3章算術主題
3.1 組合算術
3.1.1 一個簡單的ODE積分器
3.1.2 調整算術運算子3.1.3 組合算術
3.1.3 組合運算
3.1.4 算術函數
3.1.5 組合器問題
3.2 可擴展的通用程式
3.2.1 通用運算
3.2.2 構建取決於順序
3.2.3 實現通用程式
3.3 範例:自動微分
3.3.1 自動微分的工作原理
3.3 .2 n元函數的導數
3.3.3 一些技術細節
3.3.4 微分參數的文字函數
3.4 高效率的通用程式
3:4.1 trie
3.4.2 快取
3.5 高效率的使用者自訂類型
3.5.1 謂詞的類型
3.5.2謂詞之間的關係
3.5.3 謂詞調度關鍵字
3.5.4 例:冒險遊戲
3.6 小結
第4章模式匹配
4.1 模式
4.2 項重寫
4.2.1 代數中的段變數
4.2.2 規則係統的實現
4.2.3旁白:魔術宏
4.2.4 有向模式呼叫
4.3 匹配器設計
4.3.1 編譯模式
4.3.2 匹配變數限制
4.4 合一匹配
4.4.1 合一的工作原理
4.4.2 應用:類型推斷
4.4.3 類型推斷的工作原理
4.4.4 增加段變數-一個實驗
4.5 圖上的模式匹配
4.5.1 將列表表示為圖
4.5.2 實現圖
4.5.3 圖上的匹配
4.5.4 棋盤和可交換圖形視圖
4.5. 5 棋步
4.5.6 實現圖形匹配
4.6 小結
第5章評估
5.1 通用eval/apply解釋器
5.1.1 eval
5.1.2 apply
5.2 具有非嚴格參數的程式
5.3 編譯為可執行程式
5.4 探索行為
5.4.1 amb
5.4.2 實現amb
5.5 探索潛在連續
5.5.1 作為非本地出口的連續
5.5.2 控制權的非本地轉移
5.5.3 從連續到amb
5.6 能力與責任
第6章分層
6.1 使用分層
6.2 分層的實現
6.2.1 分層資料
6.2.2 分層程序
6.3 分層算法
6.3.1 單位運算
6.4 使用依賴項註解值
6.4.1 支援層
6.4.2 提供正當性
6.5 分層的前景
第7章傳播
7.1例:到恆星的距離
7.2 傳播機制
7.2.1 單元
7.2.2 傳播器
7.3 多種不同的世界觀
7.4 合併值
7.4.1 合併基值
7.4.2 合併支持值
7.4.3 合併值集
7.5 搜尋可能的世界
7.5.1 依賴定向回溯
7.5.2 解決組合問題
7.6 傳播導致簡併
後 記
附錄A 支援軟件
附錄B Scheme程式語言
參考文獻