resources -每一个程序员应该读的最有影响力的书是什么?

Translate

如果您可以时光倒流,并告诉自己在成为开发人员的职业生涯初期要读一本书,那会是哪本书?

我希望这个列表会有所变化并且涵盖范围广泛。

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

inquestion:this "Code Complete"
This question and all comments follow the "Attribution Required."

所有的回答

Translate
  • 代码完成(第2版),史蒂夫·麦康奈尔
  • 实用程序员
  • 计算机程序的结构和解释
  • C程序设计语言通过Kernighan和Ritchie
  • 算法导论作者:Cormen,Leiserson,Rivest和Stein
  • 设计模式由四人帮
  • 重构:改进现有代码的设计
  • 神话人物月
  • 计算机编程艺术由Donald Knuth
  • 编译器:原理,技术和工具Alfred V.Aho,Ravi Sethi和Jeffrey D.Ullman
  • 哥德尔,埃舍尔,巴赫道格拉斯·霍夫斯塔特(Douglas Hofstadter)
  • 干净的代码:敏捷软件工艺手册罗伯特·马丁
  • 有效的C ++
  • 更有效的C ++
  • 通过查尔斯·佩佐尔德
  • 编程珍珠乔恩·本特利(Jon Bentley)
  • 与旧版代码有效合作由Michael C. Feathers
  • 人民网通过Demarco和Lister
  • 工作中的编码员彼得·塞贝尔(Peter Seibel)
  • 一定是在开玩笑,费曼先生!
  • 有效的Java第二版
  • 企业应用程序架构的模式马丁·福勒(Martin Fowler)
  • 小计划者
  • 经验丰富的计划者
  • 为什么是(Poignant)Ruby指南
  • 囚犯正在避难:高科技产品为何驱使我们疯狂以及如何恢复理智
  • Unix编程的艺术
  • 测试驱动的开发:通过示例肯特·贝克(Kent Beck)
  • 敏捷开发人员的实践
  • 不要让我想
  • 敏捷软件开发,原理,模式和实践罗伯特·马丁
  • 域驱动设计埃里克·埃文斯(Eric Evans)
  • 日常用品的设计由唐纳德·诺曼(Donald Norman)
  • 现代C ++设计通过Andrei Alexandrescu
  • 最佳软件写作一乔尔·斯波斯基(Joel Spolsky)
  • 编程实践通过Kernighan和Pike
  • 务实的思维和学习:重构您的湿软件通过安迪·亨特(Andy Hunt)
  • 软件估算:揭开妖术的神秘面纱史蒂夫·麦康奈尔(Steve McConnel)
  • 热情的程序员(我的工作去了印度)乍得·福勒(Chad Fowler)
  • 黑客:计算机革命的英雄
  • 算法+数据结构=程序
  • 编写扎实的代码
  • JavaScript-好零件
  • 变得真实通过37信号
  • 编程基础通过卡尔·塞金(Karl Seguin)
  • 计算机图形学:C原理与实践(第二版)
  • 用Java思考布鲁斯·埃克尔(Bruce Eckel)
  • 计算系统的要素
  • 重构为模式约书亚·克里夫斯基(Joshua Kerievsky)
  • 现代操作系统由Andrew S.Tanenbaum
  • 带注释的图灵
  • 使我们变得聪明的事情由唐纳德·诺曼(Donald Norman)
  • 永恒的建筑方式克里斯托弗·亚历山大(Christopher Alexander)
  • 截止日期:关于项目管理的小说由汤姆·德马科(Tom DeMarco)
  • C ++编程语言(第3版)通过Stroustrup
  • 企业应用架构的模式
  • 计算机系统-程序员的观点
  • C#中的敏捷原则,模式和实践罗伯特·马丁
  • 不断发展的面向对象软件,有指导通过测试
  • 框架设计准则通过布拉德·艾布拉姆斯
  • 对象思维大卫·韦斯特博士
  • UNIX环境中的高级编程由W. Richard Stevens
  • 黑客与画家:计算机时代的大创意
  • 新机器的灵魂特雷西·基德(Tracy Kidder)
  • 通过C#进行CLR杰弗里·里希特(Jeffrey Richter)
  • 永恒的建筑方式克里斯托弗·亚历山大(Christopher Alexander)
  • C#中的设计模式史蒂夫·梅茨克(Steve Metsker)
  • 爱丽丝漫游仙境由刘易斯卡罗尔
  • 禅与摩托车维修艺术罗伯特·皮尔西格(Robert M.Pirsig)
  • 关于面孔-交互设计的要点
  • 每个人都来了:没有组织的组织的力量通过粘土Shirky
  • 编程之道
  • 自然的计算之美
  • 编写扎实的代码史蒂夫·马奎尔(Steve Maguire)
  • 菲利普和亚历克斯的网络出版指南
  • 面向对象的分析与应用设计通过格雷迪布奇
  • 有效的Java约书亚·布洛赫(Joshua Bloch)
  • 可计算性通过NJ Cutland
  • 编程大师
  • 道德经
  • 生产程序员
  • 欺骗的艺术凯文·米特尼克(Kevin Mitnick)
  • 职业程序员:完美世界的游击战术克里斯托弗·邓肯(Christopher Duncan)
  • 人工智能编程范例:Common Lisp中的案例研究
  • 末日大师
  • 使用NUnit在C#中进行实用单元测试由安迪·亨特(Andy Hunt)和戴夫·托马斯(Dave Thomas)与马特·哈格特(Matt Hargett)
  • 如何解决通过乔治波利亚
  • 炼金术士由Paulo Coelho
  • Smalltalk-80:语言及其实现
  • 编写安全代码(第二版),作者:Michael Howard
  • 函数式编程简介菲利普·沃德勒和理查德·伯德
  • 没有错误!大卫·蒂伦(David Thielen)
  • 重工由Jason Freid和DHH
  • 行动中的JUnit
来源
Translate

K&R

@胡安:我知道胡安,我知道-但是有些事情只有实际完成手头的工作才能学到。整日用抽象的理想说话只会使你成为一名学者。在摘要的应用中,我们真正了解了它们存在的原因。 :P

@基思:艾伦·库珀(Alan Cooper)提到“囚犯正在逃避庇护所”时,提到得很多,这肯定使人大开眼界,自从我读过这本书以来与我合作的任何开发人员都听过我提到了它所拥护的想法。 +1

来源
Dale Lee
Translate

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

面向计算机科学家的离散数学由JK Truss提供。

尽管这不会教您编程,但它会教您每个程序员都应该知道的基本数学。您可能还记得大学里的这些东西,但实际上,执行谓词逻辑将提高您的编程技能,如果您想使用集合进行编程,则需要学习Set Theory。

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

来源
Translate

Systemantics:系统如何工作,尤其是它们如何失败。便宜地得到它。但是,除非您从事了一些失败的项目,否则您可能不会幽默。

这本书的美在于版权年。

这本书中可能是最深刻的外卖“法律”:

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

这样的想法是,在任何给定的软件中都存在故障部件,这些故障部件被其他部件的故障或其他部件的验证所掩盖。请参阅以下网址的真实示例Therac-25辐射机,其软件缺陷已被硬件故障保护所掩盖。移除硬件故障保护装置后,这些年来一直未被发现的软件争用状况导致机器杀死3人。

来源
Merle Lee
Translate

我个人的最爱之一是黑客的喜悦,因为阅读既有趣又很有教育意义。

希望第二版很快发布!

来源
Xanthe Lee
Translate

极限编程说明:拥抱变化肯特·贝克。虽然我不主张采用XP或高速公路的硬性方法进行软件开发,但我希望我在职业生涯的早期就已将本书的原理介绍给我。单元测试,重构,简单性,持续集成,成本/时间/质量/范围-这些改变了我看待开发的方式。在敏捷开发之前,一切都与调试器和对变更请求的担心有关。敏捷之后,那些恶魔并没有那么大。

来源
Ann Lee
Translate

类型和编程语言本杰明·C·皮尔斯(Benjamin C Pierce)撰写的《透彻理解编程语言基础》

来源
Hedy Lee
Translate

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

alt text

来源
RD1
Translate

编程实践。布莱恩·W·克尼根(Brian W.

此处显示的样式非常好-代码本身就说明了问题,整本书都遵循KISS原则。我个人不是我选择的语言,但仍然对我有影响。

来源
Translate

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

alt text

来源
Translate

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

enter image description here

我开始阅读它是因为我想学习Common Lisp。中途学习时,我意识到这是迄今为止我读过的最伟大的编程书籍。

来源
Translate

绝对的软件工艺

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

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

来源
Joan Lee
Translate

@彼得·库尔顿(Peter Coulton)-您不会读Knuth,而是学习它。

为了我和我的工作...纯功能数据结构在考虑和开发功能语言时非常有用。

来源
Omar Lee
Translate

托马斯·弗里德曼(Thomas Friedman)的《世界是平坦的》。

卓越的程序设计需要投入精力和与医学或法律专业相当的持续学习。它所支付的费用仅为这些专业的一小部分,远远少于支付给精通数学的精通金融行业的人员的工资。和工资构造代码正在侵蚀,因为这是一个专业相对大多数经济体中的聪明人和自律者容易进入。

编程已经侵蚀到支付的费用低于(例如)管道的费用。管道不能“离岸”。您无需每隔两年就参加专业水暖工会议,只需支付2395美元,即可享受获得一套全新的管道技术的特权,这将使您花费一年的时间来学习。

如果您生活在北美或欧洲,年轻且聪明,那么编程并不是一个合理的职业选择。从事的业务涉及编程,绝对。学习业务,对编程进行足够的了解以完善您的BS检测器:精采。但是,将您最大的精力投入到对库,数据结构和算法的掌握上吗?只有编程对您而言比经济上的选择更有意义,这才有意义。

如果你编程并因此而打算成为您的职业,然后您应该对这些力量产生冷淡的理解,而这些力量将并且将继续使之成为越来越难的谋生职业。 “世界是平坦的”不会教您如何命名变量,但是它将使您沉迷于6到8个小时的经济现实中已经到了。如果您可以阅读但又不害怕,然后出去买“代码完成”。

来源
Translate

alt text

去年,我参加了许多课程。我读

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

每本书都很了不起,但克莱顿·克里斯滕森(Clayton Christensen)的《创新者的困境》(Innovator's Dilemma)(1997年!解决的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的,改变游戏规则的技术所破坏。在考虑可能是最大的“网络”公司的Google时,它提供了一种新的视角。他们为什么要全力以赴?因为他们不想担任自己的职务打乱了通过新的东西。谷歌上的预览有很多想法。阅读!

来源
Jared Lee
Translate

黑客,史蒂文·利维(Steven Levy)。

个性和生活方式必须首先。其他一切都可以学到。

来源
Julie Lee
Translate

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

alt text alt text

来源
Translate

新图灵综合巴士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!=编程,但这对于每个程序员仍然有用。

来源
Benedict Lee
Translate

弗雷德·布鲁克斯(Fred Brooks)的《神秘人月》http://en.wikipedia.org/wiki/The_Mythical_Man-Month

来源
Michelle Lee
Translate

我认为《 Unix编程的艺术》是一本非常出色的书,它是由埃里克·雷蒙德(Eric S. Raymond)精湛的黑客/精明的头脑所著,他试图使我们理解软件设计的一些原理(主要是简单性)。对于打算在Unix平台下启动项目的每个编程人员来说,这本书都是必不可少的。

来源
Dolores Lee
Translate

尽管我同意上面的许多书都是必读的书(实用程序员,神话般的月刊,计算机编程艺术和SICP马上浮现在脑海),但我想朝一个略有不同的方向去推荐编程学科由Edsger Dijkstra撰写。即使已经32岁了,但对“可验证性设计”的强调还是高度相关的(即使“可验证性”表示“证明”而不是“单元测试”)。

来源
Ed Lee
Translate

马丁·福勒(Martin Fowler)重构:改进现有代码的设计已被列出。但我将详细说明它为什么影响了我。

整本书的实质是关于结构化代码,以便读者更容易阅读和理解。人类。它强烈地告诉我,我编写的代码是供我的同事和继任者使用并可能学习的东西出来。它激发我有意识地程序让人们称赞我的名字,而不是永远诅咒我.

来源
Edwina Lee
Translate

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

C ++如何编程这对初学者来说很好。这是一本非常出色的书,全书共1500页。

来源
Owen Lee
Translate

这是一本很棒的书,虽然没有得到广泛的赞扬,但却充满了深刻的见解:敏捷软件开发:合作游戏,由Alistair Cockburn撰写。

有什么特别之处?好吧,显然每个人都听说过“敏捷”一词,这些天似乎大多数是信徒。但是,不管您是否相信,敏捷运动为何存在背后都有一些深层的原则。本书以精确,科学的方式揭示并阐明了这些原理。一些原则是(顺便说一句,这些是我的话,不是阿利斯泰尔的话):

  1. 团队软件开发最困难的事情是让每个人的大脑都有相同的理解。我们正在建立庞大,复杂,复杂的系统,这些系统在有形世界中是看不见的。您越能吸引更多人的大脑来分享更深入的了解,您的团队就越能有效地进行软件开发。这是配对编程有意义的根本原因。大多数人都忽略了它(我一开始也做过),但是考虑到这一原则,我强烈建议您再试一次。您结识了两个非常了解您刚刚构建的子系统的人...没有太多其他方法可以这么快地进行如此深入的信息传输。就像一个瓦肯人的心灵融合体。
  2. 您不必总是需要用语来快速传达深刻的理解。结果是:太多的单词,而您超出了听者/阅读者的能力,这意味着您尝试的理解转移不会发生。考虑到孩子通过“沉浸”和“吸收”来学习如何说语言。不仅是语言……他还举了一些孩子在地板上玩火车的例子。随之而来的另一个孩子甚至从未见过之前是一趟火车……但是通过观看其他孩子,他拾起了游戏的要旨,并一直玩着。这种情况一直在人类之间发生。这与太多单词的推论一起可以帮助您了解在过去的“瀑布”时代尝试编写700页详细的需求规格说明是多么被误导了。

那里还有更多。我现在闭嘴,但我强烈推荐这本书!

来源
Translate

厄运大师。就您对职业的热爱和热爱:它不会比本书中所描述的要好,这确实是令人鼓舞的故事!

来源