题 每个程序员应阅读的最具影响力的单一书籍是什么? [关闭]


如果你可以回过头来告诉自己在你职业生涯开始时作为开发者阅读一本特定的书,它会是哪本书?

我希望这个清单可以变化,涵盖范围广泛。

寻找: 使用右上角的搜索框。要搜索当前问题的答案,请使用 inquestion:this。例如:

inquestion:this "Code Complete"

1439


起源


浏览这个帖子让我意识到大多数编程相关的书是多么丑陋。虽然非常好的线程! - Carl Bergquist
有趣的是,虽然标题写着“什么是最有影响力的书 一切 程序员应该阅读?“,有很多书建议处理语言特定的主题。根据定义,并提出问题,这里建议的书应该处理语言不可知的主题,这证明大多数程序员还没有学习如何阅读。 - Rook
如果我可以回到过去并告诉自己阅读某些内容,那么最好是我随身携带的报纸或体育事实书。其他任何事都浪费了美好时光。 :-) - jmucchiello
你知道,如果我不担心被选中投票,那么我会继续推荐暮光之城。 “它也是关于那些脸色苍白,避免太阳的人!” - Jacob Bellamy
有人可以通过删除书籍上的重复条目来清理答案吗?他们中的大多数地区已经投了票。 - rao


答案:


  • 代码完成 史蒂夫麦康奈尔(第2版)
  • 务实的程序员
  • 计算机程序的结构与解释
  • C程序设计语言 由Kernighan和Ritchie
  • 算法简介 由Cormen,Leiserson,Rivest&Stein
  • 设计模式 四人帮
  • 重构:改进现有规范的设计
  • 神话人月
  • 计算机程序设计的艺术 由唐纳德克努特
  • 编译器:原理,技术和工具 作者:Alfred V. Aho,Ravi Sethi和Jeffrey D. Ullman
  • 哥德尔,埃舍尔,巴赫 作者Douglas Hofstadter
  • 清洁代码:敏捷软件工艺手册 罗伯特C.马丁
  • 有效的C ++
  • 更有效的C ++
  •  作者Charles Petzold
  • 编程珍珠 作者:Jon Bentley
  • 有效地使用遗留代码 作者:Michael C. Feathers
  • 人件 由Demarco和Lister
  • 工作中的编码员 彼得塞贝尔
  • 当然,你是在开玩笑,费曼先生!
  • 有效的Java 第2版
  • 企业应用架构模式 作者:Martin Fowler
  • 小计划者
  • 经验丰富的计划者
  • 为什么(Poignant)Ruby指南
  • 囚犯正在庇护:为什么高科技产品让我们疯狂,如何恢复理智
  • Unix编程的艺术
  • 测试驱动开发:通过示例 作者:肯特贝克
  • 敏捷开发人员的实践
  • 不要让我思考
  • 敏捷软件开发,原则,模式和实践 罗伯特C.马丁
  • 域驱动设计 埃里克埃文斯
  • 日常事物的设计 唐纳德诺曼
  • 现代C ++设计 作者:Andrei Alexandrescu
  • 最佳软件写作I 作者:Joel Spolsky
  • 编程实践 由Kernighan和Pike
  • 务实的思考和学习:重构你的Wetware 安迪·亨特
  • 软件评估:揭开黑人艺术的神秘面纱 作者:Steve McConnel
  • 充满激情的程序员(我的工作去了印度) 由查德福勒
  • 黑客:计算机革命的英雄
  • 算法+数据结构=程序
  • 编写固体代码
  • JavaScript - 好的部分
  • 变得真实 由37信号
  • 编程基础 作者:Karl Seguin
  • 计算机图形学:C的原理与实践(第2版)
  • 用Java思考 布鲁斯埃克尔
  • 计算系统的要素
  • 重构模式 作者:Joshua Kerievsky
  • 现代操作系统 作者:Andrew S. Tanenbaum
  • 注释图灵
  • 让我们变得聪明的事情 唐纳德诺曼
  • 永恒的建筑方式 克里斯托弗亚历山大
  • 截止日期:关于项目管理的小说 作者:Tom DeMarco
  • C ++编程语言(第3版) 通过Stroustrup
  • 企业应用架构模式
  • 计算机系统 - 程序员的视角
  • C#中的敏捷原则,模式和实践 罗伯特C.马丁
  • 面向对象的软件越来越多,引导式 通过测试
  • 框架设计指南 布拉德艾布拉姆斯
  • 对象思考 David West博士
  • UNIX环境中的高级编程 作者:W。Richard Stevens
  • 黑客和画家:计算机时代的重大创意
  • 新机器的灵魂 作者:Tracy Kidder
  • CLR通过C# 杰弗里里希特
  • 永恒的建筑方式 克里斯托弗亚历山大
  • C#中的设计模式 史蒂夫梅茨克
  • 爱丽丝漫游仙境 作者:Lewis Carol
  • 禅与摩托车维修艺术 作者:Robert M. Pirsig
  • 关于面孔 - 交互设计的要点
  • 每个人都来:没有组织的组织力量 作者:Clay Shirky
  • 编程之道
  • 自然的计算美
  • 编写固体代码 作者:Steve Maguire
  • Philip和Alex的Web发布指南
  • 面向对象的分析与应用设计 作者:Grady Booch
  • 有效的Java 作者:Joshua Bloch
  • 可计算 作者:N。J. Cutland
  • 编程的主人
  • 道德经
  • 富有成效的程序员
  • 欺骗的艺术 凯文米特尼克
  • 职业程序员:一个不完美世界的游击策略 克里斯托弗邓肯
  • 人工智能规划的范式:Common Lisp中的案例研究
  • 厄运大师
  • 使用NUnit在C#中进行语用单元测试 安迪亨特和戴夫托马斯与马特哈格特
  • 如何解决它 乔治波利亚
  • 炼金术士 保罗科埃略
  • Smalltalk-80:语言及其实现
  • 编写安全代码 迈克尔霍华德(第2版)
  • 功能编程简介 作者:Philip Wadler和Richard Bird
  • 没有虫子! 作者:David Thielen
  • 重工 作者:Jason Freid和DHH
  • JUnit in Action

1747



代码完成 如果你在大学里也许是一本好书。如果您有至少1年的编程经验,那就是总计。 - Bogdan Gavril
代码完成 它中有很多有用的信息,但它被埋没在夸张,华夫饼和重复之中,这使得它难以阅读。 - Jeff Yates
我读 代码完成 我职业生涯的3年。我没有参加过软件工程课程,也没有参加过编程语言课程,但是参加了一些CS课程。它是迄今为止我读过的最好的单书,可以成为更好的程序员。它不会让你成为专家,但它会让你不仅仅是一个修补匠。 - Arnshea C
本书的问题在于,对于初学者来说,它并没有真正意义,因为这些概念有点先进。当您准备好阅读它时,您应该已经知道并练习了本书中99%的概念。 - esac
这就是常识性建议的处理方式,就像本书中提到的那样。每隔一段时间你就需要提醒他们重新排队。 - JohnFx


K&R

@Juan:我知道Juan,我知道 - 但是有些事情只能通过实际掌握手头的任务来学习。整天用抽象的理想说话只会让你成为一名学者。正是在抽象的应用中,我们真正理解了它们存在的原因。 :P

@Keith:很高兴提到Alan Cooper的“The Inmates are the Asylum” - 这是一个让人大开眼界的开明者,自从我读到这本书之后,任何与我合作过的开发者都听到我提到它所支持的想法。 +1


9





计算机科学家的离散数学http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

计算机科学家的离散数学 由J.K.桁架。

虽然这不教你编程,但它教你每个程序员都应该知道的基础数学。你可能还记得大学里的这些东西,但实际上,做谓词逻辑会提高你的编程技巧,如果你想用集合编程,你需要学习集合论。

这里确实有很多有趣的信息可以让你以不同的方式思考问题。它很方便,只需偶尔拿起来学习新东西。


9





系统论:系统如何工作,特别是它们如何失败。让它用得便宜。但是,在你完成一些失败的项目之前,你可能不会得到幽默。

这本书的美丽是版权年。

可能是书中提出的最深刻的“法律”:

基本故障模式定理(F.F.T.):复杂系统通常以故障模式运行。

这个想法是在任何给定的软件中都有失败的部分被其他部分的失败或其他部分的验证掩盖。在这里看到一个真实的例子 Therac-25辐射机,其软件缺陷被硬件故障掩盖了。当硬件故障被删除时,那些年未被发现的软件竞争条件导致该机器造成3人死亡。


9



另请查看同一作者(John Gall)的The Systems Bible。这是Systemantics的第三版,他刚改变了标题。这是你从学校偷的那本书。这是成年人用手电筒在毯子下读书的书。 - Chris Wenham


我最喜欢的一个是 黑客的喜悦因为阅读和教育一样有趣。

我希望第二版即将发布!


9



由Henry S. Warren Jr提供的“Hacker's Delight”+1 - 它不是关于黑客的流行意义,而是黑客攻击,如同在低级别的小小琐事和真正原始意义上的其他“黑客”。不适合所有人,但如果你参与代码优化,编译器等,或者只是一个对低级别的东西感兴趣的普通书呆子那么这是一本很棒的书。 - Paul R


计算机编程的概念,技术和模型。

替代文字http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg


9



Brillant,书籍封面展示了“LaSagradaFamília”,这是一座正在西班牙加泰罗尼亚巴塞罗那建造的大型罗马天主教大教堂。将于2026年完成(仅剩17岁)。像大多数节目一样,即使有最好的书籍,也从未完成...... - PeterMmm


极端编程解释:拥抱变革 作者:肯特贝克。虽然我不提倡硬件XP或高速公路上的软件开发,但我希望在我的职业生涯早期就已经介绍过本书的原理。单元测试,重构,简单性,持续集成,成本/时间/质量/范围 - 这些改变了我对开发的看法。在敏捷之前,这完全是关于调试器和对变更请求的恐惧。在敏捷之后,那些恶魔并没有那么大。


9