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

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

React学习手册

by Alex Banks, Eve Porcello

如果想学习如何使用React构建高效的用户界面,那么这本书就是为你准备的。本书作者将向你展示如何使用这款小型JavaScript库创建UI,并且可以在不重新加载页面的情况下,在数据驱动的大型网站上轻松显示数据变更。此外,你还将在阅读过程中学习函数式编程和最新的ECMAScript特性的使用。 由Facebook开发,并且被Netflix、Walmart和The New York Times等公司用于构建大部分Web界面,React很快就受到大众的青睐。通过这本实践指南你将学习如何构建React组件,并充分感受React在实际工作中的神奇魅力。 用JavaScript学习核心的函数式编程概念。 了解React在浏览器中的运行机制。 通过挂载和合成React组件来创建应用程序表现层。 使用组件树管理数据,减少调试应用程序的时间。 探索React组件生命周期,并用它来加载数据和提高UI性能。 为浏览器历史、书签和单页应用程序的其他功能选用路由解决方案。 学习如何在服务端构建React应用程序。

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

精實企業|高績效組織如何達成創新規模化

by Jez Humble, Joanne Molesky, Barry O'Reilly

『…對於組織要如何規劃、安排、落實與衡量工作,本書注定是這個領域中經典而且權威的參考…任何企業領導者,只要是關注透過技術創造競爭優勢與建立創新文化的人,都需要閱讀本書。』 — Gene Kim 《The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business …