全文共3351字,预计学习时长7分钟
书籍可以清晰而有条理地陈诉观点,纸张上的笔墨也会给人一种不慌不忙的感觉。不过,科技类书籍存在一些严重的问题:它们几乎很快就过时了。由于缺乏交互性,此类书籍无法实时展示其概念(或让读者玩味这些概念)。它们的带宽相对较低——例如,需要将长代码示例分解为很小的块,而阅读这些书便成了件苦差事。
部分科技书籍多年来不断应对挑战,保持实用性。这些书籍不再传授最新编程框架的技术细节,而是阐明软件开发理念,传授最佳编程技术与设计技术,向你介绍软件行业的工作感受,告诉你成为一名程序员意味着什么。本文将列举五本相关书籍供你学习参考。
公众号后台回复“20191005”即可获得电子版图书下载链接。
1. 《程序员修炼之道》(The Pragmatic Programmer)
第一版发行后,一本与编程有关的书籍可以在20年后继续保持实用性吗?可以,如果这本书具有代码编写技术的永恒智慧的话。
《程序员修炼之道》能启发程序员,更为深入地思考如何应对挑战、与其他人合作以及成为效率更高的程序员。
书中解释了如何对抗软件衰减——使每个大项目中的代码逐渐陷入混乱的强大力量。该书简单介绍了单元测试和重构,并对调试(不要惊慌!)做出合理建议,可有效解决问题,而不会伤害任何程序员自尊。《程序员修炼之道》可帮助你学习一些很酷的程序员术语,比如“正交性”。
该书大约有300页,看起来似乎并不长,但内容紧凑。幸运的是,你无需从头读到尾。每次打开书,浅尝一下,便可能会得到一些实用的建议。
总结:除了《程序员修炼之道》之外,还有一小部分关于代码的经典书籍每个人都喜欢推荐(或至少在桌上摆放着)。其中一本是比尔盖茨最喜欢的睡前读本《代码大全》。同《程序员修炼之道》一样,《代码大全》提供了宝贵建议,但篇幅更长,内容有点枯燥,读起来更像是一本教科书。《代码整洁之道》也是一本质量较高的书,书中部分内容与其他书有所重合,虽然初读时会感受到时间的痕迹,以及其对Java的密切关注,但绝对值得一读。
2. 《编码的奥秘》(Code: The Hidden Language of Computer Hardware and Software)
如果你写了一本让程序员和对编程好奇的外行人同样感兴趣的书会怎么样?《编码的奥秘》就是这样一本书 ——对计算机创造奇迹的方式展开探索。
没有亲自读过,就很难理解《编码的奥秘》这本书。我们都读过有关计算机如何运作的书籍,通常伴随一些图表和一行行1和0在内的代码,但这本书并非如此。《编码的奥秘》深入研究计算,从莫尔斯代码开始,最后到构成CPU原理图。该书读起来像一本小说——虽然旁白非常详细。
《编码的奥秘》的主题为在电子产品中进行信息编码的方式。很多时候,该书险些成为多余但有趣的历史教材。但拉开帷幕后,你会突然发现该书与编码息息相关,在阅读过程中一直都在学习现代计算机。《编码的奥秘》的作者是编码界的传奇人物Charles Petzold,也是向倍感沮丧的程序员解释Windows API的首批开拓者之一。(“在Petzold中查找”在当时成为口头禅。)几十年后,他对WPF中的3D编程展开了相似的研究。WPF颇具吸引力,但几乎每个人都忽略了其棘手程度。
底线是什么?如果你对电子产品内部如何运行,以及代码为何这样编写颇为好奇,那么《编码的奥秘》这本书就可以帮你解开谜团。
3. 《点石成金》(Don’t Make Me Think)
这本书讲述了计算机编程的真相。无论是否愿意,每个程序员或早或晚都会设计或运行用户界面。虽然程序员也是用户,即便创建一个有逻辑、可用的界面是一项简单任务,但程序员们的首次尝试可能并不尽如人意。
设计问题就像冰山一样——从顶上看起来很小,但底部出人意料地巨大与危险。许多程序员讨厌设计,因为他们不能使用自身独特的技能,一旦决策失误,呈现出的结果就会令人不适。这就是《点石成金》成为广受欢迎的指南的原因。
《点石成金》一书对优秀设计展开探索。书中多是网站示例,但其建议适用于任何类型的软件——或人类制造的任何类型的产品。《点石成金》的真正诀窍在于激活你已有的、内心深处的那些知识,并将其付诸实践。学着像可用性方面的专家一样思考,是一件很有趣的事。事实上,超级有趣。而《点石成金》这本书是其中最为轻松、有趣的一本。
4. 《编程人生》(Coders At Work)
《编程人生》旨在传达的观点就是:谈论代码很重要,与程序员交谈也很重要。该书记录了对15名认真出色的程序员展开访谈的内容。
大多数在职程序员可以分享一些有用的建议。但是《编程人生》能让你与JavaScript的创造者Brendan Eich、Unix的设计师Ken Thompson这样杰出的程序员交流,就像你正在与这个星球上最成功的一些程序员展开非正式的对话。你将发现他们如何应对挑战、解决问题、编写代码以及对未来展开预测。
看看他们会在哪些方面产生分歧——有时颇具戏剧性,也很有趣。例如,Dan Ingalls谈到当他在面对新挑战时如何立即开始编码,而Joshua Block则在编写单行代码前仔细绘制API。Donald Knuth更是厉害,他描述了自己在使用计算机前是如何用铅笔写出完整的排版系统TeX。
《编程人生》每一章都以访谈形式撰写,感觉更像是一系列杂志文章,而非一本关于编程理论的重要书籍。但是,花在这些程序员身上的时间越多,就越能了解在众多不同领域工作的程序员的感受。
5. 《现实世界漏洞追踪》(Real-World Bug Hunting)
不对安全性的某些方面进行深入研究,就无法列出完整的编程书籍清单。这一方面包含很多好的主题。每个程序员都可从中受益,学习加密基础、黑客入侵网络的方式以及有助于代码防御攻击的最佳实践。但如果想要覆盖很多内容,而不用陷入过多理论,那么《现实世界漏洞追踪》就是一个不错的选择。
《现实世界漏洞追踪》一书真实描述了坏人攻击程序的最常见方式。阅读后,您会发现验证效果不佳的输入可以摧毁数据库或破坏网站,恶意网站会传染健康网站,黑客能够使用泄漏内存控制计算机。有些读者可能觉得这些场景的技术性太强,但这些都是黑客攻击的事实——现实世界是最好的老师。
总结:
每个程序员都应该至少学些密码学——有关安全通信、身份验证的科学。关于这个主题的书籍有很多,有些历史悠久,有些是充满数学元素的教科书,令人生畏。学习初期,要轻松一点,建议阅读带插图的《密码学漫画教程》。更经典的方法是阅读由至少三位以上世界领先的密码学家撰写的、具有开创性的《密码学设计》。如果想休息一下,真心推荐《杜鹃蛋》一书,书中讲述了天文学书呆子(偶然间成为计算机专家)Clifford Stoll和他在伯克利实验室检测到的一名俄罗斯黑客的故事,读起来令人欲罢不能。这本书也是最适合夏季带去海滩阅读的。
作为一名程序员,总会觉得自己离身后即将到来的变革与新技术海啸仅有半步之遥。但每隔一段时间暂停一下,从不断追赶新框架、新语言中休息片刻也很重要。阅读任意一本上述书籍,将收获与软件开发技术和职业相关的更为开阔的视角,进而提升编写代码的能力。
推荐阅读专题
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货
推荐文章阅读
ACL2018论文集50篇解读
EMNLP2017论文集28篇论文解读
2018年AI三大顶会中国学术成果全链接
ACL2017 论文集:34篇解读干货全在这里
10篇AAAI2017经典论文回顾
长按识别二维码可添加关注
读芯君爱你