开发人员最佳读物

2025-05-27

开发人员最佳读物

我确定这本书现在已经开源了,这里有一个在线的 PDF 版本。如果在读这本书和读我的帖子之间犹豫,那就读这本书吧。

作为一名软件开发者,我做过的最好的选择之一就是读了《机器内部》(Inside the Machine),这本书几乎完全是关于硬件的。作为一个对“教科书”过敏的人,这本书就像是一片向软件开发者解释硬件的、措辞拙劣、误导性十足的海洋中的绿洲。

《机器内部》几乎涵盖了软件/硬件关系的方方面面。本书首先会介绍微处理器极其简单的结构,例如算术逻辑单元 (ALU)。最后,你将学习并理解极其复杂的微处理器设计和架构。

有趣的事实:《Inside the Machine》由 Ars Technica 创始人兼 Wired 杂志编辑 Jon Stokes 撰写!

为什么写这本书?

很简单

这本书少了些废话。信息呈现得简洁明了,易于理解。它的内容也非常连贯,几乎每个概念都用了一些基本的类比来解释。《机器内部》做到了每一本优秀的指导性书籍都应该做到的——迎合读者的需求。这本书的简介对此进行了很好的解释:

《机器内部》是一本计算机入门书籍,旨在填补经典但更具挑战性的计算机体系结构入门书籍(例如 John L. Hennessy 和 David A.
Patterson 的畅销教材)与日益增多的、对有志于成为非专业读者的读者来说过于基础的著作之间的空白。拥有一定计算机使用经验,甚至具备最基本的脚本或编程经验的读者,在读完《机器内部》后,应该能够对现代计算机的高层组织结构有透彻而深入的理解。如果他们愿意,这些读者将能够更好地理解更高级的著作,例如上述经典著作,无论是独立学习还是作为正式课程的一部分。

本书采用下述比较方法,通过与旨在解决相同问题的早期特性进行比较来介绍新的设计特性。因此,建议初级和中级读者按顺序阅读各章,因为每章都假设读者熟悉前一章介绍的概念和处理器设计。

长话短说:如果你不是一位优秀的程序员,我更推荐这本书。我在开发生涯的早期(当时我的水平还很差)就读过这本书,我相信它对我未来的成长影响很大。

它让你对引擎盖下发生的事情充满敬意

这本书最棒的一点是,读完之后,你会真正理解现代编程的“为什么”。即使对大多数经验丰富的开发者来说,计算机底层的工作原理也如同魔法一般。打个比方,这本书就像霍格沃茨魔法学校。你可能一开始连一个咒语都不会施,但读完之后,你就会成为一名技艺精湛的巫师/女巫。有些人可能会觉得我建议学习硬件知识有助于编写软件,这听起来有点奇怪。但你必须记住,归根结底,软件只是硬件的一个抽象概念。

性感

这本书写得真漂亮。作为一个有点完美主义的人,我非常欣赏作者不仅在插图上倾注的心血,也欣赏作者在整体风格和设计上的用心。这些插图确实提供了有意义的价值,而不是像普通教科书那样提供那些常常做作的“图表”。例如,这是作者在向读者讲解缓存知识时使用的插图之一。

用于解释流水线技术的另一个很好的例子。

它意识到

这本书展现的自我意识是我最喜欢的方面之一。作者预感到读者可能会对之前的画面感到困惑,于是他为自己的这个选择给出了非常人性化的解释。

精彩之处

我不会撒谎说整本书都是一场“惊险之旅”,但书中有些章节涵盖了处理器的历史,确实令人激动不已。阅读有关 PowerPC 和 x86 政治的内容,意外地引人入胜。如果要量化这种体验,我建议去看 HBO 的剧集。

结论

无论您是软件开发新手,还是经验丰富的开发人员,这本书都能满足您的需求。信息以轻松愉快的方式呈现,让您迫不及待地(而不是畏惧地)阅读下一章。

更新:我想添加一条来自 Reddit 的/u/DingBat99999的评论,因为他们有一些很棒的见解,我希望自己也能写出来。

推荐的书看起来很棒。但它揭示了一个我之前从未考虑过的问题。

我从事软件工作已经大约40年了。刚开始的时候,汇编语言是不可避免的。那时候,你和裸机之间的距离并没有那么大。因此,即使没有上过硬件相关的课程,每个人都能自然而然地了解计算机底层是如何工作的。

我上大学已经很久了,所以不太清楚现在大学都教些什么,但从我见过的应届毕业生来看,至少有些人毕业时完全没有接触过硬件。这完全没问题。就算没有硬件,你也能在这个行业做得很好。不过,正如楼主的书里说的,学习硬件知识也挺有意思的。

总而言之,对我来说,有几本书影响了我对软件开发的看法。它们是Bob Martin的《代码整洁之道》和Michael Feathers的《有效处理遗留代码》。

本书的免费 PDF 版本

作者甚至开始将这本书移植到 Github!


Foo

文章来源:https://dev.to/taillogs/the-best-book-to-read-as-a-developer-1h4m
PREV
✨2024 年决议:更加以开源为中心
NEXT
编写更好的 JavaScript 的实用方法使用 TypeScript 使用现代功能始终假设您的系统是分布式的检查您的代码并强制执行样式测试您的代码另外两个随机的 JS 事情结论