Understanding Computation 阅读有感
2018-01-09T14:00:11+08:00 | 2分钟阅读 | 更新于 2024-08-02T17:10:18+08:00
Understanding Computation: From Simple Machines to Impossible Programs.
这本书的简介:《计算的本质:深入剖析程序和计算机》
首先给它评一下分,5 星推荐,书的整体是比较通俗易懂的,深浅得当,对了解计算理论非常有帮助。 作者的行文十分流畅,但是个人感觉有的地方没有能够进行更加深入的探讨,只是浅浅的带过,可能是涉及的理论有些复杂,不是很符合本书的意图吧。
对于本书的总结,我想借鉴一下本书的后记,因为我不觉得我能比这总结的更好。同时即便你没有读过此书,我想也能通过后记产生或多或少的感想。 我是第二遍读这本书了,第一遍在闲杂时间随便翻了翻,第二遍精读了一下,收获颇丰。
以下是书的后记,我略微删减了一些:
- 任何人都可以设计和实现一种编程语言。语法和语义的基本思想是简单的。
- 每一个计算机程序都是一个数学对象。按句法来说,一个程序只是一个大数;语义上来说,它可能代表一个数学函数,或者一个能被形式化规约规则操纵的分层结构。这意味着数学上的许多技术和成果,如 Kleene 规约理论或者 Gödel 不完备定理,都能等价地应用到程序上。
- 计算,最初被描述为只是“一台计算机做的事”,已经被证明是某种自然力量。很容易把计算想象为一个复杂的人类发明,它只能由对许多复杂部分进行特殊设计的系统来执行,但在系统中还可以看到支持它没那么复杂。因此,计算不是一个枯燥的只是发生在微处理器中的人工过程,而是一个在许多不同地点以不同方式发生的普遍现象。
- 计算不是全有或全无的。不同的机器拥有不同的计算能力,这给了我们用途上的连续性:DFA 和 NFA 有有限的能力,DPDA 更强大,NPDA 还更强大,而图灵机是我们知道的最强大的机器。
- 抽象的编码和级别对于利用计算能力必不可少。计算机是维护抽象宝塔的机器,从非常低层次的半导体物理学开始,上升到层次高得多的多点触控图形用户界面。为了让计算有用,我们需要能把现实世界中复杂的思想编码成机器能处理的更简单的形式,然后再把结果解码回有意义的高层表示。
- 计算能做的事情是有限制的。我们不知道如何构建比图灵机能力更强的机器,但确实存在图灵机无法解决的问题,而这些问题包括发现我们所写程序的信息。可以利用模糊的或者不完整的答案处理这些限制,以便质疑我们程序的行为。
其实学习这些理论并不会立即看到效果,就像书中说的那样:
这些思想可能不会立即改变你工作的方式,但我希望它们已经满足了你的某种好奇心,并且能帮助你享受在宇宙中实现计算时所度过的时光。