2020年程序员/工程师必看的三本编程书籍( 三 )

SICP 不管效率 。 SICP 不管效率 。 Scheme 语言本身也不提供数组(有些 packages 提供) , 只有 list(链表) 。 用链表存储的一串数字如何倒序?其实也有效率很高的解法 —— 比如可以递归 。 递归是一种程序的写法 , 一种表达方式 —— SICP 训练的是大家如何表达 —— 这更像语文课 , 而不是编程课 。 可是换一个角度思考 , 编程不就是用编程语言表达的一种语文吗!

SICP 通篇介绍两种表达的艺术—— 抽象(abstraction)和构造(composition) 。 定义一个递归函数是一种抽象 , 递归过程解构(decompose)链表 , 回溯过程重构链表(compose)—— 这是设计大型软件的核心思维方式 。 MIT 本科课程中 , 在用 SICP 启蒙之后 , 还是要学习数据结构和算法的 。 只是这个顺序 —— 先识大体 , 再纠缠细节 —— 很重要 。

SICP 是我读博士的时候 , 我的同学王垠推荐我看的 。 其实至今没有通篇读下来 。 但是读了的部分 , 已经在我的职业生涯里给了我很大的帮助 。 我记得第一次读的时候我感叹“为什么我不是由这本书启蒙的!”

《The Art of Unix Programming》

推荐阅读