深入理解運算原理|從簡單的機器到無所不能的程式

Book description

Tom Stuart,電腦科學家、程式開發人員,也是倫敦一所數位產品顧問公司Codon的創辦人。 他擔任顧問、領導者、培訓師,協助公司改善他們創造軟體產品的方法,尤其是這些方法的品質和清晰度。

終於能以既吸引人又極具實用的方式,學習運算理論和程式語言設計。這本書以你所認知的脈絡解說電腦科學的理論,協助你察覺這些概念何以重要,以及如何將它們注入你的日常的程式設計工作。

本書揚棄數學符號或不熟悉的純理論程式語言(例如Haskell或Lisp),而是以簡化的風格,使用Ruby來呈現形式語意、自動機理論和lambda演算的函數程式設計。因此非常適合精通現代語言、但卻欠缺電腦科學正規訓練(或不足)的程式開發人員。

* 瞭解基礎運算概念,諸如語言裡的圖靈完整性
* 發現程式如何使用動態語意將想法傳達給機器
* 將電腦簡化到只剩基本元素,探索它可以做什麼
* 學習通用圖靈機如何引領今日一般用途的電腦
* 使用簡單的語言和細胞自動機來執行複雜的計算
* 判斷哪些程式語言的功能是運算的重要基石
* 檢查停止和自我參照如何使得某些運算問題無解
* 使用抽象解譯和型別系統來分析程式

Table of contents

  1. 封面
  2. 書名頁
  3. 授權聲明頁
  4. 目錄
  5. 前言
  6. 誰該讀這本書?
  7. 本書編排慣例
  8. 使用程式範例
  9. 致謝
  10. 第1章 夠用的Ruby
  11. 互動的Ruby殼層
  12. 基本資料
  13. 資料結構
  14. Procs
  15. 流程控制
  16. 物件和方法
  17. 類別和模組
  18. 其他的功能
  19. 區域變數和指定運算
  20. 字串內插
  21. 檢閱物件
  22. 列印字串
  23. Variadic方法
  24. 區塊
  25. 列舉
  26. 結構
  27. 猴子修補
  28. 定義常數
  29. 刪除常數
  30. 第1篇 程式和機器
  31. 第2章 程式的意義
  32. 意義的『意義』
  33. 語法
  34. 操作語意學
  35. 小步語意
  36. 大步語意 (1/2)
  37. 大步語意 (2/2)
  38. 指稱語意
  39. 運算式
  40. 陳述式
  41. 應用
  42. 實踐形式語意
  43. 形式
  44. 找出含義
  45. 備擇
  46. 實作解析器
  47. 第3章 最簡單的電腦
  48. 決定論有限自動機
  49. 狀態、規則、輸入
  50. 輸出
  51. 決定論
  52. 模擬物
  53. 非決定論有限自動機
  54. 非決定論
  55. 自由移動
  56. 正規運算式
  57. 語法
  58. 語意 (1/2)
  59. 語意 (2/2)
  60. 解析
  61. 等價 (1/2)
  62. 等價 (2/2)
  63. 第4章 只想加入運算能力
  64. 決定論下推自動機
  65. 儲存空間
  66. 規則
  67. 決定論
  68. 模擬物
  69. 非決定論下推自動機
  70. 模擬物
  71. 不等價
  72. 利用下推自動機解析
  73. 詞彙分析
  74. 語法分析
  75. 實踐
  76. 多大的運算能力?
  77. 第5章 終極機器
  78. 決定論圖靈機
  79. 儲存空間
  80. 規則
  81. 決定論
  82. 模擬物
  83. 非決定論圖靈機
  84. 最大的運算能力
  85. 內部儲存空間
  86. 副常式
  87. 數個磁帶
  88. 多維磁帶
  89. 通用機
  90. 編碼
  91. 模擬物
  92. 第2篇 運算和運算能力
  93. 第6章 無為的程式設計
  94. 模仿Lambda演算
  95. 使用Proc
  96. 問題
  97. 數值
  98. 布林值
  99. 述語
  100. 對組
  101. 數值運算 (1/2)
  102. 數值運算 (2/2)
  103. 串列
  104. 字串
  105. 解決方案 (1/2)
  106. 解決方案 (2/2)
  107. 程式設計進階技巧 (1/2)
  108. 程式設計進階技巧 (2/2)
  109. 實作Lambda演算
  110. 語法
  111. 語意 (1/2)
  112. 語意 (2/2)
  113. 解析
  114. 第7章 四處皆通用
  115. Lambda演算
  116. 部分遞迴函式 (1/2)
  117. 部分遞迴函式 (2/2)
  118. SKI組合器演算 (1/2)
  119. SKI組合器演算 (2/2)
  120. Iota
  121. 標籤系統 (1/2)
  122. 標籤系統 (2/2)
  123. 循環標籤系統 (1/3)
  124. 循環標籤系統 (2/3)
  125. 循環標籤系統 (3/3)
  126. 康威的生命遊戲
  127. 規則110
  128. 沃夫瑞的2, 3圖靈機
  129. 第8章 不可能的程式
  130. 生命的事實
  131. 通用系統可以執行演算法
  132. 程式可以參與圖靈機
  133. 程式碼就是資料
  134. 通用系統可以永遠循環 (1/2)
  135. 通用系統可以永遠循環 (2/2)
  136. 程式可以自我參照
  137. 可判定性
  138. 停機問題
  139. 建置停機核對器
  140. 絕對無法運作的狀況
  141. 其他無法決定的問題
  142. 令人沮喪的暗示
  143. 為什麼會這樣?
  144. 對付不可運算性
  145. 第9章 Toyland程式設計
  146. 抽象解譯
  147. 路線規劃
  148. 抽象體:乘法的正負號
  149. 安全和近似值:加法的正負號
  150. 靜態語意
  151. 實作物 (1/2)
  152. 實作物 (2/2)
  153. 好處和限制
  154. 應用
  155. 後記
  156. 索引 (1/3)
  157. 索引 (2/3)
  158. 索引 (3/3)
  159. 關於作者
  160. 出版記事

Product information

  • Title: 深入理解運算原理|從簡單的機器到無所不能的程式
  • Author(s): Tom Stuart
  • Release date: November 2017
  • Publisher(s): GoTop Information, Inc.
  • ISBN: None

You might also like

book

PHP設計模式學習手冊

by William Sanders

動態專案的物件導向程式設計 本書以簡單的範例與全方位的應用程式,教導你使用各種物件導向模式,讓你更有效率的建構伺服器端應用程式,並且在過程中增進你的 PHP 編程技巧。 《PHP 設計模式學習手冊》教導你更精緻的編程風格,讓你大幅度的減少開發時間。這些可重複使用的模式可以協助你解決複雜的問題,以及物件導向程式的組織方式,讓你只要調整一部分的程式,就可以修改大型專案。 ‧學習設計模式的概念,包括如何針對特定的問題來選擇模式 ‧探討物件導向程式設計的概念,如組合、封裝、多型與繼承 ‧應用創造型設計模式來動態建立網頁,以工廠方法取代直接實例化 ‧使用結構型設計模式,在不更改原始程式的情況下,改變既有的物件或結構 ‧使用行為型模式,讓物件互相合作完成任務 ‧使用行為型模式與 MySQL 互動,如 Proxy 與 …

book

成為卓越程式設計師的38項必修法則

by Pete Goodliffe

“本書會引發你對程式設計藝術與科學的熱情。Pete 知道:卓越的軟體,是優秀的人們盡最大努力所完成的。” -Lisa Crispin 《Agile Testing: A Practical Guide for Testers and Agile Teams》作者 如果你熱愛程式設計,想要提升自己的能力,那你就找到正確的資源了。《Code Craft …

book

LINUX系統程式設計 第二版

by Robert Love

內容涵蓋 Linux Kernel 3.0 『任何人只要是對 Linux 的應用程式撰寫有興趣,或是想要知道如何提高自己的程式設計技能,書架上都應該有一本《Linux 系統程式設計》。這是一本專業 Linux 程式員必讀的書籍』 —Jeremy Allison Samba 團隊 直接與核心及 C …

book

JAVASCRIPT錦囊妙計第二版

by Shelley Powers

網頁程式設計 "這是一本涵蓋全面並且擁有豐富實務範例的書。" -Dr. AxelRauschmayer, 《Speaking JavaScript》的作者 JavaScript在應用規模上日趨廣泛,如何善用JavaScript解決問題已是一門重要的課題。本書提供眾多的範例程式。這些範例涵蓋瀏覽器、伺服器及行動裝置領域的各種應用。每個範例包含可再利用的程式碼,對JavaScript物件、Node、Ajax、JSON、資料持續、圖形與多媒體、框架、JavaScript模組化、API等均提供了實用的建議。 針對有開發經驗的讀者,本書第一部分包羅JavaScript傳統應用方式以及新進概念。第二部份深入探討伺服器、行動應用開發以及許多最新工具。在過程中你將省下許多寶貴時間並學習到更多尖端技術。 主題簡介: ‧JavaScript經典 ‧陣列、函式與JavaScript物件 ‧存取使用者介面 ‧測試與可及性 ‧建立及使用JavaScript函式庫 ‧前後端的Ajax溝通 ‧豐富互動的網頁效果 …