Charles Petzold, 左飞, 薛佟佟. 编码:隐匿在计算机软硬件背后的语言. ISBN: 978-7-121-18118-4
这本书的英文原名为 Code: The Hidden Language of Computer Hardware and Software,是一本介绍计算机的科普性读物。从公众号到 Bilibili,这本书我推荐了不知道多少遍。最初知道这本书是从小甲鱼的视频里听说,后来就找来读了读。一口气读完后就觉得这本书确实讲清楚了很多流行编程基础教程中没有讲清楚的基础信息。现在,在学过比较系统的计算机基础理论后再来看这本书,仍旧觉得它值得推荐给想学编程或者计算机,但有对计算机或者编程基本没概念的人。同时这本书也适合刚刚学过一两门编程语言,自以为入门但实际上立足未稳的人。
计算机的知识体系大致上可以分为理论和工程两大部分,其中的理论部分是计算机的根基。数理逻辑递归论中对计算过程的形式化刻画则是计算机理论的起点。说到这里,可能很多离散数学不扎实或者干脆没学过离散数学的程序员就有点犯迷糊了,心想:自己每天累死累活写的这些玩意儿居然还能和看起来挺高大上的数学名词扯上关系?编程不是只要会小学算术和逻辑与或非就能做的么?
这事就得从计算机的源头说起。其实计算机的基本构想相当简单。在完成了两次工业革命的二十世纪上半叶,人们已经有了各种力学机械能替代人们繁重的体力劳动。于是就有人动了心思想用机器再替代人类的脑力劳动。
那么这个想法实现了么?没有完全实现,但是部分的达成了目标。完全用机器模拟人的脑部活动至今都没搞出来。不光没搞出来,从现在的情况来看可能连个影都没有。但是传统脑力劳动中,比较枯燥的计算工作这一部分倒是可以用机器实现自动化了。想想就知道,要做一个机器来计算,自然首先要把计算过程明明白白地表述出来。我们刚刚提到的递归