代码之家  ›  专栏  ›  技术社区  ›  hughdbrown

每个程序员应该读的最有影响力的书是什么?[关闭]

  •  1439
  • hughdbrown  · 技术社区  · 6 年前

    我希望这份清单会多种多样,涵盖范围很广。

    inquestion:this . 例如:

    inquestion:this "Code Complete"
    
    214 回复  |  直到 13 年前
        1
  •  1746
  •   Ran Biron    13 年前
    • 代码完成 (第二版)史蒂夫·麦康奈尔
    • 程序员修炼之道
    • 计算机程序的结构与解释
    • 克尼根和里奇
    • 算法简介 作者:Cormen、Leiserson、Rivest&Stein
    • 重构:改进现有代码的设计
    • 计算机程序设计的艺术 作者:Donald Knuth
    • 编译器:原理、技术和工具 作者:Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman
    • 作者:道格拉斯·霍夫施塔特
    • 罗伯特·C·马丁
    • 有效C++
    • 更有效的C++
    • 代码 作者:查尔斯·佩佐尔德
    • 编程珠玑
    • 修改代码的艺术 作者:迈克尔C.费瑟
    • 编码员在工作 作者:Peter Seibel
    • 你在开玩笑吧,费曼先生!
    • 第2版
    • 企业应用体系结构模式 作者:Martin Fowler
    • 小阴谋家
    • 老练的阴谋家
    • 为什么是(辛酸的)Ruby指南
    • 囚犯们在管理庇护所:为什么高科技产品让我们发疯,如何恢复理智
    • Unix编程的艺术
    • 测试驱动开发:举例说明
    • 敏捷开发修炼之道
    • 别让我想
    • 敏捷软件开发、原则、模式和实践 罗伯特·C·马丁
    • 日常用品的设计 作者:Donald Norman
    • 现代C++设计 作者:Andrei Alexandrescu
    • 最佳软件写作I 作者:乔尔斯波尔斯基
    • 克尼根和派克
    • 务实的思考和学习:重构你的软件 作者:安迪·亨特
    • 软件评估:揭开黑色艺术的神秘面纱 史蒂夫·麦康奈尔
    • 热情的程序员(我的工作去了印度) 作者:Chad Fowler
    • 黑客:计算机革命的英雄
    • 算法+数据结构=程序
    • JavaScript-好的部分
    • 变得真实
    • 计算机图形学:C语言原理与实践 (第二版)
    • Java编程思想 作者:Bruce Eckel
    • 计算系统的要素
    • 重构到模式
    • 现代操作系统 作者:Andrew S.Tanenbaum
    • 图灵的秘密
    • 作者:Donald Norman
    • 永恒的建筑方式
    • 作者:Tom DeMarco
    • C++程序设计语言(第三版) 通过Stroustrup
    • 企业应用体系结构模式
    • C语言中的敏捷原则、模式和实践# 罗伯特·C·马丁
    • 通过测试
    • 框架设计指南
    • 客体思维
    • UNIX情况高级编程
    • 新机器的灵魂 特蕾西·基德
    • CLR通过C# 作者:Jeffrey Richter
    • 克里斯托弗·亚历山大
    • C语言中的设计模式# 作者:Steve Metsker
    • 爱丽丝梦游仙境
    • 作者:Robert M.Pirsig
    • 关于面子——互动设计的要义
    • 每个人都来了:没有组织的组织力量
    • 编程之道
    • 编写实心代码 史蒂夫·马奎尔
    • Philip和Alex的网络出版指南
    • 面向对象分析与设计及其应用 作者:Grady Booch
    • 可计算性 作者:N.J.卡特兰
    • 编程大师
    • 高效的程序员
    • 欺骗的艺术
    • 职业程序员:不完美世界的游击战术 克里斯托弗·邓肯
    • 人工智能编程范例:CommonLisp中的案例研究
    • 用NUnit进行C#中的语用单元测试
    • 乔治·波利亚
    • 炼金术士 保罗科埃略
    • Smalltalk-80语言及其实现
    • 编写安全代码 (第二版)迈克尔·霍华德
    • 函数式编程导论 作者:菲利普·瓦德勒和理查德·伯德
    • 没有虫子!
    • 返工
    • JUnit正在运行
        2
  •  9
  •   Andrei Rinea    16 年前

    K&R

    @胡安:我知道胡安,我知道-但是有些事情只有真正开始手头的工作才能学到。整天讲抽象的理想只会让你成为一个学者。正是在抽象的应用中,我们才真正探索出它们存在的原因。:页

    @基思:艾伦·库珀提到的“囚犯们在管理避难所”非常棒——这肯定让人大开眼界,自从我读了那本书以来,任何和我合作过的开发者都听到我提到过它支持的想法。+1

        4
  •  9
  •   Skrud    16 年前

    Systemantics: How Systems Work and Especially How They Fail . 用便宜的。但是,你可能不会得到幽默,直到你在几个失败的项目工作。

    这本书的妙处在于版权年。

    可能是书中最深刻的“定律”:

    基本失效模式定理(F.F.T.):复杂系统通常在失效模式下运行。

    其思想是,在任何给定的软件中,有一些失败的部分被其他部分的失败或其他部分的验证所掩盖。请参见 Therac-25 radiation machine

        5
  •  9
  •   tr9sh    15 年前

    我个人最喜欢的是 Hacker's Delight

    我希望第二版能很快发行!

        8
  •  9
  •   Dave Clarke    14 年前

    Types and Programming Languages 由本杰明C皮尔斯为彻底理解编程语言的基础。

        10
  •  9
  •   Ryan Berger    14 年前

    Database System Concepts 是最好的书籍之一,你可以阅读了解良好的数据库设计原则。

    alt text

        11
  •  9
  •   RD1    14 年前

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

        12
  •  9
  •   bretik    13 年前

    Programming from the ground up. 在网上是免费的。这本书教会了我AT&T asm。它很容易阅读。

    alt text

        13
  •  9
  •   Douglas Tosi    13 年前

    Paradigms of Artificial Intelligence Programming :Peter Norvig的Common Lisp案例研究

    enter image description here

    我开始读它是因为我想学习CommonLisp。当我走到一半的时候,我意识到这是迄今为止我读过的关于编程的最伟大的一本书。

        14
  •  9
  •   Jonathan Hartley    13 年前

    明确的软件工艺

    alt text http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

    这本书解释了很多关于软件工程,系统开发的东西。理解不同类型的产品开发之间的区别也非常有用:web与shrinkwrap与IBM框架。人们在构思瀑布模型时有什么想法?读了这篇文章,我们就会明白了(希望如此)

        15
  •  8
  •   nlucaroni    16 年前

    @彼得·库尔顿——你不读克努斯,你学习它。

    对我和我的工作。。。 纯函数数据结构 是伟大的思考和发展与功能性语言的头脑。

        16
  •  8
  •   Larry OBrien    16 年前

    托马斯·弗里德曼的《世界是平的》。

    优秀的编程需要投入精神能量,并致力于与医学或法律专业相媲美的持续学习。它只支付了这些专业人员工资的一小部分,更不用说支付给那些进入金融业的精通数学的人的工资了。工资 因为这是一个 在大多数经济体中,聪明和自律的人很容易进入。

    如果你生活在北美或欧洲,年轻,聪明,编程不是一个理性的职业选择。那些 涉及

    如果你 出于这个原因,如果你打算把它作为你的职业,那么你就应该对那些正在并将继续使之成为一种越来越难以谋生的职业的力量有一个冷眼旁观的认识。”“世界是平的”不会教你如何命名你的变量,但它会让你沉浸在经济现实中6到8个小时 已经 到了。如果你能读懂,而且不害怕, 出去买“代码完整”

        17
  •  8
  •   TahoeWolverine    8 年前

    alt text

    去年我上了很多课。我读过

    The Innovator's Dilemma (disruptive tech)
    The Mythical Man Month (managing software)
    Crossing the Chasm (startup)
    Database Management Systems, The COW Book
    Programming C#, The OSTRICH Book
    Beginning iPhone Developmen, The GRAPEFRUIT Book

    每一本书都很精彩,但是克莱顿·克里斯滕森的《创新者的困境》(1997!!!)是一本非常棒的书,它让我真正思考了现代软件世界。所面临的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的、改变游戏规则的技术所颠覆。这给了一个新的视角,当考虑谷歌,可能是最大的“网络”公司。为什么他们什么事都管?因为他们不想有自己的位置 中断 通过一些新的东西。谷歌的预览版足以让你明白这一点。读吧!

        18
  •  8
  •   tsilb    15 年前

    黑客,史蒂文·利维。

        20
  •  8
  •   Matthew J Morrison    14 年前

    Python语言对我很有影响,我希望几年前就读过这本书。Python语言的美丽和简单确实影响了我用其他语言编写代码的方式。

    alt text alt text

        21
  •  8
  •   Joe Hildebrand    13 年前

    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!=编程,但这对每个程序员仍然有用。

        24
  •  7
  •   lurks    16 年前

    我认为《Unix编程的艺术》是一本优秀的书,作者是一位优秀的黑客/聪明的头脑,比如Eric S.Raymond,他试图让我们理解软件设计的一些原则(主要是简单性)。这本书是每一个编程谁是在Unix平台下开始一个项目必须的。

        25
  •  7
  •   joel.neely    16 年前

    虽然我同意上面的许多书都是必读的(实用程序员、神话人月、计算机编程艺术和SICP马上浮现在我的脑海中),但我想从一个稍微不同的方向来推荐 A Discipline of Programming 作者:Edsger Dijkstra。尽管它已经有32年的历史了,但是强调“可验证性设计”是非常相关的(即使“可验证性”意味着“证明”而不是“单元测试”)。

        27
  •  7
  •   icelava    16 年前

    Refactoring: Improving the Design of Existing Code 已列出。但我会详细说明为什么它影响了我。

    整本书的精髓是关于构造代码,以便读者更容易阅读和理解 人类 . 它强烈地告诉我,我写的代码是为我的同事和继任者消费,并可能学到一些东西 从中解脱出来。它激励我有意识地 program in a manner that leaves people praising my name, and not cursing me to damnation for all eternity .

        29
  •  7
  •   Charlie Flowers    16 年前

    这里有一本优秀的书,虽然没有受到广泛的赞誉,但却充满了深刻的见解: Agile Software Development: The Cooperative Game ,作者:Alistair Cockburn。

    1. 团队软件开发最困难的事情是让每个人的大脑都有相同的理解。我们正在建立巨大的、复杂的、在有形世界中看不见的系统。你越善于让更多人的大脑分享更深的理解,你的团队在软件开发方面就越有效。
    2. 你并不总是需要语言来快速传达深刻的理解。一个推论是:单词太多,你就超出了听者/读者的能力,这意味着你所尝试的理解转移不会发生。想想看,孩子们是通过“沉浸”和“吸收”来学习如何说语言的。不仅仅是语言。。。他举了一些孩子在地板上玩火车的例子。另一个从来没有 看到 之前的火车。。。但通过观察其他的孩子,他学会了游戏的要点,并很好地配合。这种情况在人类之间经常发生。这一点以及关于太多单词的推论有助于您了解在过去的“瀑布”时代,试图编写700页的详细需求规范是多么的错误。

        30
  •  7
  •   DMC    15 年前

    Masters of doom. 至于你的动机和对职业的热爱:它不会比这本书中所描述的更好,真实的鼓舞人心的故事!