计算的本质 : 深入剖析程序和计算机

0
(0)

计算的本质
: 深入剖析程序和计算机

作者:[英]TomStuart

出版社:人民邮电出版社

副标题:深入剖析程序和计算机

原作名:UnderstandingComputation:FromSimpleMachinestoImpossiblePrograms

译者:张伟

出版年:2014-11

页数:300

定价:69.00元

装帧:平装

丛书:图灵程序设计丛书

ISBN:9787115361547

内容简介
······

《计算的本质:深入剖析程序和计算机》借助Ruby全面介绍计算理论和编程语言的设计。作者注重实用性,不仅尽量抛开复杂难懂的数学符号,而且特别选用简单快捷的编程语言Ruby,在读者熟知的背景知识下,以明晰的可工作代码阐明形式语义、自动机理论,以及通过lambda演算进行函数式编程等计算机科学知识,并为让其自行探索做足准备。

本书适合计算机科学系学生,以及熟知现代编程语言,想要系统地学习计算机科学知识的程序员、软件工程师阅读参考。

作者简介
······

Tom Stuart

Tom Stuart 伦敦数字产品咨询公司Codon的创始人、计算机科学家、程序员,擅长Ruby、Rails、Web应用、用户体验、面向对象设计和行为驱动开发。另外,作为顾问、导师和培训师,他经常通过网络帮助各家公司高质高效地创建软件产品。他还曾在剑桥大学做编译器优化方面的演讲,与人联合组织过Ruby大会(Ruby Manor),而且是伦敦Ruby用户组的成员。

目录
······

封面介绍  X

前言  XI

第1章 刚好够用的Ruby基础  1

1.1 交互式Ruby Shell  1

1.2 值  2

1.2.1 基本数据  2

1.2.2 数据结构  3

1.2.3 proc  4

1.3 控制流  4

1.4 对象和方法  5

1.5 类和模块  6

1.6 其他特性  7

1.6.1 局部变量和赋值  7

1.6.2 字符串插值  8

1.6.3 检查对象  8

1.6.4 打印字符串  8

1.6.5 可变参数方法(variadic method)  9

1.6.6 代码块  9

1.6.7 枚举类型  10

1.6.8 结构体  11

1.6.9 给内置对象扩展方法(Monkey Patching)  12

1.6.10 定义常量  13

1.6.11 删除常量  13

第一部分 程序和机器

第2章 程序的含义  17

2.1 “含义”的含义  18

2.2 语法  19

2.3 操作语义  19

2.3.1 小步语义  20

2.3.2 大步语义  40

2.4 指称语义  46

2.4.1 表达式  46

2.4.2 语句  49

2.4.3 应用  51

2.5 形式化语义实践  52

2.5.1 形式化  52

2.5.2 找到含义  53

2.5.3 备选方案  53

2.6 实现语法解析器  54

第3章 最简单的计算机  59

3.1 确定性有限自动机  59

3.1.1 状态、规则和输入  60

3.1.2 输出  60

3.1.3 确定性  61

3.1.4 模拟  62

3.2 非确定性有限自动机  65

3.2.1 非确定性  65

3.2.2 自由移动(free move)  71

3.3 正则表达式  74

3.3.1 语法  75

3.3.2 语义  78

3.3.3 解析  86

3.4 等价性  88

第4章 增加计算能力  97

4.1 确定性下推自动机  100

4.1.1 存储  100

4.1.2 规则  101

4.1.3 确定性  103

4.1.4 模拟  103

4.2 非确定性下推自动机  110

4.2.1 模拟  113

4.2.2 不等价  115

4.3 使用下推自动机进行分析  116

4.3.1 词法分析  116

4.3.2 语法分析  118

4.3.3 实践性  122

4.4 有多少能力  123

第5章 终极机器  125

5.1 确定型图灵机  125

5.1.1 存储  126

5.1.2 规则  127

5.1.3 确定性  131

5.1.4 模拟  131

5.2 非确定型图灵机  136

5.3 最大能力  137

5.3.1 内部存储  137

5.3.2 子例程  140

5.3.3 多纸带  141

5.3.4 多维纸带  142

5.4 通用机器  142

5.4.1 编码  144

5.4.2 模拟  145

第二部分 计算与可计算性

第6章 从零开始编程  149

6.1 模拟lambda演算  150

6.1.1 使用proc工作  150

6.1.2 问题  152

6.1.3 数字  153

6.1.4 布尔值  156

6.1.5 谓词  160

6.1.6 有序对  161

6.1.7 数值运算  161

6.1.8 列表  168

6.1.9 字符串  172

6.1.10 解决方案  174

6.1.11 高级编程技术  178

6.2 实现lambda演算  184

6.2.1 语法  184

6.2.2 语义  186

6.2.3 语法分析  191

第7章 通用性无处不在  193

7.1 lambda演算  193

7.2 部分递归函数  196

7.3 SKI组合子演算  201

7.4 约塔(Iota)  210

7.5 标签系统  213

7.6 循环标签系统  220

7.7 Conway的生命游戏  229

7.8 rule 110  231

7.9 Wolfram的2,3图灵机  234

第8章 不可能的程序  235

8.1 基本事实  236

8.1.1 能执行算法的通用系统  236

8.1.2 能够替代图灵机的程序  239

8.1.3 代码即数据  239

8.1.4 可以永远循环的通用系统  241

8.1.5 能引用自身的程序  245

8.2 可判定性  250

8.3 停机问题  251

8.3.1 构建停机检查器  251

8.3.2 永远不会有结果  254

8.4 其他不可判定的问题  258

8.5 令人沮丧的暗示  260

8.6 发生上述情况的原因  261

8.7 处理不可计算性  262

第9章 在“玩偶国”中编程  265

9.1 抽象解释  266

9.1.1 路线规划  266

9.1.2 抽象:乘法的符号  267

9.1.3 安全和近似:增加符号  270

9.2 静态语义  274

9.2.1 实现  275

9.2.2 好处和限制  281

9.3 应用  284

后记  285

"计算的本质"试读
······

本书中的代码全部使用Ruby 写成。Ruby 是一种简单、友好而且有趣的编程语言。因为Ruby 清晰与灵活,我选择了它,但本书并不依赖于Ruby 专有的特性,所以这些示例代码均可转换成你喜欢的其他任何语言,特别是像Python 或者JavaScript 这样的动态语言,如果那样你更容易理解的话。
所有的示例代码都兼容Ruby 2.0 和Ruby 1.9。你可以在Ruby 官方站点(http://www.rubylang.org/)详细了解Ru…

  • 第1章 刚好够用的Ruby基础

评论 ······

其实就是计算方面的书,比起标准的计算的教程简单一些,对于没学过类似理论的人补学习还是很受用、让人感觉神奇和略微烧脑的。书里的部分 Ruby 代码很多时候感觉有些多余,不过类似这种入门介绍的计算方面的书不多(因为其他的更难),所以蛮推荐的。之前看了一半,最近终于从头把书看完了,有点欣慰。

很好的一本书,后面要再读一遍

看了这本书,对学习计算理论导引有很大的帮助,这本书可以看做是计算理论导引的实战版本。

SICP风格

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册