《编程智慧:编程鬼才的经验和思考》(The Kollected Kode Vicious)书评

亲爱的 Practical Ports,

我是否应该抽时间阅读 George V. Neville-Neil 的《The Kollected 编程智慧:编程鬼才的经验和思考》,而不是一本关于我工作所需的新编程语言的书?我没有太多时间阅读,所以需要谨慎选择。我也不明白,像 KV 这样使用笔名而非真名的人,如何能被认真对待,特别是当他们给别人提供如此主观的建议时。

—— 一位时间不多的怀疑读者

亲爱的怀疑者,

你是否听说过 Alice Addertongue 或 Silence Dogood?或者 Poor Richard 有没有让你想起什么?这些都是本杰明·富兰克林(Benjamin Franklin)使用的笔名。在富兰克林的时代,笔名和漫画形象是非常常见的,尽管通常很容易知道是谁在背后写作。这些不同的漫画形象不仅让富兰克林能够为他的读者(即他自己报纸的读者)提供多角度的看法,还允许他运用夸张、讽刺和奇思妙想来娱乐读者并影响他们的观点。因此,使用化名和人格写作并不是新鲜事,实际上,既然你在给 Practical Ports 写信,你也是在参与这种情形。

在我们讨论书籍之前,让我们先解决你抽出时间读书的问题。“每个人都有时间。别再看该死的《迷失》了!”—— Gary Vaynerchuk,2008年在 Web 2.0 Expo NY 说的 https://www.youtube.com/watch?v=EhqZ0RU95d4

不过,好吧,撇开这个,我可以理解如今时间很难抽出。而且,能读的书毕竟有限(如果是好书的话,更加难得!)。无休止地刷新闻或社交媒体不算是阅读,陷入 Youtube 的无尽循环也不算。书籍仍然是知识和娱乐的相关来源——或许现在比以往任何时候都更为重要——这就是为什么我抽时间来审阅这本书。即便在充斥着电子信息的互联网海洋中,翻开纸质书页仍然能吸收永恒的智慧并享受乐趣。

现在,关于你是否应该为《编程智慧:编程鬼才的经验和思考》这本书腾出一些时间的问题。对于尚未接触 KV 专栏的读者,我应该解释一下,这本书是 KV 在 ACM Queue 列刊中同名专栏的合集,按照主题分组。作者多年写作这些专栏,并将最好的文章收集在书中,按主题进行组织,并附上简短的介绍。至于他是如何让计算机科学巨匠唐纳德·E·克努斯(Donald E. Knuth)为书写序的,或许永远是作者的秘密。简直是受封了!我非常喜欢章节开头的引言,这里有不少能够概括你即将阅读的内容的引用。(例如:哦,Bullwinkle,那招永远不管用!— Rocky J. Squirrel)

如果你从未读过 KV 的专栏,要知道,它们遵循的是传统的问答/建议专栏格式——这个格式古老得可以追溯到本杰明·富兰克林的解构和重构方法,当然,也可以追溯到苏格拉底。书中的信件/问题呈现的是一个困惑或困扰的人向 KV 寻求建议的情境。这些问题既真实又相关,常常和我从学生那里听到的类似。一些较后的专栏显然是基于真实的信件,而一些较早的专栏则是代笔写作。在所有情况下,答案/建议都会回应问题,解释、化解、解构、重组或反思假设,同时为主题提供新的见解。提供的意见通常是出于良好意图,并给出所期望的建议。这些信件中的许多(如果不是全部的话)可能以禅宗故事中常用的词语结尾:“于是,学生得到了启发。”

查看目录,你会看到以下几组主题:

  • 手头的代码 —— 讨论程序员(像你)必须面对的日常烦恼和思考——从分配过多内存、异常处理(或缺乏处理)到正确的日志记录和编码风格讨论。本章主要吸引程序员,对于那些偶尔使用计算机、好奇为什么互联网不起作用的用户不太适合。

  • 编程难题 —— 探讨更为哲学性的问题,比如什么是好的编程语言,如何避免无休止地包含文件的意大利面条式代码,为什么测试很重要,以及代码扫描器和调试策略等元主题。所有这些都值得一读,如果你有多年的编程经验,你肯定会在其中找到一个熟悉的故事。如果你曾问过自己为什么现在的事情是这样,那接下来的章节将为你解答。

  • 系统设计 —— 讨论我们日常使用的系统设计中(大多数是错误的)选择。永恒话题如身份验证与加密、跨站脚本攻击、钓鱼和感染(后者指的是计算机系统),以及 UI 设计将让你频频点头同意,同时也会对糟糕设计的典型例子摇头。我留给你自己去发现为什么 Java 会出现在这一章节。

  • 机器对机器 —— 讨论延迟、扩展失败、协议设计以及日益增长的标准列表。如果你了解这位作者或知道他,那么你不会感到惊讶,这一部分并不是在谈论网络如何连接这些机器。如果你觉得这很让人不安,那就等着读下一部分吧……

  • 人类对人类 —— 思考如何命名你的主机,别让你的自尊心介入,代码面试问题,以及“油漆小棚”现象(即无关紧要的事物成为争论焦点)。人们为计算带来了许多有趣的特质——如果它们只是好特质就好了。

在每一章中,作者通过故事揭示洞察力和经验,进行警示和教育。尽管这些故事常常带有些许抱怨(或许是因为看到了太多类似的情况),但没有一页让你觉得事情已经无望。相反,书中充满了实用的建议,夹杂着个人的偏好和推荐,并且始终以机智和幽默的方式传达。我能想象这本书有两个很好的用途。一个是作为轻松娱乐的阅读,另一个是作为参考书。专栏内容足够简短,可以在短暂的休息时(搭配你喜欢的饮料)或睡前(当然,不包括噩梦)阅读。把书放在容易拿到的地方,这样当有问题时,你可以迅速翻阅相关章节。另一个想法是,当争论发生或设计决策即将做出时,把它交给你的同事和同行。“让我们翻到《Vicious》书中,提醒自己什么是不该做的”,当讨论陷入僵局,需要新视角时,或许可以这样说。经验丰富和新来的同事们都会在这些专栏中找到有趣且相关的内容,他们会一边点头表示认同(我也经历过),一边微笑着想起那些有趣的轶事。

现在,回到你是否应该在有限的阅读时间里选择《The Kollected 编程智慧:编程鬼才的经验和思考》而不是一本新编程语言书籍的问题,我会说:“是的。”我认为你应该阅读 KV 的书,但不要期望从中找到“使用这个巧妙的代码片段让代码更快”或“使用 Emacs 作为编辑器会让你生产力翻倍”之类的建议。另一种编程语言可能会在简历上看起来不错,但最终,这些不过是行业工具罢了。我们所做的事情远不止编写代码!这本书将为你阐明这一点,展现这个行业的喜怒哀乐。你的阅读体验可能不同,但我认为阅读这本书并内化其教诲,会对你大有裨益。最后让我用另一句引言结束:

“去年の癡僧 ち そう今又来たる(去年癡僧今又来)”

——日本禅宗诗人良寛大愚


PP BENEDICT REUSCHLING 是 FreeBSD 项目的文档提交者,也是文档工程团队的成员。他是 FreeBSD 基金会董事会的副主席。过去,他曾在 FreeBSD 核心团队服务了两个任期。他在德国达姆施塔特应用科技大学管理一个大数据集群,同时为本科生教授“开发者的 Unix”课程。Benedict 还是每周 bsdnow.tv 播客的主持人之一。

最后更新于

这有帮助吗?