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

图书网 2018年9月5日14:02:251 2.9K
摘要

如果你想像“大牛”级的程序员一样做开发,或者想摆脱自己半路出家的知识“囧”境,本书能够为你真正讲明白计算理论和编程语言的工作原理与真切含义。本书使用简单的Ruby代码做示例,没有枯燥难记的数学符号。作者极力推崇循序渐进和从实践中学习,他从机器、语言讲到程序,又一路从最简单的机器(有限自动机)过渡到复杂的机器(图灵机),从设计实现简单的编程语言到极简的机器,而后又推理所谓“不可能”解决的问题,为读者完美打造了轻松有趣的阅读体验。

计算的本质 深入剖析程序和计算机 内容简介

《图灵程序设计丛书·计算的本质:深入剖析程序和计算机》借助简单的Ruby代码示例,全面、深入地介绍计算理论和编程语言设计。作者注重实用性,在读者熟知的背景知识下,以明晰的可工作代码阐释了形式语义、自动机理论,以及通过lambda演算进行函数式编程等计算问题,并为读者自行探索打下了良好基础。

《图灵程序设计丛书·计算的本质:深入剖析程序和计算机》面向熟悉某种现代编程语言却非科班出身的程序员,是一本帮你真正理解计算机科学和计算原理的优秀参考书。

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

前言

第1章 刚好够用的Ruby基础

1.1 交互式RubyShell

1.2 值

1.2.1 基本数据

1.2.2 数据结构

1.2.3 proc

1.3 控制流

1.4 对象和方法

1.5 类和模块

1.6 其他特性

1.6.1 局部变量和赋值

1.6.2 字符串插值

1.6.3 检查对象

1.6.4 打印字符串

1.6.5 可变参数方法(variadic method)

1.6.6 代码块

1.6.7 枚举类型

1.6.8 结构体

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

1.6.1 0定义常量

1.6.1 1删除常量

第一部分程序和机器

第2章 程序的含义

2.1 “含义”的含义

2.2 语法

2.3 操作语义

2.3.1 小步语义

2.3.2 大步语义

2.4 指称语义

2.4.1 表达式

2.4.2 语句

2.4.3 应用

2.5 形式化语义实践

2.5.1 形式化

2.5.2 找到含义

2.5.3 备选方案

2.6 实现语法解析器

第3章 最简单的计算机

3.1 确定性有限自动机

3.1.1 状态、规则和输入

3.1.2 输出

3.1.3 确定性

3.1.4 模拟

3.2 非确定性有限自动机

3.2.1 非确定性

3.2.2 自由移动(freemove)

3.3 正则表达式

3.3.1 语法

3.3.2 语义

3.3.3 解析

3.4 等价性

第4章 增加计算能力

4.1 确定性下推自动机

4.1.1 存储

4.1.2 规则

4.1.3 确定性

4.1.4 模拟

4.2 非确定性下推自动机

4.2.1 模拟

4.2.2 不等价

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

4.3.1 词法分析

4.3.2 语法分析

4.3.3 实践性

4.4 有多少能力

第5章 终极机器

5.1 确定型图灵机

5.1.1 存储

5.1.2 规则

5.1.3 确定性

5.1.4 模拟

5.2 非确定型图灵机

5.3 最大能力

5.3.1 内部存储

5.3.2 子例程

5.3.3 多纸带

5.3.4 多维纸带

5.4 通用机器

5.4.1 编码

5.4.2 模拟

第二部分计算与可计算性

第6章 从零开始编程

6.1 模拟lambda演算

6.1.1 使用proc工作

6.1.2 问题

6.1.3 数字

6.1.4 布尔值

6.1.5 谓词

6.1.6 有序对

6.1.7 数值运算

6.1.8 列表

6.1.9 字符串

6.1.10 解决方案

6.1.11 高级编程技术

6.2 实现lambda演算

6.2.1 语法

6.2.2 语义

6.2.3 语法分析

第7章 通用性处不在

7.1 lambda演算

7.2 部分递归函数

7.3 SKI组合子演算

7.4 约塔(Iota)

7.5 标签系统

7.6 循环标签系统

7.7 Conway的生命游戏

7.8 rule110

7.9 Wolfram的2,3图灵机

第8章 不可能的程序

8.1 基本事实

8.1.1 能执行算法的通用系统

8.1.2 能够替代图灵机的程序

8.1.3 代码即数据

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

8.1.5 能引用自身的程序

8.2 可判定性

8.3 停机问题

8.3.1 构建停机检查器

8.3.2 永远不会有结果

8.4 其他不可判定的问题

8.5 令人沮丧的暗示

8.6 发生上述情况的原因

8.7 处理不可计算性

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

9.1 抽象解释

9.1.1 路线规划

9.1.2 抽象:乘法的符号

9.1.3 安全和近似:增加符号

9.2 静态语义

9.2.1 实现

9.2.2 好处和限制

9.3 应用

后记

计算的本质 深入剖析程序和计算机 精彩文摘

2.3 操作语义

考虑程序含义的最实际方法是思考它做了些什么:在运行程序的时候,我们期望发生什么呢?在运行时编程语言中不同的结构都是如何表现的?把它们放到一起组成更大的程序时会是什么效果?

这是操作语义学(operational semantic)的基础,这种方法为程序在某种机器上的执行定义一些规则,以此来捕捉编程语言的含义。这个机器常常是一种抽象的机器:为了解释这种语言所写的程序如何执行而设计出来的一个想象的、理想化的计算机。为了更好地捕获编程语言的运行时行为,通常需要针对不同种类的编程语言设计不同的抽象机器。

有了操作语义,我们可以朝着严谨而准确地研究语言中特定结构的目标前进了。用英语写成的语言规范可能暗藏着二义性,并且可能遗漏边缘情况,但一个形式化的操作性规范不会如此,为了令人信服地传达语言的行为,它必须明确而且无二义性。

图书网:计算的本质 深入剖析程序和计算机pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 无痕
      无痕 0

      多谢分享,人人为我,我为人人