关于资源:每位程序员应阅读的最具影响力的单一书籍是什么?

What is the single most influential book every programmer should read?

如果你可以回到过去并告诉自己在开始时作为开发人员阅读一本特定的书,那本书会是哪本书?

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

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

1
inquestion:this"Code Complete"

  • "Joel on Software"太明显了吗?对于C ++,Herb Sutter,Scott Meyers的任何内容。如果你是模板受虐狂,Alexandrescu的"现代C ++设计"。
  • 浏览这个帖子让我意识到大多数编程相关的书是多么丑陋。虽然非常好的线程!
  • 有趣的是,虽然标题写着"每个程序员应该阅读的最具影响力的单一书籍是什么?",但有不少书籍建议处理语言特定主题。根据定义,以及提出的问题,这里建议的书应该处理与语言无关的主题,这证明大多数程序员还没有学习如何阅读。
  • 如果我可以回到过去并告诉自己阅读某些内容,那么最好是我随身携带的报纸或体育事实书。其他任何事都浪费了美好时光。 :-)
  • "Head First"的封面肯定是引人注目的,并成功让我拿起这本书。但是我很快就把它放下了,因为内容似乎很轻松。
  • 这个问题现在变成了包含书名的期刊库。它太通用了,但最糟糕的是它无法搜索
  • 我同意无法在答案中搜索某些内容非常令人沮丧。人们需要翻阅10页的帖子,看看是否可以贡献新的东西。
  • 你知道,如果我不担心被投票到一个整体,我会继续推荐暮光之城。"它也是关于那些脸色苍白,避免太阳的人!"
  • @Carl:这是我在架子上最漂亮的编程相关书籍之一:amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/…
  • 有人可以通过删除书籍上的重复条目来清理答案吗?他们中的大多数地区已经投了票。
  • 有人建议,我倾向于同意,在20页这已经完成了当前时间。只是重复。我现在要锁定;如果你不同意的话......
  • 我投票结束了。这个问题是主观的,有争议的,接受的答案是错误的。一本关于M $如何比Don Knuth的计算机编程艺术更重要的微软出版社的书?我得换裤子。
  • @Heath,这已经讨论过Meta上的死亡。这是每个人都知道不合适的问题之一,因为它在网站开始时非常受欢迎。更实际的是,在这一点上,你不太可能在投票到期前找到其他四个投票结束的人。
  • @Heath,你读过CC吗?我一般反微软,但我发现它非常有用。阅读它以及实用程序员是很好的,因为这两者提供了非常对比的观点。幸运的是,这个问题将这两本书放在首位。你不应仅仅因为你不同意最高投票的答案而关闭一个问题。
  • @skilldrick。我不仅读了McConnell,我以前在MS工作过,在那里你需要舔书。麦康奈尔嫉妒史蒂夫马奎尔,编写固体代码的作者,也是MS媒体。 Maguire的书很好,而且页面也不多。麦康奈尔的书,嗯,你可以说出我的想法,但是要明确表达:"充满了对每个人都不起作用并且即使在IDE改变时也会变得过时的说教废话。"编写固体代码并没有过时。
  • @Torgamus - 传统!这就是让我们保持在屋顶上的原因!传统!
  • @Heath:这个古老的,蔓延的,有问题的问题已被钻石模型锁定。没有必要关闭,因为这只会阻止添加新的(并且无疑是多余的)答案。
  • 完美。现在,已经回答的SO问题的语料库,可供新移民参考,缺乏这个主观问题。
  • @David:这不再被锁定了。它只是受到保护,这不足以阻止发布更多不必要的答案。它需要再次锁定。
  • @gnovice:谢谢,我错过了。
  • @Heath,祝贺成功,尽管只有几个小时。仅供参考我找到了相关的博文:blog.stackoverflow.com/2010/01/stack-overflow-where-we-hate-fun
  • @Torgamus - 看来管理员的阴谋不喜欢民主。太蹩脚了。
  • @Heath - 我同意,这很蹩脚。 @Torgamus - 我不喜欢'有趣'的问题。他们通常最终得出的愚蠢,无意义的答案更多地基于受欢迎程度而不是其他任何东西。我已经阅读了第一页上的大部分书籍,我认为其中只有40%对每个人都特别值得,而且绝对不是第一页上的第一本。
  • @Torgamus - 这不是为了玩乐。这不是愚蠢的。这个问题及其答案是愚蠢的110%。
  • @Omnifarious:务实的程序员怎么没用?它会像正确的那样超越Code Complete。实际上现在我超越了前几个我看到你是对的。
  • @Matt Joiner:实用程序员是我没有读过的少数人之一。 :-)
  • @Omnifarious:你真的应该。
  • 至于回滚,请参阅关于CW问题和作者特定信息。
  • 回滚战意味着再次锁定的时间。


  • 由Steve McConnell编写的Code Complete(第2版)
  • 务实的程序员
  • 计算机程序的结构与解释
  • Kernighan和Ritchie的C编程语言
  • Cormen,Leiserson,Rivest& amp;斯坦
  • 四人帮的设计模式
  • 重构:改进现有规范的设计
  • 神话人月
  • 唐纳德克努特的计算机编程艺术
  • 编译器:Alfred V. Aho,Ravi Sethi和Jeffrey D. Ullman的原理,技术和工具
  • G?del,Escher,Bach by Douglas Hofstadter
  • 清洁代码:Robert C. Martin的敏捷软件工艺手册
  • 有效的C ++
  • 更有效的C ++
  • Charles Petzold的CODE
  • 编程珍珠由Jon Bentley编写
  • Michael C. Feathers有效地使用遗产代码
  • Demarco和Lister的Peopleware
  • Peter Seibel的"工作中的编码员"
  • 当然,你是在开玩笑,费曼先生!
  • 有效的Java第2版
  • Martin Fowler的企业应用程序架构模式
  • 小计划者
  • 经验丰富的计划者
  • 为什么(Poignant)Ruby指南
  • 囚犯正在运行庇护:为什么高科技产品让我们疯狂以及如何恢复理智
  • Unix编程的艺术
  • 测试驱动开发:Kent Beck的例子
  • 敏捷开发人员的实践
  • 不要让我思考
  • Robert C. Martin的敏捷软件开发,原则,模式和实践
  • Eric Evans的领域驱动设计
  • 好。

    • 我们曾经在一家开发商店将Code Complete称为"圣经"。"嘿,你需要参考圣经,你的方法命名很糟糕。"
    • 我对Code Complete印象非常深刻,我认为这对每个程序员来说都是必须的。如果我有一本书要推荐,那就是这本书。
    • 我不会把标签代码完全标记为每个程序员应该阅读的最有影响力的东西。这当然值得一读,但我认为它不值得宗教追随......
    • 我完全不满意Code Complete。我讨厌使用过度使用的PGism,但是它陷入了Blub。这本书的大部分内容与我无关。
    • 我读了Code Complete(第一版)大约15年的职业生涯。这是我读过的第一本关于为什么代码应该以某种方式编写的书。我不知道如果我在我的职业生涯早期阅读它,在亲自体验所讨论的一些问题之前,我是否会赞赏它。
    • 如果你在大学里,Code Complete是一本很好的书。如果您有至少1年的编程经验,那就是总计。
    • 代码完成中有很多有用的信息,但它埋没在夸张,华夫饼干和重复之中,这使得它难以阅读。
    • @Bogdan - 我完全不同意。虽然它对初学者很有用,但如果没有几年的经验,很多建议很难理解。对于初学者,请注意您需要OO编程的基础,以遵循许多章节。该文通常假设您是OO程序员。
    • 我在职业生涯的3年里读过Code Complete。我没有参加过软件工程课程,也没有参加过编程语言课程,但是参加过CS课程。这是迄今为止我读过的最好的单书,可以成为更好的程序员。它不会让你成为专家,但它会让你不仅仅是一个修补匠。
    • 它不适合初学者。大多数事情都说,只有经验丰富的程序员IMO才能完全理解它们的影响。您需要设计十几个框架才能完全了解这个良好实践的百科全书。我确实同意这本书有点夸张和重复,但这与它所呈现的见解没有任何关系。它的教学内容......
    • 本书的问题在于,对于初学者来说,它并没有真正意义,因为这些概念有点先进。当您准备好阅读它时,您应该已经知道并练习了本书中99%的概念。
    • 我在CS研究的最后一年阅读它,这是阅读它的最佳时间,研究期间涵盖了大多数主题,但这是一个很好的回顾,如果你愿意的话,还有很多参考资料可以深入探讨。关于设计的第5章可以在网站上免费获得,试试吧,对我来说这是最有趣的章节之一
    • 这就是常识建议的处理方式,就像本书中提到的那样。每隔一段时间你就需要提醒他们重新排队。
    • Code Complete基本上是关于软件构建。 Comp sci程序不是。这本书在学校外的关键时刻填补了空白。
    • 我认为这本书不仅适合初学者。当你作为一名大四学生阅读时总会有不同的理解,如果没有,那么确认你知道所有的"基础知识"总是很好的。
    • 本书应该是每个程序员参考的一部分。我会把这需要读取CS的学位!
    • 对于所有的nay-sayers ... Code Complete让我看到了这样一个事实:我不仅要为自己编程,而且当其他人跟随我时,他们可以轻松阅读我的代码。可读性,伪代码设计,方法应该只有一个目的,基本上所有BASICS都是一个优秀的程序员应该做的。 HENCE,我会在我的职业生涯开始时读到这篇文章(比我早1 - 2年)。
    • 第1版和第2版之间存在很大差异。第一部分是关于详细的防御性代码,第二版似乎只是"大设计前沿"的争论
    • 大多数计算机书籍要么非常狭隘,要么是由推销员宣传本月的灵丹妙药,并附有"获得认证"的指南。本书可以吸引那些了解编程并教他或她实用技术的人,这些技术教会如何在现实世界中编写实际完成的应用程序。
    • 一些评论指出,具有一年以上经验的程序员应该了解并实践Code Complete中的概念。我同意,他们确实应该,但这并不意味着他们真正了解并实践它们。阅读这本书可以提高实际发生的可能性。也没有必要阅读所有内容,因为您可以阅读关键点和清单,并阅读更多关于您不理解或不同意的观点。我特别喜欢使用它作为快速参考,例如检查深度控制结构的解决方案列表。
    • 代码完成被严重高估。对于那些做了几年专业编程的人来说,这基本上是多余的。此外,如果不是所有的重复和填充物,它可能会减少一半。
    • @chaiguy推荐这本书的一个原因是来自世界着名程序员的优秀评论。人们喜欢Martin Fowler,Grady Booch,Jeffrey Richter,Mike Gunderloy,John Vlissides(Design Patterns的合着者),Jon Bentley,Joel Spolksy,软件开发杂志,IEEE Micro Magazine,Windows Tech Journal,IEEE Computer Magazine ......我同意,你是一位已经拥有多年经验的专家,你可能从中得不到多少。但这不是这个问题的重点。
    • 购买代码完成在此建议的背面。我印象非常深刻。史蒂夫麦康奈尔有一个很好的方式来解释事情 - 耐心,准确,并善用有用的类比。也许有些人会觉得这本书太简单而且缺乏深度(正如有些人已经在这里说过的那样)。但对于像我这样的凡人来说,它已被证明是一种宝贵的资源。


    人工智能编程范式:Peter Norvig的Common Lisp案例研究

    enter image description here

    我开始阅读它是因为我想学习Common Lisp。当我中途休息时,我意识到这是迄今为止我读过的关于编程的最好的书。


    K&安培; R

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

    @Keith:很好地提到Alan Cooper的"囚犯正在逃避庇护" - 这是一个让人大开眼界的开明者,自从我读到这本书后,任何与我合作过的开发者都听到我提到它所支持的想法。 +1


    编程的实践。作者:Brian W. Kernighan,Rob Pike。

    这里显示的风格非常好 - 代码本身就说明了,整本书遵循KISS原则。个人不是我选择的语言,但仍然对我有影响。

    • -1 stackoverflow.com/questions/1711/&hellip的副本;


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


    计算机科学家的离散数学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.的计算机科学家离散数学桁架。

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

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


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

    这本书的美丽是版权年。

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

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

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

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


    替代文字http://ecx.images-amazon.com/images/I/51E0Ojkz8iL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg


    最终软件工艺

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

    本书解释了很多关于软件工程,系统开发的内容。理解不同类型的产品开发之间的区别也非常有用:Web VS shrinkwrap VS IBM框架。人们在设想瀑布模型时会想到什么?阅读本文,我们将变得清晰(希望如此)

    • 这本书需要从头开始重写。这个主题非常有趣,但这本书非常疯狂。
    • 克里斯,我很难理解你的评论......你能解释一下吗?为什么'疯了'?
    • 首先,它充满了印刷错误。 Addison Wesley的一般顶级编辑之手在本书中奇怪地缺席。
    • ......继续,并没有足够的空间,但是:2。在文本中,作者在事实和意见,轶事和基本原则等之间切换的内容从未明确过.3。软件工艺是一种隐喻和处理几种策略软件开发的难点方面。它具有优于替代品和可能的缺点的特定优点。我相信这是理智的做法。说软件本身就是一种手艺毫无意义。很烦人的阅读,但公平地说它是不久前和许多细节我已经忘记了。然而,我的厌恶仍然存在。


    我最喜欢的一个是Hacker's Delight,因为阅读和教育一样有趣。

    我希望第二版即将发布!

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


    从头开始编程。它在互联网上免费。这本书教我AT& T asm。它很容易阅读。

    alt text


    数据库系统概念是您阅读有关理解良好数据库设计原则的最佳书籍之一。

    alt text


    类型和编程语言由Benjamin C Pierce全面理解编程语言的基础。


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

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

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


    @Peter Coulton - 你不读Knuth,你研究它。

    对我而言,我的工作......纯粹的功能数据结构非常适合思考和开发功能语言。


    托马斯弗里德曼的"世界是平的"。

    卓越的编程需要投入精神能量,并致力于与医学或法律专业相媲美的持续学习。它只支付了这些职业支付的一小部分,更不用说支付给进入金融领域的数学精明的工资。构建代码的工资正在逐渐下降,因为对于大多数经济体中的智能和自律而言,这是一项相对容易的职业。

    编程已经被削弱到支付低于管道的程度。管道不能"离岸外包"。您无需每隔一年支付2395美元参加专业水管工会议,因为他们有权获得一套全新的管道技术,这将花费您一年的时间来学习。

    如果你生活在北美或欧洲,年轻,聪明,编程不是理性的职业选择。绝对涉及编程的企业。学习业务,了解编程以改进您的BS探测器:辉煌。但是,将精神能量的大部分用于掌握图书馆,数据结构和算法?只有编程对你来说比经济选择更重要,才有意义。

    如果你喜欢编程,并且因为这个原因打算将它作为你的职业生涯,那么你应该对那些已经并将继续的力量形成一种冷漠的理解,使其成为一种更难以谋生的职业。 。"世界是平的"不会教你如何命名你的变量,但它会让你沉浸在已经到来的经济现实中6或8小时。如果你能阅读它,而不是害怕,那么就去购买"Code Complete"。

    • 这是一个很好的答案!


    The New Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

    真是好书。具有高级品味的计算机科学最重要的领域。是的,CS!=编程,但这对每个程序员来说仍然有用。


    面向对象的分析与设计与Brady Booch的应用


    Python语言对我很有影响力,我希望多年前我会阅读这些书。 Python语言的美观和简洁性确实影响了我在其他语言中编写代码的方式。

    alt text
    alt text

    • 我认为使用Python启动新的程序员可以减少世界上丑陋代码的数量。我与一个随机缩进行的人一起工作 - 如果他们使用Python几个月,那个人就不会这样做。
    • 我认为使用Python启动新的程序员会减少其他语言的数量。
    • 这些是巧合吗?


    黑客,Steven Levy。

    人格和生活方式必须先行。其他一切都可以学习。


    编程实践

    alt text

    如何通过计算机解决它

    alt text http://img.infibeam.com/img/7101e0ee/496b1/05/629/P-M-B-9788131705629.jpg?hei=200&wid=160&op_sharpen=1


    alt text

    去年我参加了一些课程。我看了

    创新者的困境(颠覆性技术)
    神话人月(管理软件)
    越过深渊(启动)
    数据库管理系统,COW书籍
    编程C#,OSTRICH书籍
    开始iPhone开发,GRAPEFRUIT书籍

    每本书都令人惊叹,但Clayton Christensen(1997 !!!)的创新者困境真的是一本很棒的书,让我真正想到了现代软件世界。所面临的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的,改变游戏规则的技术所破坏。在考虑谷歌(可能是最大的"网络"公司)时,它给了一个新的视角。为什么他们有他们的手在一切?这是因为他们不希望自己的位置受到新事物的干扰。谷歌上的预览很容易得到这个想法。阅读!

    • 我认为这本书非常重复。我建议阅读前1/4。


    虽然我同意上面的许多书都是必读书(实用程序员,神话人月,计算机程序设计艺术和SICP??立刻浮现在脑海中),但我想向一个略有不同的方向推荐一个学科Edsger Dijkstra编程。尽管它已有32年历史,但对"可验证性设计"的强调具有高度相关性(即使"可验证性"意味着"证明"而非"单元测试")。


    我认为"Unix编程的艺术"是一本优秀的书,由优秀的黑客/聪明的头脑作为Eric S. Raymond,他试图让我们理解软件设计的一些原则(主要是简单性)。对于即将在Unix平台下启动项目的每个编程人员来说,本书都是必读的。

    • 这是重复的。


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

    C ++如何编程它对初学者有好处。这本书是完整的1500页。

    • 我完全同意。 Deitel学习编程语言的方法令人惊叹。我认为Java如何编程作为我的编程圣经!


    Kernighan&普劳格的编程风格元素。
    它说明了噱头聪明和优雅聪明之间的区别。


    厄运大师。至于对你的职业的动机和热爱:它不会比本书中描述的更好,真实地鼓舞人心的故事!

    • +1用于准确的一行评审


    弗雷德布鲁克斯的神话人月
    http://en.wikipedia.org/wiki/The_Mythical_Man-Month


    Martin Fowler的重构:改进现有代码的设计已经列出。但我会详细说明它为何影响了我。

    整本书的本质是关于构造代码,以便人类更容易阅读和理解。它强烈地告诉我,我写的代码是为了让我的同事和后继者消费并可能从中学到一些好东西。它激励我有意识地以一种让人们赞美我的名字的方式进行编程,而不是诅咒我永远的诅咒。


    这是一本优秀的书,并没有得到广泛的掌声,但却充满了深刻的洞察力:敏捷软件开发:Alistair Cockburn的合作游戏。

    这有什么特别之处?好吧,显然每个人都听过"敏捷"一词,而且现在看来大多数人都是信徒。不管你是否相信,敏捷运动存在的背后都有一些深层原则。本书以精确,科学的方式揭示和阐述了这些原则。一些原则是(顺便说一句,这些是我的话,而不是Alistair的):

  • 团队软件开发最难的事情就是让每个人的大脑都有相同的理解。我们正在建造庞大,精细,复杂的系统,这些系统在有形世界中是看不见的。你越是让更多人的大脑分享更深入的理解,你的团队在软件开发方面的效率就越高。这是结对编程有意义的根本原因。大多数人都不赞成(我最初也是这样做的),但考虑到这个原则,我强烈建议你再给它一次。你结束了两个深刻理解你刚建立的子系统的人......没有太多其他方法可以如此快速地进行如此深入的信息传输。这就像一个瓦肯人的心灵融合。
  • 你并不总是需要用语言来快速传达深刻的理解。还有一个推论:太多的话,你超过了听众/读者的能力,这意味着你正在尝试的理解转移不会发生。考虑到孩子们通过"沉浸"和"吸收"来学习如何说语言。不仅仅是语言......他举了一些孩子在地板上玩火车的例子。还有另外一个从来没有看过火车的孩子......但是通过观察其他孩子,他汲取了游戏的主旨并且一直在玩。这种情况一直发生在人类之间。这一点以及太多单词的推论可以帮助您了解在旧的"瀑布"时代如何误导它来尝试编写700页的详细要求规范。
  • 那里还有更多。我现在闭嘴,但我强烈推荐这本书!

    • 一个独特的贡献,你花时间清楚地解释为什么值得一读。 +1原创性和努力!我期待很快阅读这篇文章......
    • 好。我不认为你会失望。


    由Charles M. Kozierok撰写的TCP / IP指南

    尽管它被描述为一种"百科全书式的参考",但它作为叙事具有令人难以置信的可读性。

    本作者提供了一个非常非常,非常好的,全面的网络介绍和网络基础设施。所有程序员都应该知道的东西。

    对我来说,这是Charles Petzold的"代码"的自然后续。如果"代码"向外行人解释计算机是如何工作的,"TCP / IP指南"解释了它们如何连接在一起。

    如果你给了一个12岁的极客一份"代码"和一份"The TCP / IP Guide" - 他们将在17岁之前建立下一个Google。

    换句话说,如果我可以回到过去并告诉自己在我作为开发人员的职业生涯开始时阅读一本特定的书,那么这个(加上代码)就在我的列表顶部。


    Pete Goodliffe的Code Craft很好读!

    Code Craft http://ecx.images-amazon.com/images/I/51WZ9AEC3GL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg

    • 我对这本书寄予厚望,但它不适合我。我认为这说明显而易见。这对于那些刚接触编程的人来说可能是个好消息。


    Bunny先生的ActiveX指南


    我一直在这里,所以我发现有影响力的大多数书今天不一定适用。我相信理解您正在开发的平台(硬件和操作系统)是非常重要的。我也认为从其他人的错误中吸取教训是很重要的。所以我推荐的两本书是:

    计算灾难和寻找愚蠢:二十多年的高科技营销灾难

    • 给我一个休息时间。为什么在世界上你会记下这个因为我提到了两本书?


    当我开始用Java开发(并且到目前为止仍在这样做)时,我必须推荐该领域的杰出工作:Bunny先生的Java大杯。

    从作者的模糊:

    There is simply no better way to learn Java than to have the pineal gland of an expert Java programmer surgically implanted in your brain. Sadly, most HMOs refuse to pay for this career saving procedure, deeming Java to be too experimental. At last there is an alternative treatment for those of us who cannot wait for sweeping health care reforms.

    Mr. Bunny’s Big Cup O’ Java is recommended by n out of ten doctors, where n is any integer you wish to make up to impress an astoundingly gullible public. The book begins with an overview of the book, and quickly expands into the book itself. Just look at the topics covered:

    • Java

    In short, MBBCOJ will teach you all you need to know for a successful career in today’s rabbit development environments.

    单凭像素的洞察力将缩短我的软件开发生命的时间。


    掌握正则表达式


    替代文字http://ecx.images-amazon.com/images/I/51fhwR6eb3L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

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


    务实的程序员:毫无疑问,从熟练工到大师。它中的建议是如此精确,简单,它就像是"常识程序员"。爱它。


    到目前为止,我有一些对我很有影响的好书,我在这个名单上没见过:

    唐纳德诺曼的日常生活心理学。其他人设计的一般原则。对于用户界面来说,这看起来似乎有点好处,但是如果你考虑一下,它几乎可以在任何地方都有应用程序,除了原始开发人员之外还有其他人可以使用它;即G。 API和设计界面,使其他开发人员形成正确的心理模型,并从API本身获得适当的反馈。

    Glen Myers的软件测试艺术。对测试软件的一般性介绍;有利于程序员阅读,以帮助他们像测试人员一样思考。即想想可能出现的问题并做好准备。

    顺便说一句,我意识到问题是"单一最具影响力的书",但讨论似乎已经改为列出供开发人员阅读的好书,所以我希望我可以原谅列出两本好书而不仅仅是一本。

    • -1:每个答案一本书请。


    Brian W.Kerninghan& Sons撰写的"编程实践"。罗伯派克。

    语言很容易,主题也很有趣。

    • 当然这是重复的?


    麦康奈尔的快速发展

    • -1好书,但是stackoverflow.com/questions/1711/… (即使它晃动,它有临界质量)
    • +1至少这个有一个链接。
    • 它可能是一个副本,但另一个答案列出了两个书,当问题是"最单一"。那是作弊。另外,另一个答案是复制本身。最后,我有一个链接。 :-)


    除了如何安排在我的书架上之外,没有特别的顺序:

    • 务实的程序员
    • 福勒的谴责
    • 通过Feathers有效地处理遗留代码。这实际上是重构的配套卷。
    • Fowler推出的UML。其他优点包括简洁。
    • 由Steve Maguire调试开发过程
    • Gamma等人的设计模式(又名"四人帮")

    用户是否曾触摸过您的代码?如果您不是仅仅进行后端工作,我建议使用关于Face:用户界面设计的基本知识 - 现在是第三版(链接)。我曾经认为我的用户是愚蠢的,因为他们没有"获得"我的界面。我当然是错的。关于Face转过身来。

    • -1:好书,但重复,见前面
    • -1:dup,而Cooper的"Inmates"是这个主题的一个更好的开始


    不是最有影响力的,但值得一看的是J.M.Coetzee的青年。

    20世纪50年代南非的学生青年的叙述者,长期以来一直在策划逃离他的祖国:从他母亲的嗜好,从失败困扰他的父亲,以及他肯定即将到来革命。学习数学,阅读诗歌,省钱,他试图确保当他到达现实世界时,无论在哪里,他都会准备好充分体验生活,并将其转化为艺术。然而,最后到达伦敦,他既没有诗歌也没有浪漫。相反,他屈服于作为计算机程序员的生活单调,随机的,无爱的事情从中得不到任何解脱。没有灵感,他停止写作。一个尴尬的殖民地,一个宪法的局外人,他开始了一个黑暗的朝圣之旅,在那里他不断受到考验并不断发现缺乏。

    青年封面http://img440.imageshack.us/img440/5140/youthgd4.jpg


    企业模式和MDA:使用原型模式和UML构建更好的软件

    对于那些希望利用ORM和UML的人来说,这是一本很好的读物

    Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML


    重构


    餐巾的背面,Dan Roam。

    餐巾背面http://www.coverbrowser.com/image/bestsellers-2008/302-7.jpg

    一本关于视觉思维技巧的好书。现在还有一个扩展版本。我不能说那个版本,因为我不拥有它;然而。


    编程语言中的设计概念由FA Turbak提供了许多编程概念的详细实现,对于理解底层发生的事情非常有用。


    对于初学程序员来说,这本书并不是一本书,但如果您正在寻找SOA设计书籍,那么实践中的SOA:分布式系统设计的艺术就是适合您的。

    • 太过狭窄,成为每个程序员应该阅读的1本书


    完美的软件:以及关于测试的其他幻想

    TITLE封面http://ecx.images-amazon.com/images/I/51j3BSRspAL._SL500_AA240_.jpg

    完美的软件:以及Gerald M. Weinberg关于测试的其他幻想

    ISBN-10:0932633692

    ISBN-13:978-0932633699


    软件工程的事实和谬误Robert L. Glass http://www.codinghorror.com/blog/images/facts-and-fallacies-of-software-engineering.jpg

    Robert L. Glass的软件工程的事实和谬误是一本非常好的书。在我阅读它之前,我已经成为一名职业黑客已有近10年了,我仍然学到了很多东西。

    • -1:投票结果更高


    软件工具由Brian W. Kernighan和P. J. Plauger撰写

    它对我编写软件的方式产生了深远的影响。


    史蒂夫麦康奈尔的代码完成有很多选票,但他的软件项目生存指南书呢?我认为他们都需要阅读但出于不同的原因。

    • 你可以添加一张图片 - 现在它扫描就好像它的CC另一个鹦鹉推荐这整个线程似乎是abotut


    由W. Richard Stevens在UNIX环境中进行高级编程。


    Bertrand Meyer的面向对象软件构建

    • 我发现这本书在我早期非常有用 - 它向我介绍了大规模框架设计的艺术和科学。埃菲尔发生了什么?


    似乎没有人提到Stroustup的C ++编程语言,这是一本每本C ++程序员都应该阅读的好书。

    我还认为每个程序员和经理都应该阅读极限编程解释:拥抱变更。书中的许多想法现在都是常识,但本书给出了对软件工程质量追求的智能和鼓舞人心的解释。

    我会提出针对Knuth和四人帮的经典建议。


    Scott Myers提供的有效C ++和更有效的C ++。

    • -1:好书,但重复,见前面


    alt text

    掌握:成功和长期实现的关键,乔治伦纳德

    这是关于在任何技能中达到掌握所需的心态,以及为什么。它真棒,也很容易阅读。

    • +1:喜欢这本书。虽然......考虑到大多数人都不知道它,它肯定不是最有影响力的编程书。
    • 这是一本非常棒的书,帮助我提高我的所有爱好/传球。


    我的投票是"如何像计算机科学家一样思考:用Python学习"
    它既可以作为书籍也可以作为免费电子书使用。

    它确实帮助我理解了Python的基础知识,而不仅仅是编程。虽然它使用Python来演示概念,但它们适用于大多数(如果不是全部)编程语言。另外:它是免费的!


    我想起了三本书。

    • Eric S. Raymond的Unix编程艺术。
    • 由瑞克库克编辑的巫术。
    • 唐纳德克努特的计算机编程艺术。

    我也喜欢Paul Graham的写作。


    调试开发过程:保持专注,实现船舶日期和建立稳固团队的实用策略Steve Maguire。

    无意义,脚踏实地,有趣,深刻。


    Code Complete是第一选择,但我也引用Gang of Four的设计模式和Craig Larman的应用UML和模式。

    克里斯托弗亚历山大的永恒建筑方式是另一个伟大的方式。即使它是关于结构的,它也包含在我已阅读的许多优秀编程书目的参考书目中。

    另一个,我正在学习很多新东西,是Clifton Nock的数据访问模式。

    • 每个anser不止一本书,前两页中有很多(如果不是全部)。


    我最近阅读了Dreaming in Code,发现它是一本有趣的读物。自从我开始阅读它的那一天起,Chandler 1.0就被释放了。阅读有关人才试图"改变世界"的项目团队日益增长的痛苦和错误,可以为您提供很多东西。斯科特还带来了很多程序员的传说和智慧,这只是一个有趣的阅读。

    美丽的代码有一两件事让我有不同的思考,特别是有关自上而下运算符优先权的章节。

    • 请一本书


    Mary和Tom Poppendieck的精益软件开发绝对适合每个开发人员的书架


    添加到上面提到的伟大的:

    企业应用架构模式

    企业集成模式

    • 你可以编辑这个并让它引用一个没有提到更高票数的那个,所以我可以改变我的-1,因为没有读取Q为+1的EIP吗?


    一本书的影响力通常取决于读者以及他们阅读本书时的职业生涯。我必须对Head First Design Patterns大声疾呼。伟大的书和它所创造的非常有创意的方式应该被用作其他科技书籍作者的榜样。即它的编写是为了促进学习和内化概念。

    Head First Design Patterns http://ecx.images-amazon.com/images/I/51LSqrgoT1L._SS500_.jpg

    • 我无法通过封面
    • 我从我当地的图书馆检查了这个,并且只用了大约50页就把它归还了。每个页面上的"Head First"投掷剪辑艺术和侧面注释可能是一种有效的学习方式对于一些人来说,但作为一个患有注意力缺陷症的人,它让我头晕目眩。我根本无法专注于内容。对于相同的信息,我更喜欢最初的四人帮书。
    • 重复发帖(抱歉)。
    • 与之前的投票重复


    编程Perl(O'Reilly)


    Aaron Hillegass为Mac OS X编写的可可编程

    • 精彩的书。运行Mac或iPhone / iPad上的初级Cocoa程序员需要知道的所有基础知识。非常易读,有很多例子。赢家!


    这不是这个问题的直接答案,因为我觉得它已经在上面得到了解答,但是,其中一本肯定会对我的编码方式产生影响的书是Code Reading,第1卷:开源视角。

    alt text http://g.bookpool.com/covers/405/0201799405_140_30O.gif


    我很惊讶还没有提到这本书:由Leo Brodie开始。毕竟Forth是一种基于堆栈的语言,应该适合这个网站的观众......

    不可否认,Forth是一种奇怪的语言,现在还不是很受欢迎。但是这本书很难读。它有卡通!这本书以及Brodie的另一本书Thinking Forth都可以在网上免费获得。


    我认为代码完整对于这个问题将是一个非常受欢迎的代码,对我而言,它纠正了我的许多坏习惯并重新肯定了我的良好做法。

    同样对于我的Perl背景,我非常喜欢Damian Conway的Perl最佳实践。如果你不使用样式和最佳实践,Perl可能是一种讨厌的语言,这就是我在阅读的脚本(有时是写作)中看到的。

    我喜欢Head First系列,当你不喜欢更严肃的风格书时,它们非常好并易于阅读。


    http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg

    让我的编程达到一个全新的水平。

    • 当然这是重复的。


    无论您是使用Smalltalk进行编码还是不使用Smalltalk最佳实践模式,都是一本很好的阅读材料。充满了小观察,会改变你的编码方式;为了更好。


    它不是严格意义上的开发书,我相信我已经在另一个地方提到了它,但它是一本我真的相信所有开发人员应该阅读的书,从php到Java再到汇编开发人员。

    它真正汇集了计算机内部的内容,为什么不应该浪费内存以及计算历史中一些更有趣的部分。这是对计算机及其内容的介绍。它给了我对低级编程的终极热情,并帮助我理解指针和内存比任何其他计算机更多。

    • -1:好书,但重复,见前面


    由开发人员编写,由Mike Gunderloy编写。


    为了获得prolog的进步,我喜欢这两本书:

    Prolog的艺术

    Prolog的工艺

    真正打开了逻辑编程和递归方案的思想。


    UNIX环境中的高级编程 - W. Richard Stevens

    • 这是重复的


    Peter Norton的IBM PC汇编语言手册

    alt text

    我在电脑前(DOS)度过了无数个夜晚,探索未知世界:-D


    由于我是一名C#程序员,并且已经提到了大多数通用书籍,我想推荐Bill Wagner的书"更有效的C#"。

    我认为开发复合WPF应用程序的大多数人也应该看看微软的复合应用指南(也称为Prism):

    综合应用指南

    • -1:我们可以有一个非重复吗?


    应用UML和模式由Craig Larman。

    这本书的标题略有误导;它确实处理UML和模式,但它涵盖了更多。本书的副标题告诉你更多:面向对象分析与设计和迭代开发的介绍。


    Kent Beck的极限编程


    所有的思考......书。

    布鲁斯埃克尔是教育学的天才!
    理解C ++中多态的实现非常容易。它包含了您应该了解的有关C ++,基本和高级概念的所有内容。方式比Stroustrup更好。
    我也和他一起学习Java。

    最后但并非最不重要:

    C ++版是免费的!

    http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html


    我读过大多数关于这个问题得分高的书籍 - 但不是全部(感谢上帝!)而且我将其他书籍加入我的亚马逊愿望清单中!

    (有人应该在亚马逊上为这些书创建一个列表......也许是一个名为"Stackoverflow最佳书籍"的列表?有人知道怎么做吗?)

    对我来说,有史以来最好的书就是Code Complete。这是一个启示。我用英语买了第二版,然后用法语买了,我仍然认为它应该是任何计算机科学学院的必修课。数据结构很酷,但代码完整,不开玩笑,更为重要......

    然后,我的第二本最好的书是编写固体代码 - 学习如何理解,知道如何编写可靠代码真是太棒了。

    然后是很多非常好的书,但这里没人提。直到2001年,我认为:框架设计指南:可重用.NET库的约定,成语和模式。一颗宝石!我多次阅读这本书,它仍然在我的桌子上,就在我的LCD旁边,还有Code Complete(真的!)。我喜欢它的编写方式(喜欢这里和那里添加的评论 - 书籍应该都是这样写的!)

    但是,我忘记了我读过的第一本好书!让我热爱计算机科学的人,充满激情:

    • 计算! (C64杂志 - 永远不会忘记Jim Butterfly:o)
    • Borland C ++用户指南(旧的,大约1991年,那些试图引入面向对象编程的人,编写得很好)。
    • 大多数Microsoft Developpement Tools用户指南,大约1990-1995。不知道是谁写的,但他们很酷!我记得在深夜,周六晚上读它们......

    那么,很好的问题:o)


    Kernighan和Pike的Unix编程环境。

    The Unix Programming Environment

    它比任何其他书籍都更能教会我构建小型,易于测试的工具的好处,这些工具可以组合起来做大事。

    • 如果可以,我会投票更多。


    一个全新的思想,由丹尼尔粉红色。有趣地看待我们行业的未来。

    我假设大多数阅读此内容的人已经阅读了列表顶部的书籍。所以,我会提供一本书,对我们的行业有不同的看法。

    替代文字http://www.danpink.com/images/wnm.jpg


    对我来说,它是Design Patterns Explained,它为我提供了一个'哦,它是如何工作'的时刻,在设计模式方面,并且在向其他人教授设计模式时非常有用。


    这一次让我开始真正的OOA& D.

    应用UML和模式:面向对象的分析和设计以及迭代开发简介 - Craig Larman

    这些也将在那里:

    • 企业应用程序架构中的模式 - 福勒
    • 领域驱动设计 - Eric Evans

    • 一个人会好的,希望不是一个副本。哪一个?


    对我来说,最有影响力的编程书籍是艾伦·霍鲁布(Allen Holub)足以在脚下拍摄自己的绳索。

    书的封面http://ecx.images-amazon.com/images/I/71AE90J735L._SL500_AA240_.gif

    哦,好吧,多久以前。

    • 很棒的头衔


    我想我在不同的时代长大,而不是大多数......

    我读过的最有影响力的书之一是APUE。

    或者是W. Richard Stevens的几乎任何东西。


    这可能不算是一本"开发书",但无论如何我都要抛弃它:Stephen Levy的黑客。我发现它与编程的情感方面有关。


    有效地使用遗留代码是一本非常了不起的书,它详细介绍了如何正确地对代码进行单元测试以及它的真正好处。它真的让我大开眼界。


    另外,我会提到Hugh Darwen和CJ Date的The Third Manifesto。如果您对理解数据感兴趣(这在程序员中似乎并不常见),那么这本书是必读的。当你意识到SQL有多么糟糕,它也会让你感到难过,但它也会帮助你应对这种破坏。了解工具如何被破坏可让您在设计时考虑到这些缺陷。


    我想我们每隔几周就可以提出同样最高评价的问题,并且所有提到代码完成的人或者语用程序员都需要upmod。

    不是说它有任何错误:-)


    Charles Petzold的Win32编程


    一开始是命令行。尼尔斯蒂芬森。

    • 听起来不错。链接?
    • amazon.com/Beginning-was-Command-Line-Neal-Stephenson/dp/…
    • 或者只是从他的网站上阅读:cryptonomicon.com/beginning.html


    Roger S. Pressman - 软件工程(从业者方法)。它有很多有用的信息。


    Amiga ROM内核手册:)

    • 映射Atari!


    Bjarne Stroustrup撰写的"C ++的设计与演变"

    除了提供很多关于C ++的背景知识外,它还是一项关于大规模计划所涉及的权衡和设计问题的长篇研究。

    BN.com


    虽然不是严格意义上的软件开发书,但我强烈建议不要让我思考!在此列表中考虑。


    我是Robert C. Martin大多数头衔的忠实粉丝,特别是敏捷软件开发,原理和实践以及清洁代码:敏捷软件工艺手册。


    我的高中数学老师借给我一份"你的灯光图"问题,我已多次重读。作为开发人员,它在生活中一直是非常宝贵的。


    由于上面提到的许多原因,以及Perl测试:开发人员的笔记本,这是Head First Design Patterns之间的折腾,它应该是任何希望编写可维护代码的Perl程序员的圣经之一。


    专家C编程:Peter Van Der Linden的深层秘密

    • 到目前为止,有关编程的最佳书籍。如果只有其他技术作者能够掌握以对话而非光顾的方式呈现深度技术信息的能力。


    Eric Evans的领域驱动设计


    问题是,"哪本书真正影响了你作为开发人员的工作方式?"毫无疑问,Jeff Prosise使用MFC编程Windows是对我作为开发人员如何工作影响最大的书。它没有教会我"编程"的基础知识,但它为我和成千上万的其他开发人员打开了Windows平台开发的世界。

    在MFC开发之前,我曾在"Petzold风格"中编写了一些Windows代码。我很快决定使用Windows平台作为开发人员,我们不值得这么麻烦。当Prosise推出他的MFC书时,我意识到(和其他数千名非Windows程序员一样)我可以创建一个易于使用的界面,用户不仅可以理解,而且实际上喜欢使用。我吞噬了这本书,在里面写了很多笔记并且拒绝了很多角落,我最终买了第二本。

    杰西,杰夫。使用MFC 2nd Ed编程Windows。
    微软出版社1999
    ISBN:1-57231-695-0


    阅读Head First Design Patterns,获取比GoF书更易于阅读的介绍。我记得在每一章之后感觉我已经升级了。

    Kent Beck的TDD测试驱动开发示例。


    务实的程序员


    领域驱动设计埃里克埃文斯是一本很棒的书!


    实体代码优化软件开发生命周期

    虽然这本书只有300页,并且有利于微软的技术,但它仍然提供了一些不错的语言知识花絮。

    • -1重复评分较高,抱歉


    我会说"超越代码 - 学会用9个简单的步骤来区分自己"是一本非常好的动机书。我不介绍技术问题,但它描述了与人合作的方式,专业,......对我来说,如果你需要一些鼓舞人心的话,这本书可以一次又一次地阅读。除此之外,它在3至4小时内阅读便宜且非常容易和愉快。

    在我的博客上有一点评论。


    我现在正在阅读敏捷软件开发,原则,模式和实践。对于那些对XP和面向对象设计感兴趣的人来说,这是一个经典的阅读。

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

    • 我也听过很多关于它的好消息,但前面已经提到过,请参阅:stackoverflow.com/questions/1711/… (反过来投票 - 啊,好吧,当你有声誉的时候:)


    我在一篇关于XI-Factory的博客上看到了软件工厂:用模式,模型,框架和工具组装应用程序的评论,我读了它,我必须说这本书是必读的。尽管并非专门针对程序员,但它很清楚地解释了编程领域现在正在发生的模型驱动架构等等。

    • 它还在发生吗?这是地球上最好的MDA boook / info吗?


    每个程序员应该了解的内存

    作者:Ulrich Drepper - 解释现代记忆子系统的结构,并建议如何有效地利用它们。

    PS:对不起如果我是双重发帖。


    Peter Van Der Linden的"专家C编程 - 深度C秘密"发生了什么 - 一个古典而愉快的阅读。应该在学习C年之后立即阅读,但在学习C 3年后得到它!一本推荐的书,它回答了关于指针最常见的SO问题(我最喜欢的主题)。住它,吃它,呼吸它! 10/10!


    每个程序员应该知道的97件事

    替代文字http://ecx.images-amazon.com/images/I/51F134Q8TrL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

    这本书汇集了一些世界上最好的程序员的集体经验。这是必读的。


    对于低级娱乐我会建议Michael Abrash的
    i)-Zen代码优化 - 和
    ii) - 图形编程黑皮书 -
    即使你不做任何图形编程。


    Ray Duncan的高级MS-DOS。


    Craig Larman应用UML和模式。虽然四人帮书籍设计模式非常有启发性,但我发现在编程课程中遇到Larman的书之前,我没有"得到"如何使用设计模式。


    由于很多人都列出了Head First Design Patterns,我同意这是一本非常好的书,我想看看是否有这么多人知道一个名为Design Patterns Explained:面向对象设计的新视角的标题。

    这个标题极好地处理了设计模式。本书的前半部分非常容易理解,剩下的章节只需要牢牢掌握已经涵盖的内容。我觉得本书的后半部分不太容易理解的原因是它涵盖了我作为一个年轻的开发人员公认缺乏的模式在经验上,没有多少使用。

    这个标题还介绍了设计模式背后的概念,涵盖了Christopher Alexander在架构方面的初步工作,首先在SmallTalk中实现了文档模式。

    我认为任何喜欢Head First Design Patterns但仍然发现GoF非常干燥的人应该将设计模式解释为更具可读性(尽管不是那么全面)的替代方案。


    另一本尚未被提及的书,应该是每个程序员都必须阅读,任何编程语言的新手都是新手,是迈克尔霍华德的MSPress编写安全代码(第2版)。


    Steve Macguire的写作固体代码


    我发现"Prolog的艺术"是一本非常好的读物。


    GW Basic简介。有了它,我从来没有学会如何编程,任何其他书籍都不会对我有任何好处。


    我在这里没有看到的是xUnit测试模式:由Gerard Meszaros重构测试代码。这本书真的帮助我从新的角度看单元测试。


    我的实例是测试驱动开发


    似乎大多数人已经触及了一些非常好的书。一个真正帮助我的是Effective C#:50种提高C#的方法。如果我没有提到维尼之道,那将是我的疏忽。哲学书籍可以对灵魂和代码有益。

    • -1:投票的一个更高的重复帖子。请务必删除以使此线程更清洁。即使选票较高的人更新,请带一个让团队整理这个混乱的问题,让整个答案获得他们应该拥有的价值


    值得一提的经典之作是界面羞耻馆。这个网站详细介绍了各种各样的界面设计失礼,非常有趣。最初的iarchitect.com不再存在,但其他人已经在自己的网站上重新建立了HOS。


    如何解决它:数学方法的一个新方面
    虽然与计算机编程没有直接关系,但它确实教会了解决问题的艺术,而这正是计算机编程的全部意义所在。


    代码是法律 - 您正在以[您选择的语言]进行所有这些写作,编辑和思考,但为什么?你的MEAN代码是什么?它究竟会做什么?

    (我可以推荐一本关于质量保证的书,但我没有......)


    面向对象的设计启发式是一个很好的阅读。我无法爱不释手。


    我将添加一些我在这里没有看到的对我有影响的人:

    • Yourdon和Constantine,"结构化设计"。如果您愿意稍微挖掘一下,那么您需要了解的有关软件设计的一切都在这里。
    • Leonard Koren,"Wabi-Sabi:艺术家,设计师,诗人和哲学家"。平衡美和实用主义的务实哲学。

    • -1:一个人会好的


    在学习Big O符号和各种排序算法的来龙去脉时,C ++中的算法对我来说非常宝贵。这是在Sedgewick决定通过将其划分为5本不同的书之后可以赚更多钱之前发布的。

    C ++常见问题解答是一本很棒的书,它真实地向您展示了您应该和不应该在C ++中做什么。 C ++的向后兼容性留下了很多地雷,这本书帮助人们小心翼翼地避开它们,同时又是对OO设计和意图的一个很好的介绍。


    这是每个程序员必读的书:Abraham Silberschatz的数据库系统概念。

    替代文字http://images.barnesandnoble.com/images/14870000/14878097.JPG

    • 从7年多以前,当我还是一名崭露头角的CS学生时,它现在坐在我的桌子上:)


    特立独行!:世界上最不寻常的工作场所背后的成功故事

    替代文字http://ecx.images-amazon.com/images/I/410TX7YN94L._SL500_AA300_.jpg

    会让你意识到工作场所应该是什么样的。


    You.Next():将您的软件开发职业转移到领导力轨道
    ~Michael C. Finley(作者),HonzaFedák(作者)
    链接文字


    The Pink Shirt book

    程序员指南IBM PC。粉红衬衫书。

    ......好吧,有人不得不说出来。

    • IIRC,我有。在MS-DOS和BIOS中有很多低级别的卑鄙。


    Bunny先生的ActiveX指南

    • +1你不是匿名的另一个Paul Mitchell,他不会在他的个人资料中加入细节! (没有实际+1,因为在第8页的路上用完了这个帖子的投票!)


    游戏设计的艺术 - 杰西·谢尔的"镜头之书"

    Jesse Schell has taught Game Design and led research projects at Carnegie Mellon’s Entertainment Technology Center since 2002.

    努夫说。

    游戏设计的艺术 - 一本书的镜头http://i50.tinypic.com/iekw0l.jpg

    PS:对不起如果我是双重发帖,我在答案中找不到这本书 - 要么因为标题不准确,要么没有图像。让我知道,如果是这样我会删除它。


    任何导师/团队领导/经理或任何报告上述内容的人的基本阅读。

    替代文字http://ecx.images-amazon.com/images/I/316N6QYW32L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg


    这是一个非常丰富和有用的编译,但是,我有点惊讶我没有遇到作者中的Andrew S. Tanenbaum。 IMO他是最好的CS教授之一,他的天才主要是以他非凡的能力为CS本科生提供相当困难的材料。他的书(现代操作系统,或计算机网络可能会响铃)在为我提供坚实的CS基础同时做我的BS并且我强烈推荐它们时做了很棒的工作。
    Tanenbaum上的其他一些有趣的东西,证明了他的技能超越了教学:一个名为MINIX的操作系统的作者 - 在实施Linux时,Linus从中获得了灵感。 Amoeba - 分布式操作系统;无龟 - 匿名p2p网络。

    • 墙上的文字。你有什么建议?


    我迟到了这个问题,但显然仍然有一些独特的东西...... Barry Boehm的软件工程经济学总结说,如果你想真正提高软件生产力,那么就会有更好的人,因为更好的工具,硬件,语言,方法等都会产生边际影响。只有更好的人才能大幅提高生产力。我强调,这是更好的工程师,而不是更多的工程师!

    不是那种你和你一起上床的书,就像你在Coders At Work中所做的那样,但是这本书让我们的行业一直在努力学习这一教训。证实离岸外包是一种虚假的经济,而Boehm的模型预测这种经济只会产生微不足道的积极影响,如果有的话。看看这个。


    • 游戏架构和设计:学习游戏设计和编程的最佳实践

    即使我从未编写过游戏,但这本书帮助我以有趣的方式理解了很多东西。


    Andrei Alexandrescu的现代C ++设计


    学习C#2005,作者:Jesse Liberty&布莱恩麦克唐纳(奥莱利)。

    ISBN 10:0-596-10209-7。

    当我第一次从ASP经典程序代码跳转到VS2005中面向对象的C#代码时,本书为我指明了正确的道路。


    编写Steve Maguire的固体代码。


    Grady Booch的"面向对象的分析和应用设计"。我很久以前就读过它,它告诉我可能有一种开发面向对象软件的方法。从那时起,许多其他书籍对我产生了影响,但这一本让我开始了。


    Pro Spring是对控制和依赖注入反转世界的精彩介绍。如果您不了解这些实践及其含义 - Pro Spring中的主题和技术细节的平衡非常好。它构建了一个伟大的案例和随之而来的个人基础。

    我建议的另一本书是Robert Martin的敏捷软件开发(ASD)。代码气味,敏捷技术,测试驱动开发,原则......许多不同编程方面的良好书写平衡。

    更传统的经典包括臭名昭着的GoF设计模式,Bertrand Meyer的面向对象软件构建,Booch的面向对象分析和设计,Scott Meyer的"Effective C ++"系列以及Gunderloy,Coder to Developer所享有的鲜为人知的书。

    虽然书很好......但不要忘记收音机!

    ......让我再补充一点。如果你还没有发现野生动物园 - 看一看。它比堆栈溢出更容易上瘾:-)我发现我的谷歌类型的习惯 - 我需要更昂贵的订阅,所以我可以随时查看任何书籍 - 但我建议任何人甚至远程感兴趣的试用。

    (啊,是的,今天有点obj-C,明天可可,模式?soa?那个食谱中的例子是什么?史蒂夫在第二版中说了什么?我应该买这本书吗?......这样的订阅很棒如果你想要一些连续性和背景你正在谷歌搜索......)

    • 面向对象软件构建的+1 - 必读。


    这里有两个我没见过的提到:
    我希望我早一点读过Koenig和Moo的"R ++ on C ++"。这本书让OO概念真的为我点击了。
    对于计划在90年代中期开始编程生涯的其他人,我推荐Michael Abrash的"代码优化之禅"。

    • 你能把它缩小到一个吗?


    Roger Kaufman博士撰写的"Fortran着色书"(1978,ISBN:0262610264)

    多么愚蠢的概念 - 甚至比"傻瓜"书更基本!但它适用于任何语言(当然有几个特定的??例子),以一种非常容易理解和"痛苦有趣"的方式解释逻辑,变量,i / o等基本概念。

    这足以让十岁的孩子对编程感兴趣......

    alt text

    (在Flickr用户帐户上找到封面照片)

    • 我想我还有一份副本! ;)


    第一本对我产生真正影响的书是Tom Swan的Mastering Turbo Assembler。

    其他有影响的书籍是Linus Torvalds和David Diamond的Just For Fun,当然还有Andrew Hunt和David Thomas的实用程序员。


    Ken Schwaber和Mike Beedle使用Scrum进行敏捷软件开发。

    我用这本书作为理解敏捷开发的起点。


    如何像计算机科学家一样思考:用python学习

    可能不是世界上最先进的书,但它让我理解了我无法理解的编程概念,特别是面向对象的主题。


    Stanley Lippman在C ++对象模型中


    Kent Beck的实施模式。

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

    您可以学习如何通过编程与人沟通。


    Deitel和Deitel,"C ++:如何编程"

    XUnit测试模式


    唐纳德诺曼,'日常事物的设计'

    本身并不是关于编程,而是关于世界上的事物应该如何运作 - 这种可用性的心理学。

    在设计最终用户界面和API时,这对我来说非常宝贵。


    实用的程序员非常好。然而,当我开始时真正产生影响的是:

    Windows 95系统编程秘密"

    我知道 - 它在外面听起来有点俗气,而且可能已经过了一段时间 - 但这是基于作者(Matt Pietrek)使用他自己的工具进行调查的Win95内部的一个很棒的解释 - 其代码随书出来。请记住,这是在整个开源之前,微软仍然非常谨慎地发布内部文档 - 更不用说源代码了。
    在那里有一些引用,例如"如果你正在解决一些问题并找到一些关键点,那么你需要停下来,真正深入了解这一部分并真正理解它是如何工作的"。我发现这是一个非常好的建议 - 特别是在你经常拥有图书馆资源的时候,可以去看看。
    它也激励我深入了解系统如何工作的内部,这在我的职业生涯中已被证明是非常宝贵的。

    哦,我也会投入有效的.net - 来自Don Box的.Net的内部解释。


    尽管我多年来一直在专业编写,但Rocky Lhotka关于他的CSLA框架的"Business Objects"系列却让我眼前一亮。



    他的想法让我对软件开发模式和理论再次感到兴奋。它让我对学习如何成为更好的开发人员感兴趣,而不仅仅是了解最新的gee-whiz控件或库。 (别误会我的意思,我仍然喜欢一本好的技术书 - 你要跟上!)


    Stan Lippman在C ++对象模型中。它让C ++终于为我"点击"了,然后才变得"神奇"。在接近新的编程语言时,本书给了我不同的思路。


    我发现算法设计手册是一个非常有益的读物。我也强烈推荐Programming Pearls。


    • 专业JSP第2版

    当我是一个完整的新手并且在仅仅知道Java在短时间内存在于一个可靠的团队成员之后让我离开


    推荐用于Windows程序员,Windows编程


    程序员的练习曲,来自Charles Wetherell,More Programming Pearls(Jon Bently),


    Brian W. Kernighan和P. J. Plauger的大量软件工具对我影响最大。


    如果你在Unix / Linux / MacOS等中做任何事情,你必须阅读已故的W Richard Stevens在Unix环境中的高级编程(也称为首字母缩略词APUE)。如果您不知道文件描述符的工作原理或会话是什么,或者当您自己进行守护时应该做的所有事情(承认它,你没有),那么本书将告诉你。

    稍后您会感到有点不适,但如果您想在Unix环境中认为自己是一名专业程序员(使用任何语言),您需要阅读本文。


    Donald Knuth的Literate Programming,这是一本关于代码结构的好书。


    近年来,它一直是'Nicolai M. Josuttis'的'C ++标准库'。这是我的圣经。

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


    Scelbi-Byte Primer

    我多次仔细阅读本书中的源代码清单,直到有一天,我突然开始编写8080汇编语言编程。


    布鲁斯·埃克尔的"用C ++思考"


    Windows中的图形编程很难出错。


    Fortran IV与Watfor和Watfiv由Cress,Dirkson和Graham。

    这本书教会了我第一种编程语言,当时我在打卡机上编程。 3年后,这本书全都破烂,因为我已经使用了这么多。

    替代文字http://g-ecx.images-amazon.com/images/G/01/ciu/4b/83/245d9833e7a03768eaf63110._AA240_.L.jpg

    Fortran是一门很棒的语言!它有一个超级优化器并生成非常快的代码。它在英国仍然很受欢迎,FTN95现在是一个功能齐全且功能强大的编译器。我有时希望我可以继续使用它,但德尔福是一个绰绰有余的替代品。


    如果你用C编写代码,那么Expert C Programming就是一个大开眼界。它解决了你想知道为什么它以这种方式工作的所有事情。 Peter Van Der Linden具有出色的写作风格,使得奥术概念具有很强的可读性。必须阅读所有C开发人员


    好的,所以问题不是"什么是最好的编程书",而是"如果你能告诉自己在职业生涯的开头读什么"......

    可能是"On Lisp"和SICP??之一,还有Udi Manber的CLRS或"Algorithms:a creative approach"之一。

    Udi Manber的算法简介http://vig-fp.prenhall.com/bigcovers/0201120372.jpg

    前两个将教授许多编程技巧,模式,并真正打开他/她自己的创造力;另外两个是不同的。它们更具理论性,但也非常重要,专注于设计正确有效的算法(并且需要更多的数学运算)。

    我看到很多人在推出"优秀编程书"的主题时推荐了三本第一本书,但最后一本(由Manber撰写)是一本很好的书,很少有人知道。这是一个耻辱! Manber通过使用归纳的定理证明来关注算法的增量开发。

    • -1选择一张,留在图片中,让人们投票
    • @sergio:同意Manber的书。请做Ruben所说的,我会赞成。如果您决定这样做,请告诉我。


    福特的生产程序员

    我还没有完全通过这个,但我已经对我已经采取的一些提示/技巧感到激动,以便变得更加......嗯......富有成效。

    当然,我们都知道很多东西(使用键盘快捷键,DRY等)。但是有很多新的东西可以用来。细心的读者会很快开始看到如何将事物结合起来以获得更大的效果。


    面向对象的分析与设计 - 由Grady Booch撰写


    爱德华图夫特的任何东西:量化信息的视觉显示;展望信息;视觉解释


    除了其他人的建议,我建议您购买SICP的副本,或在线阅读。这是我读过的为数不多的几本书之一,我觉得我在设计软件方面的技能大大提高,特别是在创建好的抽象层时。

    一本与编程没有直接关系的书,但也是程序员(IMO)的一本好读物,是混凝土数学。大多数(如果不是全部)主题对于程序员来说都是有用的,并且它比我迄今读过的任何其他数学书籍更能解释事物。


    Alistair Cockburn的敏捷软件开发


    关于这个主题,我有几篇(相当古老的)博客文章

    • http://www.spindriftpages.net/blog/dave/2005/11/17/c-books/
    • http://www.spindriftpages.net/blog/dave/2005/06/06/good-oo-books/
    • http://www.spindriftpages.net/blog/dave/2005/05/11/really-great-it-books/
    • 虽然一本好书我找到了Code
      完全是一个沉闷的阅读(a
      有争议的观点我承认)。
    • 我喜欢
      杰弗里里希特和书籍乔尔
      斯波尔克西写过
    • Eric Meyer CSS书籍也很棒

    代码工艺


    重构

    企业应用架构模式


    适用于智能手机的SQL


    可能是"C for Dummies"第1卷,早在1997年左右。真的只是一个介绍,但在Atari ST上获得GFA Basic编程的味道后,这是一个很好的阅读。同时,Coronado C教程也有所帮助。


    SAP ABAP编程?
    "在21天内自学ABAP"是最好的书!

    它没有巧妙的技巧或魔法,但3年后,我从来没有找到更全面的书


    Bjarne Stroustrup撰写的"C ++编程语言"


    实际上,两本书脱颖而出。第一个是Code Complete。尽管它已经很久了,但它仍然是一本非常有用的书,关于过早优化的危险的章节本身就值得本书付出代价。

    第二个是日常生活心理学(现在称为日常事物的设计),这改变了我在设计应用程序时对用户界面的看法。这让我更注重用户。


    "编写固体代码:微软开发无错误C程序的技术(微软编程系列)"作者:Steve MacGuire。

    有趣的是,这里提到的书籍很大一部分是C / C ++书籍。


    对我来说,"内存作为C和C ++中的编程概念"真正让我看到了内存管理真正起作用的方式。如果您是C或C ++开发人员,我认为这是必读的。你会挑衅地学习一些东西,或者记住你在路上可能忘记的事情。


    我最喜欢的是马修泰勒斯的C#Back Book。


    如何通过计算机解决它http://g-ecx.images-amazon.com/images/G/01/ciu/31/89/d4ac024128a044c186a18010._AA207_.L.jpg - R.G.Dromey


    Sedgewick的"C语言中的算法"(第1版)教会了我所有关于算法的知识,并教会了我所有关于文档和复制/粘贴代码的缺陷,因为这个版本中的所有示例代码都取自"Pascal中的算法"版本并简单地通过一个简单的代码转换器,它没有针对不同的索引方案进行调整。


    迈克尔阿布拉什汇编语言的禅宗


    应用UML和设计模式。

    它帮助设计模式与我点击,并提供了一个UML的理由,这对于我在措辞'UML as Sketch'中有意义。也就是说,UML应该被用作系统的简要草图,它具有额外的好处,你不必向其他人解释符号(他们已经知道UML或者你给他们一本UML书来阅读)


    Robert Sedgewick的算法书。应用程序开发人员必读的内容。

    有很多种类(C,C ++,Java)

    http://www.cs.princeton.edu/~rs/


    Turbo C ++中面向对象的编程。不是很受欢迎,但它是让我开始的那本书,也是第一本真正帮助我理解对象的书。高中读回这篇文章。这有点让我眼前一亮......


    从C#3.0开始:面向对象编程简介

    这本书适合那些想要了解使用C#3.0的OOP的原因和方法的人。你不想错过它。


    从Visual C ++开始

    当我第一次开始使用OOP语言进行编程时,我发现本书不仅是一本关于C ++和MFC的综合性书籍,而且它也是我见过的面向对象概念的最佳解释之一。

    当我与刚刚开始使用面向对象语言编程的开发人员交谈时,我告诉他们阅读本书。


    Schaum用John C Hubbard编写的C ++编程概述。

    当我开始使用C ++时,这是我读过的第一本编程书。有人看到我对编程的兴趣,这给了我天赋。这本书非常适合初学者 - 它从基本概念开始,到模板和向量。给出的例子非常相关。这本书让你思考并提出更多问题,并为自己尝试一些事情。


    管理千兆字节是思考繁重信息的一个经典之作。


    Ian Craig对面向对象编程语言的解读

    因为它向我展示了OO比标准C ++ / Java习语有多少


    思考Java(模式),Bruce Eckel


    专业的Excel开发
    本书展示了如何在最普遍的编程平台之一中制作高质量的应用程序。


    PHP对象,模式和实践。
    http://www.apress.com/book/view/9781590599099


    Robert L Read撰写的"如何成为程序员:简短,全面和个人的总结"

    不完全是一本书而是一篇文章,但是当我进入编码时,这个对我来说绝对是一个灵感。喜欢进入部落的想法。值得一读。


    在代码中做梦可能在过去的6个月中产生了最深远的影响。


    Deitel和Deitel编写的C ++系列编程书籍


    不是编程书,但仍然是每个程序员应该阅读的非常重要的书:

    由Gordon MacKenzie围绕巨型毛球运行


    有经验的程序员的C#

    或任何来自Dietel& Dietel。我已经阅读了他们的几本书,而且一切都很棒。


    多年前,Bruce Eckel的C ++思考教会了我很多关于C ++的知识,同时也解释了将问题分离到一个小的"沙盒"进行学习/分析的重要性。这项技术对我的职业生涯产生了很大的影响,并且经常帮助我解决自己和他人的问题。

    这些天,我指的是Thinking in Java,它以相同的风格编写。不知何故,风格不仅仅是简单的"例子",而且深刻地解决了问题的核心。

    我很感激,因为看不见的东西,我几乎可以买到任何东西。


    当我第一次开始时,汤姆·斯旺有"掌握Turbo Pascal"。这本书没有什么特别深刻的东西。它清晰简洁,有可用的例子。基于这些知识,我在15年多的时间里催生了一个软件开发职业生涯。


    C ++ BlackBook。 KISS一路走来


    掌握Tom Swan的C ++。这是最好的一本书,它有一些例子,它们足够简单,可以教授概念,但足以解决其他问题。它非常易读,这是我上大学时读到的第一本书,它只需要阅读一次。


    Tenenbaum的第一本操作系统书。我第一次看看核心级编程。


    它是一个集合,令人惊叹。 Edsger Dijkstra(在C.A.R. Hoare的帮助下)小黑皮书"结构化编程",特别是题为"我们无能为力"的文章。