计算的本质 - [英] Tom Stuart

计算的本质

[英] Tom Stuart

出版时间

2014-11-01

ISBN

9787115361547

评分

★★★★★

标签

编程

书籍介绍

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

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

AI导读
核心看点
  • 用Ruby代码直观演示计算理论
  • 深入浅出讲解图灵机与Lambda演算
  • 涵盖形式语义、自动机及编译器基础
适合谁读
  • 计算机科学专业学生
  • 希望系统学习计算理论的程序员
  • 对编译原理和底层逻辑感兴趣的开发者
读前提醒
  • 需具备Ruby基础或愿意边读边学
  • 建议配合书中提供的可运行代码实践
  • 无需复杂数学背景,注重直观理解
读者共识
  • 被誉为Ruby版SICP,通俗易懂
  • 代码可运行,极大降低理论理解门槛
  • 内容精炼,适合快速建立计算理论框架

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "一台机器不是只用一个状态表示“向右扫描查找一个空白方格”,而是可以为"向右扫描一个空白方格(记住我之前读取到了一个a)"设置一个状态,再为"向右扫描一个空白方格(记住我之前读取到了一个b)"设置另一个状态,所有可能的字符都以此类推--字符数目 也是有限的,所以这样的复制总是有限的。"
  • "一条图灵机的纸带通过交叉存取"
  • "如果我们在每一个交叉字符的边上放上一个空白方格"
  • "注5:二元基于2,一元基于1."
  • "让ECREMENT工作的关键...由ZERO组成的有序对调用slide n次,然后使用SELECT从结果的有序对中拉出左边的数来。"
  • ">> slide ([3,4]) => [4,5] >> slide ([8, 9]) => [9, 10]"
  • "不停机程序是通用性的一个不可避免的结果 只要在使用一种强大到能对自身求值的程序,我们就知道一定可能使用#evaluate的等价物构建永不停机的程序 如果移除了一个特性让一个程序无法永远循环,一定也不可能实现#evaluate了"
  • "这两个例子的唯一真正区别是, DFA的模拟是从一个当前状态移动到另一个, 而NFA的模拟是从当前可能状态的集合移动到另一个可能状态的集合."
作者简介
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

显示全部
用户评论
其实就是计算方面的书,比起标准的计算的教程简单一些,对于没学过类似理论的人补学习还是很受用、让人感觉神奇和略微烧脑的。书里的部分 Ruby 代码很多时候感觉有些多余,不过类似这种入门介绍的计算方面的书不多(因为其他的更难),所以蛮推荐的。之前看了一半,最近终于从头把书看完了,有点欣慰。
必须是力荐,讲解通俗易懂,非常平易,可以让人轻松学习,里面的资料也比较丰富,我很喜欢。
2016.1.18开始读。2017.7.9 理解了图灵机,就理解了算法(有限状态机)与数据结构(抽象的纸带)=图灵机,也就理解了编译原理的理论部分,线程编程本质就是事件驱动模型,也就是写一个有限状态机。程序看做数据作为其他程序的输入。
计算到底是什么? 在此之前我从未思考这个问题, 这本书却试图剖析这个概念. 最厉害的是这本书在循循渐进, 最大的收获就是操作语义 (规约来计算), lambda 等价图灵机. 但是我很担心的是, 这些知识在学习之后因为不会被使用而马上遗忘... 希望能提炼一个总纲出来, 便于回忆.
Ruby版SICP,看完甚至想去学Ruby,行云流水的语法太秀了 小步语义 -> 大步语义 -> 指称语义 DFA -> NFA -> REG -> DPDA -> NPDA -> DTM 从零开始 Lambda
配合《计算理论导引》食用更佳,不少《计算理论导引》中介绍的抽象的理论,尽管你已经认为“学会”了,但事实上并不了解它们真正意味着什么
围绕Ruby语法、Lambda、图灵机介绍计算理论的实现。
这本书最大的快乐可能就在于ruby实现了,比起Python这种长寿编程而言其乐趣显而易见。当一件事情有很多种实现方法时本身就是件非常有趣的事情,因为有创造力的空间才会产生美和灵感。作为唯一一个我觉得浪漫的语言,即使ruby已经没落,但rails能释放的生产力放眼当前也仍然堪称优秀。只是它毕竟骨子里就不是为大规模协作而生,所以虽然快乐,但注定孤独。(咦听起来好像更浪漫了??:p 所以姑且期待未来吧,但艺术和创造性恐怕永远都不会是未来语言的主流,因为追求生产力和效益本质上就一点也不浪漫。对企业来说效率才是最重要的,谁关心它是不是优雅呢?虽然严谨的逻辑和抽象的架构始终是我喜爱计算机系统的原因,但缺乏美感和意义也是我讨厌编程的原因。难道是因为我还不够热爱吗?反正敲代码和画画之间,我还是宁愿选择后者。
下载
收藏