如果你可以回到过去,告诉自己在你作为开发人员的职业生涯开始时阅读一本特定的书,那会是哪本书?
我希望这份清单是多种多样的,涵盖的范围很广。
搜索:使用右上角的搜索框。要搜索当前问题的答案,请使用inquestion:this
。例如:
inquestion:this "Code Complete"
如果你可以回到过去,告诉自己在你作为开发人员的职业生涯开始时阅读一本特定的书,那会是哪本书?
我希望这份清单是多种多样的,涵盖的范围很广。
搜索:使用右上角的搜索框。要搜索当前问题的答案,请使用inquestion:this
。例如:
inquestion:this "Code Complete"
极限编程解释:拥抱变化由肯特贝克。虽然我不提倡在软件开发方面采用硬核 XP 或高速公路,但我希望我在职业生涯的早期就已经了解了本书中的原则。单元测试、重构、简单性、持续集成、成本/时间/质量/范围——这些改变了我看待开发的方式。在敏捷之前,一切都是关于调试器和对变更请求的恐惧。敏捷之后,那些恶魔就没有那么大了。
@Juan:我知道 Juan,我知道 - 但有些东西只能通过真正投入手头的任务来学习。整天讲抽象的理想只会让你成为一名学者。正是在摘要的应用中,我们才真正了解了它们存在的原因。:P
@Keith:Alan Cooper 对“The Inmates are Running the Asylum”的大力提及——这确实让我大开眼界,自从我阅读那本书以来,任何与我合作过的开发人员都听到我提到了它所支持的想法。+1
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig
I started reading it because I wanted to learn Common Lisp. When I was halfway, I realized this was the greatest book about programming I had read so far.
Benjamin C Pierce 的Types and Programming Languages对编程语言的基础有透彻的理解。
JK Truss为计算机科学家提供的离散数学。
虽然这不会教你编程,但它会教你每个程序员都应该知道的基础数学。您可能还记得大学时的这些东西,但实际上,做谓词逻辑会提高您的编程技能,如果您想使用集合进行编程,则需要学习集合论。
这里确实有很多有趣的信息,可以让你以不同的方式思考问题。拥有它很方便,只是偶尔学习一些新东西。
我个人的最爱之一是Hacker's Delight,因为它既有趣又具有教育意义。
希望第二版快点出!
绝对的软件工艺
替代文字 http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg
这本书解释了很多关于软件工程、系统开发的东西。了解不同类型的产品开发之间的区别也非常有用:web VS shrinkwrap VS IBM 框架。人们在构思瀑布模型时的想法是什么?阅读本文,我们将变得清晰(希望如此)
《数据库系统概念》是您可以阅读的关于理解良好数据库设计原则的最佳书籍之一。
系统学:系统如何工作,尤其是它们如何失败。便宜用就行。但是,在您参与过一些失败的项目之前,您可能无法获得幽默感。
这本书的美妙之处在于版权年。
可能是书中提出的最深刻的外卖“法则”:
基本故障模式定理 (FFT):复杂系统通常在故障模式下运行。
这个想法是在任何给定的软件中都有失败的部分被其他部分的失败或其他部分的验证所掩盖。查看Therac-25 辐射机的真实示例,其软件缺陷被硬件故障保护所掩盖。当硬件故障保护被移除时,多年来一直未被发现的软件竞争状况导致机器杀死了 3 人。
编程实践。作者:Brian W. Kernighan,Rob Pike。
这里展示的风格非常好——代码不言自明,整本书都遵循 KISS 原则。就个人而言,不是我选择的语言,但对我仍然有影响。
从头开始编程。它在互联网上是免费的。这本书教会了我 AT&T asm。这很容易阅读。
托马斯弗里德曼的《世界是平的》。
卓越的编程需要投入脑力,并致力于与医学或法律专业相媲美的持续学习。它支付的只是这些职业的一小部分,更不用说支付给那些进入金融领域的精通数学的人的工资了。构建代码的工资正在下降,因为在大多数经济体中,对于聪明和自律的人来说,这是一个相对容易进入的职业。
编程已经被侵蚀到支付少于管道的地步。管道不能“离岸”。您无需支付 2395 美元就可以每隔一年参加一次专业管道工会议,即可获得一套全新的管道技术,这将花费您一年的时间来学习。
如果你住在北美或欧洲,又年轻又聪明,那么编程就不是一个理性的职业选择。绝对是涉及编程的业务。学习商业,对编程有足够的了解来改进你的 BS 探测器:太棒了。但是将大部分精力用于掌握库、数据结构和算法?仅当编程对您而言比经济选择更重要时,这才有意义。
如果您热爱编程并因此打算将其作为您的职业,那么您应该对正在并将继续的力量形成冷眼的理解,使其成为一个越来越难谋生的职业. “世界是平的”不会教你如何命名变量,但它会让你沉浸在已经到来的经济现实中 6 或 8 个小时。如果您可以阅读它并且不害怕,那就出去购买“代码完成”。
Python 语言对我的影响很大,我希望我早在几年前就读过这本书。Python 语言的优美和简洁确实影响了我用其他语言编写代码的方式。
@Peter Coulton - 你不读 Knuth,你研究它。
对我和我的工作来说……纯函数式数据结构非常适合用函数式语言进行思考和开发。
真是好书。对计算机科学最重要的领域有高水平的品味。是的,CS != 编程,但这对每个程序员仍然有用。
编程实践
和
电脑怎么解决
去年我上了很多课。我读
The Innovator's Dilemma (disruptive tech)
The Mythical Man Month (管理软件)
Crossing the Chasm (startup)
Database Management Systems, The COW Book
Programming C#, The OSTRICH Book Starting
iPhone Developmen, The GRAPEFRUIT Book
每本书都很棒,但 Clayton Christensen 的《创新者的困境》(1997 年!!!)确实是一本很棒的书,它让我真正思考了现代软件世界。解决的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的、改变游戏规则的技术所破坏。在考虑可能是最大的“网络”公司 Google 时,它提供了一个新的视角。为什么他们在所有事情中都掌握了主动权?这是因为他们不想让自己的位置被新事物打乱。谷歌上的预览足以让您了解这个想法。阅读!
黑客,作者 Steven Levy。
个性和生活方式必须是第一位的。其他的都可以学习。
Kernighan & Plauger 的编程风格元素。它说明了花哨的聪明和优雅的聪明之间的区别。
Fred Brooks 的神话人物月 http://en.wikipedia.org/wiki/The_Mythical_Man-Month
替代文字 http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg
C++ How to Program适合初学者。这是一本完整的好书,有 1500 页。
Martin Fowler 的重构:改进现有代码的设计已经列出。但我会详细说明为什么它会影响我。
整本书的精髓在于结构化代码,使其更易于人类阅读和理解。它强烈地告诉我,我编写的代码是为了让我的同事和继任者使用并可能从中学到一些好的东西。它激励我有意识地编程,让人们赞美我的名字,而不是诅咒我永远被诅咒。
虽然我同意上面的许多书都是必读的(实用程序员、神话人物月、计算机编程艺术和 SICP 立即浮现在脑海中),但我想朝着稍微不同的方向前进并推荐A Discipline Edsger Dijkstra的编程。尽管它已有 32 年历史,但对“可验证性设计”的强调是高度相关的(即使“可验证性”意味着“证明”而不是“单元测试”)。
我认为“Unix 编程的艺术”是一本优秀的书,作者是 Eric S. Raymond 的优秀黑客/聪明才智,他试图让我们理解软件设计的一些原则(主要是简单性)。这本书是每个即将在 Unix 平台下开始项目的编程人员的必备书。
TCP/IP 指南, Charles M. Kozierok
尽管它被描述为“百科全书参考”,但它作为叙述的可读性令人难以置信。
这位作者提供了一个非常、非常、非常出色的、全面的网络介绍以及网络基础设施。所有程序员都应该知道的事情。
对我来说,这是 Charles Petzold 的“代码”的自然后续。如果“代码”向外行解释计算机如何工作,“TCP/IP 指南”则解释它们如何连接在一起。
如果你给一个 12 岁的极客一份“代码”和一份“TCP/IP 指南”的副本——他们将在 17 岁时构建下一个谷歌。
换句话说,如果我可以回到过去并告诉自己在我作为开发人员职业生涯的开始时阅读一本特定的书,那么这本书(加上Code)就在我的列表顶部。
这是一本没有受到广泛赞誉,但充满深刻见解的优秀书籍:Agile Software Development: The Cooperative Game,Alistair Cockburn 着。
它有什么特别之处?好吧,显然每个人都听说过“敏捷”这个词,而且现在似乎大多数人都是信徒。不过,不管你是否相信,敏捷运动的存在背后有一些深刻的原则。本书以精确、科学的方式揭示并阐明了这些原则。一些原则是(顺便说一句,这些是我的话,不是 Alistair 的):
那里还有很多东西。我现在要闭嘴了,但我强烈推荐这本书!
Pete Goodliffe 的Code Craft是一本好书!
厄运大师。就你的职业的动力和热爱而言:它不会比这本书中描述的更好,真实鼓舞人心的故事!
务实的程序员:从熟手到大师毫无疑问。其中的建议非常好,而且很简单,给人的感觉就像是“常识程序员”。爱它。
我有几本对我影响很大的好书,到目前为止我还没有在这个列表中看到:
唐纳德·诺曼(Donald Norman)的日常事物心理学。为他人设计的一般原则。这似乎对 UI 非常有用,但如果你仔细想想,它几乎在任何地方都有应用程序,除了原始开发人员之外,还有其他人必须使用的界面;例如,一个 API 并以这样的方式设计接口,使其他开发人员形成正确的心理模型并从 API 本身获得适当的反馈。
Glen Myers的软件测试艺术。对测试软件的全面介绍;适合程序员阅读以帮助他们像测试人员一样思考,即思考可能出现的问题并做好准备。
顺便说一句,我意识到问题是“单本最具影响力的书”,但讨论似乎已经改为列出好书供开发人员阅读,所以我希望我可以原谅我列出两本好书而不仅仅是一本。
我已经有一段时间了,所以我发现有影响力的大多数书都不一定适用于今天。我确实相信了解您正在开发的平台(硬件和操作系统)是普遍重要的。我也认为从其他人的错误中学习很重要。所以我推荐的两本书是:
Rapid Development by McConnell
用户有没有接触过你的代码?如果你不只做后端工作,我推荐About Face: The Essentials of User Interface Design—— 现在是第三版(链接)。我曾经认为我的用户很愚蠢,因为他们没有“得到”我的界面。当然,我错了。About Face 让我转过身来。
除了它们在我的书架上的排列方式外,没有特别的顺序:
兔子先生的 ActiveX 指南
当我开始使用 Java 进行开发时(直到今天仍在这样做),我不得不推荐该领域的杰出作品:Mr Bunny's Big Cup o' Java。
来自作者的简介:
学习 Java 没有比将专家 Java 程序员的松果体植入大脑更好的方法了。可悲的是,大多数 HMO 拒绝为这种职业拯救程序付费,认为 Java 过于实验性。对于我们这些迫不及待地想要彻底改革医疗保健改革的人来说,终于有了另一种治疗方法。
Mr. Bunny's Big Cup O' Java 被十位医生中的 n 位推荐,其中 n 是您希望弥补的任何整数,以打动极易上当受骗的公众。本书从对本书的概述开始,然后迅速扩展到本书本身。只需查看涵盖的主题:
- 爪哇
简而言之,MBBCOJ 将教您在当今的兔子开发环境中获得成功职业所需的所有知识。
仅凭对像素的了解就会使我的软件开发寿命缩短数年。
Brian W.Kerninghan 和 Rob Pike 的“编程实践”。
语言通俗易懂,题材也很有趣。
这本书并不是真正适合初学者的书,但如果您正在寻找 SOA 设计书籍,那么SOA in Practice: The Art of Distributed System Design适合您。
Facts and Fallacies of Software Engineering by Robert L. Glass is a really excellent book. I had been a professional hacker for almost 10 years before I read it, and a I still learned a ton of stuff.
Steve McConnell 的 Code Complete 获得了很多票,但是他的软件项目生存指南书呢?我认为它们都是必读的,但出于不同的原因。
不是最有影响力但值得一看的是JMCoetzee的《 Youth 》。
《青春》的叙述者是 1950 年代南非的一名学生,长期以来一直在策划逃离他的祖国:逃离母亲令人窒息的爱,逃离失败困扰他的父亲,逃离他确信即将发生的事情革命。学习数学、读诗、存钱,他努力确保当他到达现实世界时,无论在哪里,他都准备好充分体验生活,并将其转化为艺术。然而,他终于到达伦敦,既没有发现诗歌,也没有发现浪漫。相反,他屈从于作为一名计算机程序员的单调生活,随机、无爱的事务无法缓解这种生活。没有灵感,他停止写作。作为一个笨拙的殖民者,一个宪法外人,他开始了一段黑暗的朝圣之旅,在其中他不断地受到考验,不断地被发现缺乏。
Brian W. Kernighan 和 PJ Plauger 的软件工具
它对我编写软件的方式产生了深远的影响。
标题封面 http://ecx.images-amazon.com/images/I/51j3BSRspAL._SL500_AA240_.jpg
完美软件:以及其他关于测试 的幻想 Gerald M. Weinberg
ISBN-10:0932633692
ISBN-13:978-0932633699
餐巾纸的背面 http://www.coverbrowser.com/image/bestsellers-2008/302-7.jpg
一本关于视觉思维技巧的好书。现在也有扩展版。我不能说那个版本,因为我不拥有它;然而。
对于那些希望利用 ORM 和 UML 的人来说,这是一本极好的读物
Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams by Steve Maguire.
No-non-sense, down-to-earth, entertaining, profound.
Mary 和 Tom Poppendieck 的精益软件开发绝对是每个开发人员书架上的一本
我最近读了 Dreaming in Code,发现它是一本有趣的读物。自从我开始阅读 Chandler 1.0 以来,也许更是如此。阅读有关试图“改变世界”的才华横溢的项目团队的成长痛苦和错误,可以让您从中学到很多东西。斯科特还提出了许多程序员的知识和智慧,这只是一个有趣的阅读。
Beautiful Code有一两件事让我产生了不同的想法,尤其是关于自顶向下运算符优先级的章节。
Code Complete 是第一选择,但我还要引用 Gang of Four 的 Design Patterns 和 Craig Larman 的 Applying UML and Patterns。
克里斯托弗·亚历山大(Christopher Alexander)的《永恒的建筑方式》是另一个伟大的方式。尽管它是关于架构的,但它包含在我已经阅读过的许多优秀编程书籍的参考书目中。
另一个,我从中学到了很多新东西的,是 Clifton Nock 的 Data Access Patterns。
Perl 编程 (O'Reilly)
Bertrand Meyer 的面向对象软件构建
一本书的影响力通常取决于读者以及他们在阅读这本书时所处的职业生涯。我必须向Head First Design Patterns大声疾呼。伟大的书和它的写作方式非常有创意,应该作为其他科技书籍作者的榜样。即它是为了促进学习和内化概念而编写的。
头部优先设计模式 http://ecx.images-amazon.com/images/I/51LSqrgoT1L._SS500_.jpg
似乎没有人提到 Stroustup 的《C++ 编程语言》,这是一本每个 C++ 程序员都应该阅读的好书。
我还认为,Extreme Programming Explained: Embrace Change应该被每个程序员和经理阅读。本书中的许多想法现在都是常识,但本书对软件工程中的质量追求给出了明智且鼓舞人心的说明。
我会支持经典的 Knuth 和 Gang of Four 的建议。
W. Richard Stevens的 UNIX 环境中的高级编程。
精通:成功和长期实现的关键,乔治·伦纳德(George Leonard)
它是关于掌握任何技能需要什么样的心态,以及为什么。它太棒了,而且也很容易阅读。
http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg
将我的编程提升到了一个全新的水平。
我读了大多数在这个问题上得分很高的书——但不是所有的书(感谢上帝!),我立即将其他书添加到我的亚马逊愿望清单中!
(有人应该在亚马逊上为这些书创建一个列表......也许一个名为:“Stackoverflow best books ever”的列表?有人知道该怎么做吗?)
对我来说,最好的书是Code Complete。这是一个启示。我买了英文版和法文版的第二版,我仍然认为它应该是任何计算机科学学校的必读。数据结构很酷,但代码完整,不是开玩笑,更重要的是......
然后,我第二好的书是编写可靠的代码——在学会了如何被理解之后,知道如何编写可靠的代码真是太好了。
然后是很多很好的书,但这里没有一本书可以提及。直到 2001 年,我认为:Framework Design Guidelines:Conventions, Idioms, and Patterns for Reusable .NET Libraries。一颗宝石!这本书我读了很多遍,它仍然在我的桌子上,就在我的 LCD 旁边,还有 Code Complete(真的!)。我喜欢它的写作方式(喜欢这里和那里添加的评论——书都应该这样写!)
但是,我忘记了我读过的第一本好书!那些让我充满热情地热爱计算机科学的人:
好吧,很好的问题:o)
Kent Beck 的极限编程
对我来说最有影响力的编程书籍是Allen Holub的 Enough Rope to Shoot Yourself in the Foot。
这本书的封面 http://ecx.images-amazon.com/images/I/71AE90J735L._SL500_AA240_.gif
哦,好吧,那是多久以前的事了。
Aaron Hillegass for Mac OS X 的Cocoa 编程
It's not strictly a development book and I believe that I've mentioned it in another answer somewhere but it's a book I really believe all developers should read, from php to Java to assembly developers.
It really brings together what's under the hood in a computer, why memory shouldn't be wasted and some of the more interesting parts of the history of computing. It's an introduction to the computer and what it is. It gave me my ultimate passion for low level programming and helped me understand pointers and memory more than any other computer.
我认为完整的代码将成为这个问题的一个非常受欢迎的问题,对我来说,它纠正了我的许多坏习惯并重新肯定了我的良好做法。
同样对于我的 Perl 背景,我非常喜欢 Damian Conway 的 Perl Best Practices。如果您不使用样式和最佳实践,Perl 可能是一种讨厌的语言,这就是我在阅读(有时是编写)的脚本中看到的。
我喜欢 Head First 系列,当您不想阅读更严肃的风格书籍时,它们非常好且易于阅读。
这不是问题的直接答案,因为我觉得上面已经回答了,但是,对我的编码方式肯定有影响的一本书是Code Reading, Volume 1: The Open Source Perspective。
替代文字 http://g.bookpool.com/covers/405/0201799405_140_30O.gif
令我惊讶的是,还没有提到这本书:Leo Brodie的《开始》。毕竟,作为一种基于堆栈的语言,Forth 应该适合这个网站的观众......
诚然,Forth 是一种奇怪的语言,并且现在不是很流行。但这本书读起来很愉快。它有漫画!这本书以及 Brodie 的另一本书Thinking Forth都可以在网络上免费获得。
这让我开始进入真正的OOA&D。
应用 UML 和模式:面向对象分析、设计和迭代开发简介 - Craig Larman
这些也将在那里:
它比任何其他书都教会了我构建小型、易于测试的工具的好处,这些工具可以组合起来做大事。
一个全新的思想,丹尼尔平克。有趣地看待我们行业的未来。
我假设大多数阅读本文的人已经阅读过列表顶部的书籍。所以,我将提供一本书,从不同的角度看待我们的行业。
无论您是否使用 Smalltalk 进行编码,Smalltalk 最佳实践模式都是一本不错的读物。充满了会改变你编码方式的小观察;为了更好。
Craig Larman 的《应用 UML 和模式》 。
书名有点误导;它确实处理 UML 和模式,但它涵盖的内容更多。这本书的副标题告诉你更多:面向对象分析与设计和迭代开发的介绍。
对我来说,它是Design Patterns Explained,它为我提供了一个关于设计模式的“哦,这就是它的工作原理”的时刻,并且在向其他人教授设计模式时非常有用。
UNIX 环境中的高级编程 - W. Richard Stevens
书中的所有思考。
Bruce Eckel是教育学的天才!很容易理解 C++ 中多态的实现。它包含您应该了解的有关 C++、基本和高级概念的所有内容。比Stroustrup的好多了。我也和他一起学习了 Java。
最后但并非最不重要的:
C++ 是免费的!
我在电脑(DOS)前度过了无数个夜晚,探索未知的世界:-D
《有效地使用遗留代码》是一本非常棒的书,它非常详细地介绍了如何正确地对代码进行单元测试以及它的真正好处是什么。它真的让我大开眼界。
我现在正在阅读敏捷软件开发、原则、模式和实践。对于那些对 XP 和面向对象设计感兴趣的人来说,这是一本经典读物。
替代文字 http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg
阅读Head First Design Patterns以获得比 GoF 书籍更易于理解的介绍。我记得在每一章之后我都感觉自己升级了。
Kent Beck 的TDD示例测试驱动开发。
由于上面提到的许多原因,它是 Head First Design Patterns 和 Perl 测试:开发人员笔记本之间的折腾,这应该是任何想要编写可维护代码的 Perl 程序员的圣经之一。
一开始是命令行。尼尔斯蒂芬森。
另外,我会提到Hugh Darwen 和 CJ Date的《第三次宣言》 。如果您对理解数据感兴趣(这在程序员中似乎并不常见),这本书是必读的。当你意识到 SQL 有多么糟糕时,它也会让你难过,但它也会帮助你应对这种破碎。了解工具是如何损坏的可以让您在设计时考虑到这些缺陷。
Another book that has not been mentioned yet, and SHOULD be required reading for EVERY programmer, newbies on up to gurus, in ANY programming language, is Michael Howard's Writing Secure Code (2nd Edition) from MSPress.
Win32 Programming by Charles Petzold
我想我们可以每隔几周问一个评分最高的问题,然后升级所有提到代码完整或实用程序员的人。
并不是说它有什么问题:-)
我是 Robert C. Martin 的大多数书名的忠实粉丝,尤其是敏捷软件开发、原则和实践以及干净的代码:敏捷软件工艺手册。
我在博客上看到了一篇关于软件工厂:使用模式、模型、框架和工具组装应用程序的评论,也谈到了XI-Factory,我读了它,我必须说这本书是必读的。虽然不是专门针对程序员的,但它非常清楚地解释了编程世界中正在发生的事情,比如模型驱动架构等等。
我发现“Prolog 的艺术”是一本非常好的读物。
专家 C 编程:Peter Van Der Linden的深度 C 秘密
我的高中数学老师借给我一本《你的灯图问题》,我已经重读了很多遍。作为一名开发人员,在整个生活中,它都是无价的。
虽然严格来说不是一本软件开发书籍,但我强烈建议不要让我思考!被考虑在这个列表中。
问题是,“哪本书真正影响了你作为开发人员的工作方式?” 毫无疑问,Jeff Prosise 所著的Programming Windows with MFC是对我作为开发人员的工作方式影响最大的一本书。它没有教我“编程”的基础知识,但它为我和成千上万的其他开发人员打开了 Windows 平台开发的世界。
在开发 MFC 之前,我以前曾以“Petzold 风格”编写过一些 Windows 代码。我很快就决定了我们作为开发人员不值得麻烦的 Windows 平台。当 Prosise 出版他的 MFC 书时,我意识到(与成千上万的其他非 Windows 程序员一起)我可以创建一个易于使用的界面,用户不仅可以理解,而且可以真正享受使用。我狼吞虎咽,在里面做了很多笔记,转了很多角,最后我买了第二本。
长篇大论,杰夫。使用 MFC 第 2 版对 Windows 进行编程。 微软出版社 1999 年国际标准书号:1-57231-695-0
Eric Evans 的领域驱动设计
Roger S. Pressman - 软件工程(从业者方法)。它有很多有用的信息。
Domain Driven Design By Eric Evans is a wonderful book!
这本书汇集了世界上一些最优秀的程序员的集体经验。这是必读的。
对于低级娱乐,我建议Michael Abrash 的
i) -Zen of Code Optimization- 和
ii) -Graphics Programming Black Book-
即使您不进行任何图形编程。
我想说“超越代码——通过 9 个简单的步骤学会区分自己”是一本很好的励志书。我不涉及技术问题,但它描述了与人合作、专业的方式……对我来说,如果你需要一些鼓舞士气的话,这是一本你可以反复阅读的书。除此之外,它很便宜,而且在 3 到 4 小时内阅读起来非常容易和愉快。
在我的博客上有一个小小的评论。
Amiga ROM 内核手册 :)
这可能不算是一本“开发书”,但无论如何我都必须把它扔进去:斯蒂芬·利维的黑客。我发现它谈到了编程的情感方面。
由于很多人列出了 Head First Design Patterns,我同意这是一本非常好的书,我想看看是否有很多人知道名为Design Patterns Explained: A New Perspective on Object-Oriented Design的标题。
这个标题很好地处理了设计模式。本书的前半部分非常容易理解,其余章节只需要牢牢掌握已经涵盖的内容我觉得本书后半部分不太容易理解的原因是它涵盖了我作为一个年轻的开发人员公认缺乏的模式经验中,用的不多。
这个标题还介绍了设计模式背后的概念,涵盖了 Christopher Alexander 在架构方面的最初工作,以及 GoF 首次在 SmallTalk 中实现文档模式。
我认为任何喜欢 Head First Design Patterns 但仍然觉得 GoF 非常枯燥的人,都应该将 Design Patterns Explained 作为一种更具可读性(尽管不是很全面)的替代方案。
Craig Larman 的应用 UML 和模式。虽然《四人组》一书的《设计模式》很有启发性,但我发现直到我在编程课上看到拉曼的书后,我才“了解”如何使用设计模式。
Ray Duncan 的高级 MS-DOS。
尽管这本书只有 300 页并且支持 Microsoft 技术,但它仍然提供了一些很好的与语言无关的花絮。
Steve Macguire编写可靠的代码
Peter Van Der Linden 的“Expert C Programming - Deep C Secrets” 发生了什么——经典而有趣的读物。应该在几年前学习 C 后立即阅读,但在学习 C 3 年后才知道!一本推荐的书,它回答了关于指针的最常见的 SO 问题(我最喜欢的主题)。生活它,吃它,呼吸它!10/10!
Roger Kaufman 博士的“ Fortran 着色书” (1978 年,ISBN:0262610264)
多么愚蠢的概念——甚至比“傻瓜”书还要基本!但它适用于任何语言(当然还有一些特定于 fortran 的示例),以一种非常容易理解和“非常有趣”的方式解释逻辑、变量、I/O 等的基本概念。
这足以让一个十岁的孩子对编程感兴趣......
(在Flickr 用户帐户上找到封面照片)
好的,所以问题不是“什么是最好的编程书”,而是“如果你能告诉自己在职业生涯开始时要读什么”......
可能是“On Lisp”和 SICP 之一,再加上 CLRS 或 Udi Manber 的“算法:一种创造性方法”之一。
Udi Manber 的算法简介 http://vig-fp.prenhall.com/bigcovers/0201120372.jpg
前两个将教授大量的编程技术、模式,并真正打开一个人的思维,让他/她自己的创造力;其他两个是不同的。它们更具理论性,但也非常重要,专注于设计正确和高效的算法(并且需要更多的数学)。
当“好编程书籍”的主题出现时,我看到很多人推荐前三本书,但最后一本书(Manber)是一本很棒的书,很少有人知道。这是一个耻辱!Manber 专注于通过使用归纳的定理证明算法的增量开发。
如果您用 C 编写代码,那么专家 C 编程会让您大开眼界。它可以回答您想知道为什么它会以这种方式工作的所有事情。Peter Van Der Linden 具有出色的写作风格,并使晦涩难懂的概念非常易读。所有 C 开发人员必读
Object Oriented Design Heuristics是一本很好的读物。我放不下。
我将添加一些我在这里没有看到的对我有影响的夫妇:
爱德华·塔夫特(Edward Tufte)的任何东西:定量信息的视觉显示;构想信息;视觉解释
Pro Spring是对控制反转和依赖注入世界的极好介绍。如果您不了解这些实践及其含义 - Pro Spring 中的主题和技术细节的平衡非常好。它建立了一个很好的案例和随之而来的个人基础。
我建议的另一本书是 Robert Martin 的敏捷软件开发(ASD)。代码味道、敏捷技术、测试驱动开发、原则……许多不同编程方面的良好平衡。
更传统的经典作品包括臭名昭著的 GoF设计模式、Bertrand Meyer 的面向对象软件构建、Booch 的面向对象分析和设计、Scott Meyer的“ Effective C++ ”系列以及我喜欢的 Gunderloy 的鲜为人知的书,Coder to Developer。
虽然书籍很好......不要忘记收音机!
...让我再补充一件事。如果您还没有发现safari - 看看。它比堆栈溢出更容易上瘾 :-) 我发现根据我的谷歌类型习惯——我需要更昂贵的订阅,这样我就可以随时看任何书——但我会向任何有兴趣的人推荐试用版.
(啊,是的,今天一点 obj-C,明天可可,模式?soa?那个食谱中的那个例子是什么?史蒂夫在第二版中说了什么?我应该买这本书吗?......这样的订阅很棒如果你想对你正在搜索的内容有一些连续性和上下文......)
推荐给 Windows 程序员,Windows编程
Deitel 和 Deitel,“C++:如何编程”
XUnit 测试模式
Software Tools by Brian W. Kernighan and P. J. Plauger by a wide margin had the most effect on me.
Stanley Lippman的 C++ 对象模型内部
我的是通过示例进行测试驱动开发
The first book that made a real impact on me was Mastering Turbo Assembler by Tom Swan.
Other books that have had an impact was Just For Fun by Linus Torvalds and David Diamond and of course The Pragmatic Programmer by Andrew Hunt and David Thomas.
Cress、Dirkson 和 Graham 与 Watfor 和 Watfiv 的 Fortran IV。
这本书教会了我我的第一门编程语言,当时我在打孔卡上编程。3 年后,这本书全都破烂了,因为我用得太多了。
替代文字 http://g-ecx.images-amazon.com/images/G/01/ciu/4b/83/245d9833e7a03768eaf63110._AA240_.L.jpg
Fortran 是一门很棒的语言!它有一个超级优化器并生成非常快的代码。它在英国仍然很受欢迎,FTN95 现在是一个功能非常齐全且功能强大的编译器。有时我希望我能继续使用它,但 Delphi 是一个绰绰有余的替代品。
尽管我从未编写过游戏,但这本书以一种有趣的方式帮助我理解了很多事情。
当我还是一个完全的新手时,我就提出了这个问题,并让我在短时间内从只知道 Java 的存在变成了一个可靠的团队成员
Stan Lippman 的 C++ 对象模型内部。它让 C++ 终于为我“点击”了,在这一切都变得“神奇”之前。这本书让我在接触一种新的编程语言时有了不同的思路。
Andrei Alexandrescu 的现代 C++ 设计
Steve Maguire 编写 Solid Code。
Grady Booch 的“应用程序的面向对象分析和设计”。我很久以前读过这篇文章,它向我展示了开发面向对象软件的方法。从那时起,许多其他书对我产生了影响,但这本书让我开始了。
Kent Beck 的实现模式。
替代文字 http://ecx.images-amazon.com/images/I/51JHn-6oNwL._SL500_AA240_.jpg
您可以学习如何通过编程与人交流。
近年来,它一直是“Nicolai M. Josuttis”的“C++ 标准库”。这是我的圣经。
替代文字 http://ecx.images-amazon.com/images/I/51BT5SKXTCL._SL500_AA240_.jpg
IBM PC 程序员指南。粉红衬衫书。
……嗯,总得有人说。
唐纳德·诺曼,“日常事物的设计”
不是关于编程本身,而是关于世界上的事情应该如何工作——一种可用性心理学。
在设计最终用户界面和 API 时,它对我来说非常宝贵。
尽管我已经从事专业编程多年,但 Rocky Lhotka 关于他的 CSLA 框架的“Business Objects”系列是让我大开眼界的书。
他的想法让我再次对软件开发模式和理论感到兴奋。它让我对学习如何成为更好的开发人员产生了新的兴趣,而不仅仅是学习最新的 gee-whiz 控件或库。(不要误会我的意思,我仍然喜欢一本好的技术书籍——你必须跟上!)
我发现《算法设计手册》是一本非常有益的读物。我也强烈推荐Programming Pearls。
学习 C# 2005,作者 Jesse Liberty 和 Brian MacDonald (O'Reilly)。
国际标准书号 10:0-596-10209-7。
当我第一次在 VS2005 中从 ASP 经典过程代码跳转到面向对象的 C# 代码时,这本书让我走上了正确的道路。
Donald Knuth 的 Literate Programming,这是一本关于代码结构的好书。
You.Next():将您的软件开发事业推向领导轨道 ~ Michael C. Finley(作者)、Honza Fedák(作者) 链接文本
福特的高效程序员
我还没有完全完成这个,但我已经对我所掌握的一些技巧/技巧感到兴奋,这些技巧/技巧可以变得更加……嗯……富有成效。
当然,有很多我们都知道的东西(使用键盘快捷键、DRY 等)。但是有很多新东西可以搭配。细心的读者将很快开始了解如何将事物组合起来以获得更大的效果。
面向对象的分析和设计 - Grady Booch
"Thinking in C++" by Bruce Eckel
Charles Wetherell 的程序员练习曲,More Programming Pearls (Jon Bently),
代码就是法律- 您正在使用 [您选择的语言] 进行所有这些写作、编辑和思考,但为什么?你的代码是什么意思?它实际上会做什么?
(我本可以推荐一本关于 QA 的书,但我没有……)
Ken Schwaber 和 Mike Beedle用 Scrum 进行敏捷软件开发。
我用这本书作为理解敏捷开发的起点。
GW Basic 简介。没有它,我永远不会学习如何编程,任何其他书籍都不会对我有任何好处。
Scelbi 字节入门
我多次仔细阅读本书中的源代码清单,直到有一天,我突然摸索到了 8080 汇编语言编程。
似乎大多数人已经接触过一些非常好的书籍。真正帮助我的是有效的 C#:改进 C# 的 50 种方法。如果我不提到维尼之道,我会失职。哲学书籍对灵魂有益,对代码有益。
这里有两个我没见过的:
我希望我早点读到 Koenig 和 Moo 的“ Ruminations on C++ ”。那是一本让 OO 概念真正吸引我的书。
我向任何计划在 90 年代中期开始编程生涯的人推荐 Michael Abrash 的“代码优化之禅”。
可能不是世界上最先进的书,但它让我理解了我无法理解的编程概念,尤其是面向对象的主题。
务实的程序员非常好。然而,当我刚开始时,真正产生影响的是:
我知道——它在外面听起来和看起来有点俗气,可能已经过时了——但这是基于作者 (Matt Pietrek) 使用他自己的工具进行的调查对 Win95 内部的一个很棒的解释——代码随书而来。请记住,这是在整个开源之前,微软仍然非常谨慎地发布内部文档——更不用说源代码了。那里有一些引用,比如“如果你正在解决一些问题并遇到了一些症结,那么你需要停下来,真正深入研究那篇文章,真正理解它是如何工作的”。我发现这是一个很好的建议——尤其是现在你经常有图书馆的源代码并且可以去看看。它也启发了我享受深入了解系统工作原理的过程,
哦,我还要介绍有效的 .net - Don Box 对 .Net 的内部解释。
如果你在 Unix/Linux/MacOS 等中做任何事情,你必须阅读已故的 W Richard Stevens 所著的 Unix 环境中的高级编程(也称为首字母缩写词 APUE)。如果你不知道文件描述符是如何工作的,什么会话是,或者当你自己守护进程时你应该做的所有事情(承认,你不知道),那么这本书会告诉你。
之后你会感到有点业余,但如果你想在 Unix 环境中认为自己是一名专业的程序员(任何语言),你需要阅读这篇文章。
这是一个非常丰富和有用的汇编,但是,我有点惊讶我在作者中没有遇到 Andrew S. Tanenbaum。IMO,他是最好的 CS 教授之一,他的天才主要与他非凡的能力有关,他可以让 CS 本科生获得相当困难的材料。他的书(现代操作系统或计算机网络可能会敲响警钟)非常出色,为我在攻读学士学位的同时打下了坚实的 CS 基础,我强烈推荐它们。Tanenbaum 上的其他一些有趣的东西,证明了他的技能超越了教学:一个名为 MINIX 的操作系统的作者——Linus 在实现 Linux 时从它那里获得了很多灵感;Amoeba - 分布式操作系统;Turtle - 免费的匿名 p2p 网络。
仍然值得一提的经典是界面耻辱堂。该网站详细介绍了非常有趣的大量界面设计失礼。原来的 iarchitect.com 已经不存在了,但是其他人已经在自己的网站上重新建立了居屋。
Windows 中的图形编程很难出错。
如何解决它:数学方法的一个新方面 虽然与计算机编程没有直接关系,但它确实教会了你解决问题的艺术,这就是计算机编程的全部内容。
我还没有在这里看到的是xUnit 测试模式: Gerard Meszaros 的重构测试代码。这本书真的帮助我从一个全新的角度看待单元测试。
替代文字 http://ecx.images-amazon.com/images/I/410TX7YN94L._SL500_AA300_.jpg
会让你意识到工作场所应该是什么样子。
任何导师/团队负责人/经理或向上述人员报告的任何人的必备读物。
游戏设计的艺术 - Jesse Schell的镜头之书
Jesse Schell 自 2002 年以来一直在卡内基梅隆大学的娱乐技术中心教授游戏设计并领导研究项目。
纳夫说。
游戏设计的艺术——镜头之书 http://i50.tinypic.com/iekw0l.jpg
PS:对不起,如果我重复发布,我在答案中找不到这本书 - 可能是因为标题不准确或没有图片。让我知道,如果是,我会删除它。
我迟到了这个问题,但显然仍然有一些独特的东西可以提供...... Barry Boehm的软件工程经济学总而言之,它说如果你想真正提高软件生产力,那就找更好的人,因为更好的工具、硬件、语言,方法等都会产生边际影响。只有更好的人才能显着提高生产力。我强调,这是更好的工程师,而不是更多的工程师!
不是那种你会带上床睡觉的书,就像你在工作中可能会做的那样,而是那种让我们明白我们行业一直在努力铭记的教训的书。见证离岸外包,Boehm 的模型预测的虚假经济只会产生边际积极影响,如果有的话。一探究竟。
这是每位程序员必读的书:Abraham Silberschatz 的数据库系统概念。
替代文字 http://images.barnesandnoble.com/images/14870000/14878097.JPG
多年前,Bruce Eckel 的 Thinking in C++ 教会了我很多关于 C++ 的知识,但也教会了我将问题隔离到一个小型“沙箱”中进行研究/分析的重要性。这项技术极大地影响了我的职业生涯,并经常帮助我为自己和他人解决问题。
这些天,我指的是 Java 中的 Thinking,它是用相同的风格编写的。不知何故,这种风格不仅仅是简单的“示例”,而是深入探讨了问题的核心。
我很感激我会买 Eckel 的几乎任何东西,看不见。
应用 UML 和设计模式。
它帮助设计模式与我一起点击,并为 UML 提供了一个理由,这在“UML as Sketch”的措辞中对我来说是有意义的。也就是说,UML 应该用作系统的简要草图,它的额外好处是您不必向其他人解释符号(他们要么已经知道 UML,要么你给他们一本 UML 书阅读)
它是一个系列,令人惊叹。Edsger Dijkstra(在 CAR Hoare 的帮助下)的小黑书Structured Programming,尤其是题为“On Our Inability To Do Much”的文章。
Tenenbaum 的第一本操作系统书籍。我第一次看内核级编程。
Michael Abrash 汇编语言之禅
用 Java 思考(模式),Bruce Eckel
专业 Excel 开发 这本书展示了如何在最普遍的编程平台之一中制作高质量的应用程序。
我有几篇关于这个主题的(相当老的)博客文章
PHP 对象、模式和实践。 http://www.apress.com/book/view/9781590599099
我一直最喜欢的是 Matthew Telles 的 C# Back Book。
Dreaming in Code可能在过去 6 个月中产生了最深远的影响。
Bjarne Stroustrup 的“C++ 编程语言”
Alistair Cockburn 的敏捷软件开发
Ian Craig对面向对象编程语言的解释
因为它向我展示了 OO 比标准的 C++/Java 习语要多得多
“如何成为一名程序员:简短、全面和个人的总结”,作者: Robert L Read
不完全是一本书,而是一篇文章,但是当我开始编码时,这本书绝对是我的灵感。喜欢进入部落的想法。值得一读。
当我第一次开始时,有 Tom Swan 的“Mastering Turbo Pascal”。这本书没有什么特别深刻的地方。使用示例清晰简洁。基于这些知识,我开始了 15 年以上的软件开发生涯。
C++ 黑皮书。一路亲吻
Sedgewick 的“C 语言算法”(第 1 版)教会了我所有关于算法的知识,也教会了我所有关于文档和复制/粘贴代码的陷阱,因为此版本中的所有示例代码均取自“Pascal 算法”版本并且只是通过一个简单的代码翻译器传递,该翻译器没有针对不同的索引方案进行调整。
从 Tom Swan 掌握 C++。这是最好的书,它的例子很简单,可以教授概念,但又足以解决其他问题。可读性很强,是我上大学时读的第一本书,只需要读一次。
The C++ Series of programming books by Deitel and Deitel
管理千兆字节是思考繁重信息的即时经典。
面向经验丰富的程序员的 C#
或者真正来自迪特尔和迪特尔的任何东西。我读过他们的几本书,一切都很棒。
不是一本编程书,但仍然是每个程序员都应该阅读的非常重要的书:
Turbo C++ 中的面向对象编程。不是很受欢迎,但它是让我开始的一本书,也是第一本真正帮助我理解对象是什么的书。在高中读过这篇文章。它有点让我热泪盈眶……
实际上,有两本书很突出。第一个是代码完成。尽管年代久远,这仍然是一本非常有用的书,而且关于过早优化的危险的章节本身就值这本书的价格。
第二个是 The Psychology of Everyday Things(我认为现在称为 The Design of Everyday Things),它改变了我在设计应用程序时对用户界面的看法。它让我更加关注用户。
“编写可靠的代码:Microsoft 开发无错误 C 程序的技术(Microsoft 编程系列)”,作者:Steve MacGuire。
有趣的是,这里提到的书籍中有很大一部分是 C/C++ 书籍。
对我来说,“内存作为 C 和 C++ 中的编程概念”确实让我看到了内存管理的真正工作原理。如果您是 C 或 C++ 开发人员,我认为这是必读的。你会顽固地学习一些东西,或者记住你可能在此过程中忘记的东西。
http://www.amazon.com/Memory-Programming-Concept-C/dp/0521520436
SAP ABAP 编程?《21天自学ABAP》是最好的书!
它不包含任何巧妙的技巧或魔法,但 3 年后,我从未遇到过更全面的书
Schaum 的 C++ 编程大纲,作者 John R Hubbard。
这是我开始接触 C++ 时阅读的第一本编程书籍。这是一个看到我对编程感兴趣的人送给我的礼物。这本书非常适合初学者——它从基本概念开始,到模板和向量。给出的例子非常相关。这本书让你思考和提出更多的问题,并为自己尝试一些事情。
可能是 1997 年左右的“C for Dummies”第 1 卷。真的只是一个介绍,但在雅达利 ST 上的 GFA Basic 编程品味之后,这是一本很好的读物。大约在同一时间的 Coronado C 教程也有帮助。
这本书适合那些想要了解使用 C# 3.0 进行 OOP 的原因和方法的人。你不想错过它。
当我第一次开始使用 OOP 语言进行编程时,我发现这本书不仅是一本关于 C++ 和 MFC 的综合性书籍,它还是我所见过的对面向对象概念的最佳解释之一。
当我与刚开始使用面向对象语言编程的开发人员交谈时,我告诉他们阅读这本书。