What is the single most influential book every programmer should read?
如果你可以回到过去并告诉自己在开始时作为开发人员阅读一本特定的书,那本书会是哪本书?
我希望这个列表可以变化,涵盖范围广泛。
要搜索:使用右上角的搜索框。 要搜索当前问题的答案,请使用
1 | inquestion:this"Code Complete" |
好。
人工智能编程范式:Peter Norvig的Common Lisp案例研究
我开始阅读它是因为我想学习Common Lisp。当我中途休息时,我意识到这是迄今为止我读过的关于编程的最好的书。
K&安培; R
@Juan:我知道Juan,我知道 - 但是有些事情只能通过实际掌握手头的任务来学习。整天在抽象的理想中说话只会让你成为一名学者。正是在抽象的应用中,我们才真正理解它们存在的原因。 :P
@Keith:很好地提到Alan Cooper的"囚犯正在逃避庇护" - 这是一个让人大开眼界的开明者,自从我读到这本书后,任何与我合作过的开发者都听到我提到它所支持的想法。 +1
编程的实践。作者:Brian W. Kernighan,Rob Pike。
这里显示的风格非常好 - 代码本身就说明了,整本书遵循KISS原则。个人不是我选择的语言,但仍然对我有影响。
极限编程解释:肯特贝克拥抱变革。虽然我不提倡硬件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人死亡。
替代文字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框架。人们在设想瀑布模型时会想到什么?阅读本文,我们将变得清晰(希望如此)
我最喜欢的一个是Hacker's Delight,因为阅读和教育一样有趣。
我希望第二版即将发布!
从头开始编程。它在互联网上免费。这本书教我AT& T asm。它很容易阅读。
数据库系统概念是您阅读有关理解良好数据库设计原则的最佳书籍之一。
类型和编程语言由Benjamin C Pierce全面理解编程语言的基础。
计算机编程的概念,技术和模型。
替代文字http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg
@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语言的美观和简洁性确实影响了我在其他语言中编写代码的方式。
黑客,Steven Levy。
人格和生活方式必须先行。其他一切都可以学习。
编程实践
和
如何通过计算机解决它
alt text http://img.infibeam.com/img/7101e0ee/496b1/05/629/P-M-B-9788131705629.jpg?hei=200&wid=160&op_sharpen=1
去年我参加了一些课程。我看了
创新者的困境(颠覆性技术)
神话人月(管理软件)
越过深渊(启动)
数据库管理系统,COW书籍
编程C#,OSTRICH书籍
开始iPhone开发,GRAPEFRUIT书籍
每本书都令人惊叹,但Clayton Christensen(1997 !!!)的创新者困境真的是一本很棒的书,让我真正想到了现代软件世界。所面临的挑战是颠覆性技术,以及磁盘驱动器公司和非技术公司如何总是被新的,改变游戏规则的技术所破坏。在考虑谷歌(可能是最大的"网络"公司)时,它给了一个新的视角。为什么他们有他们的手在一切?这是因为他们不希望自己的位置受到新事物的干扰。谷歌上的预览很容易得到这个想法。阅读!
虽然我同意上面的许多书都是必读书(实用程序员,神话人月,计算机程序设计艺术和SICP??立刻浮现在脑海中),但我想向一个略有不同的方向推荐一个学科Edsger Dijkstra编程。尽管它已有32年历史,但对"可验证性设计"的强调具有高度相关性(即使"可验证性"意味着"证明"而非"单元测试")。
我认为"Unix编程的艺术"是一本优秀的书,由优秀的黑客/聪明的头脑作为Eric S. Raymond,他试图让我们理解软件设计的一些原则(主要是简单性)。对于即将在Unix平台下启动项目的每个编程人员来说,本书都是必读的。
替代文字http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg
C ++如何编程它对初学者有好处。这本书是完整的1500页。
Kernighan&普劳格的编程风格元素。
它说明了噱头聪明和优雅聪明之间的区别。
厄运大师。至于对你的职业的动机和热爱:它不会比本书中描述的更好,真实地鼓舞人心的故事!
弗雷德布鲁克斯的神话人月
http://en.wikipedia.org/wiki/The_Mythical_Man-Month
Martin Fowler的重构:改进现有代码的设计已经列出。但我会详细说明它为何影响了我。
整本书的本质是关于构造代码,以便人类更容易阅读和理解。它强烈地告诉我,我写的代码是为了让我的同事和后继者消费并可能从中学到一些好东西。它激励我有意识地以一种让人们赞美我的名字的方式进行编程,而不是诅咒我永远的诅咒。
这是一本优秀的书,并没有得到广泛的掌声,但却充满了深刻的洞察力:敏捷软件开发:Alistair Cockburn的合作游戏。
这有什么特别之处?好吧,显然每个人都听过"敏捷"一词,而且现在看来大多数人都是信徒。不管你是否相信,敏捷运动存在的背后都有一些深层原则。本书以精确,科学的方式揭示和阐述了这些原则。一些原则是(顺便说一句,这些是我的话,而不是Alistair的):
那里还有更多。我现在闭嘴,但我强烈推荐这本书!
由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的软件测试艺术。对测试软件的一般性介绍;有利于程序员阅读,以帮助他们像测试人员一样思考。即想想可能出现的问题并做好准备。
顺便说一句,我意识到问题是"单一最具影响力的书",但讨论似乎已经改为列出供开发人员阅读的好书,所以我希望我可以原谅列出两本好书而不仅仅是一本。
Brian W.Kerninghan& Sons撰写的"编程实践"。罗伯派克。
语言很容易,主题也很有趣。
麦康奈尔的快速发展
除了如何安排在我的书架上之外,没有特别的顺序:
- 务实的程序员
- 福勒的谴责
- 通过Feathers有效地处理遗留代码。这实际上是重构的配套卷。
- Fowler推出的UML。其他优点包括简洁。
- 由Steve Maguire调试开发过程
- Gamma等人的设计模式(又名"四人帮")
用户是否曾触摸过您的代码?如果您不是仅仅进行后端工作,我建议使用关于Face:用户界面设计的基本知识 - 现在是第三版(链接)。我曾经认为我的用户是愚蠢的,因为他们没有"获得"我的界面。我当然是错的。关于Face转过身来。
不是最有影响力的,但值得一看的是J.M.Coetzee的青年。
20世纪50年代南非的学生青年的叙述者,长期以来一直在策划逃离他的祖国:从他母亲的嗜好,从失败困扰他的父亲,以及他肯定即将到来革命。学习数学,阅读诗歌,省钱,他试图确保当他到达现实世界时,无论在哪里,他都会准备好充分体验生活,并将其转化为艺术。然而,最后到达伦敦,他既没有诗歌也没有浪漫。相反,他屈服于作为计算机程序员的生活单调,随机的,无爱的事情从中得不到任何解脱。没有灵感,他停止写作。一个尴尬的殖民地,一个宪法的局外人,他开始了一个黑暗的朝圣之旅,在那里他不断受到考验并不断发现缺乏。
青年封面http://img440.imageshack.us/img440/5140/youthgd4.jpg
企业模式和MDA:使用原型模式和UML构建更好的软件
对于那些希望利用ORM和UML的人来说,这是一本很好的读物
重构
餐巾的背面,Dan Roam。
餐巾背面http://www.coverbrowser.com/image/bestsellers-2008/302-7.jpg
一本关于视觉思维技巧的好书。现在还有一个扩展版本。我不能说那个版本,因为我不拥有它;然而。
编程语言中的设计概念由FA Turbak提供了许多编程概念的详细实现,对于理解底层发生的事情非常有用。
对于初学程序员来说,这本书并不是一本书,但如果您正在寻找SOA设计书籍,那么实践中的SOA:分布式系统设计的艺术就是适合您的。
完美的软件:以及关于测试的其他幻想
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年了,我仍然学到了很多东西。
软件工具由Brian W. Kernighan和P. J. Plauger撰写
它对我编写软件的方式产生了深远的影响。
史蒂夫麦康奈尔的代码完成有很多选票,但他的软件项目生存指南书呢?我认为他们都需要阅读但出于不同的原因。
由W. Richard Stevens在UNIX环境中进行高级编程。
Bertrand Meyer的面向对象软件构建
似乎没有人提到Stroustup的C ++编程语言,这是一本每本C ++程序员都应该阅读的好书。
我还认为每个程序员和经理都应该阅读极限编程解释:拥抱变更。书中的许多想法现在都是常识,但本书给出了对软件工程质量追求的智能和鼓舞人心的解释。
我会提出针对Knuth和四人帮的经典建议。
Scott Myers提供的有效C ++和更有效的C ++。
掌握:成功和长期实现的关键,乔治伦纳德
这是关于在任何技能中达到掌握所需的心态,以及为什么。它真棒,也很容易阅读。
我的投票是"如何像计算机科学家一样思考:用Python学习"
它既可以作为书籍也可以作为免费电子书使用。
它确实帮助我理解了Python的基础知识,而不仅仅是编程。虽然它使用Python来演示概念,但它们适用于大多数(如果不是全部)编程语言。另外:它是免费的!
我想起了三本书。
- Eric S. Raymond的Unix编程艺术。
- 由瑞克库克编辑的巫术。
- 唐纳德克努特的计算机编程艺术。
我也喜欢Paul Graham的写作。
调试开发过程:保持专注,实现船舶日期和建立稳固团队的实用策略Steve Maguire。
无意义,脚踏实地,有趣,深刻。
Code Complete是第一选择,但我也引用Gang of Four的设计模式和Craig Larman的应用UML和模式。
克里斯托弗亚历山大的永恒建筑方式是另一个伟大的方式。即使它是关于结构的,它也包含在我已阅读的许多优秀编程书目的参考书目中。
另一个,我正在学习很多新东西,是Clifton Nock的数据访问模式。
我最近阅读了Dreaming in Code,发现它是一本有趣的读物。自从我开始阅读它的那一天起,Chandler 1.0就被释放了。阅读有关人才试图"改变世界"的项目团队日益增长的痛苦和错误,可以为您提供很多东西。斯科特还带来了很多程序员的传说和智慧,这只是一个有趣的阅读。
美丽的代码有一两件事让我有不同的思考,特别是有关自上而下运算符优先权的章节。
Mary和Tom Poppendieck的精益软件开发绝对适合每个开发人员的书架
添加到上面提到的伟大的:
企业应用架构模式
企业集成模式
一本书的影响力通常取决于读者以及他们阅读本书时的职业生涯。我必须对Head First Design Patterns大声疾呼。伟大的书和它所创造的非常有创意的方式应该被用作其他科技书籍作者的榜样。即它的编写是为了促进学习和内化概念。
Head First Design Patterns http://ecx.images-amazon.com/images/I/51LSqrgoT1L._SS500_.jpg
编程Perl(O'Reilly)
Aaron Hillegass为Mac OS X编写的可可编程
这不是这个问题的直接答案,因为我觉得它已经在上面得到了解答,但是,其中一本肯定会对我的编码方式产生影响的书是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再到汇编开发人员。
码
它真正汇集了计算机内部的内容,为什么不应该浪费内存以及计算历史中一些更有趣的部分。这是对计算机及其内容的介绍。它给了我对低级编程的终极热情,并帮助我理解指针和内存比任何其他计算机更多。
由开发人员编写,由Mike Gunderloy编写。
为了获得prolog的进步,我喜欢这两本书:
Prolog的艺术
Prolog的工艺
真正打开了逻辑编程和递归方案的思想。
UNIX环境中的高级编程 - W. Richard Stevens
Peter Norton的IBM PC汇编语言手册
我在电脑前(DOS)度过了无数个夜晚,探索未知世界:-D
由于我是一名C#程序员,并且已经提到了大多数通用书籍,我想推荐Bill Wagner的书"更有效的C#"。
我认为开发复合WPF应用程序的大多数人也应该看看微软的复合应用指南(也称为Prism):
综合应用指南
应用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编程环境。
它比任何其他书籍都更能教会我构建小型,易于测试的工具的好处,这些工具可以组合起来做大事。
一个全新的思想,由丹尼尔粉红色。有趣地看待我们行业的未来。
我假设大多数阅读此内容的人已经阅读了列表顶部的书籍。所以,我会提供一本书,对我们的行业有不同的看法。
替代文字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编程
一开始是命令行。尼尔斯蒂芬森。
Roger S. Pressman - 软件工程(从业者方法)。它有很多有用的信息。
Amiga ROM内核手册:)
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页,并且有利于微软的技术,但它仍然提供了一些不错的语言知识花絮。
我会说"超越代码 - 学会用9个简单的步骤来区分自己"是一本非常好的动机书。我不介绍技术问题,但它描述了与人合作的方式,专业,......对我来说,如果你需要一些鼓舞人心的话,这本书可以一次又一次地阅读。除此之外,它在3至4小时内阅读便宜且非常容易和愉快。
在我的博客上有一点评论。
我现在正在阅读敏捷软件开发,原则,模式和实践。对于那些对XP和面向对象设计感兴趣的人来说,这是一个经典的阅读。
替代文字http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg
我在一篇关于XI-Factory的博客上看到了软件工厂:用模式,模型,框架和工具组装应用程序的评论,我读了它,我必须说这本书是必读的。尽管并非专门针对程序员,但它很清楚地解释了编程领域现在正在发生的模型驱动架构等等。
每个程序员应该了解的内存
作者: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#的方法。如果我没有提到维尼之道,那将是我的疏忽。哲学书籍可以对灵魂和代码有益。
值得一提的经典之作是界面羞耻馆。这个网站详细介绍了各种各样的界面设计失礼,非常有趣。最初的iarchitect.com不再存在,但其他人已经在自己的网站上重新建立了HOS。
如何解决它:数学方法的一个新方面
虽然与计算机编程没有直接关系,但它确实教会了解决问题的艺术,而这正是计算机编程的全部意义所在。
代码是法律 - 您正在以[您选择的语言]进行所有这些写作,编辑和思考,但为什么?你的MEAN代码是什么?它究竟会做什么?
(我可以推荐一本关于质量保证的书,但我没有......)
面向对象的设计启发式是一个很好的阅读。我无法爱不释手。
我将添加一些我在这里没有看到的对我有影响的人:
- Yourdon和Constantine,"结构化设计"。如果您愿意稍微挖掘一下,那么您需要了解的有关软件设计的一切都在这里。
- Leonard Koren,"Wabi-Sabi:艺术家,设计师,诗人和哲学家"。平衡美和实用主义的务实哲学。
在学习Big O符号和各种排序算法的来龙去脉时,C ++中的算法对我来说非常宝贵。这是在Sedgewick决定通过将其划分为5本不同的书之后可以赚更多钱之前发布的。
C ++常见问题解答是一本很棒的书,它真实地向您展示了您应该和不应该在C ++中做什么。 C ++的向后兼容性留下了很多地雷,这本书帮助人们小心翼翼地避开它们,同时又是对OO设计和意图的一个很好的介绍。
这是每个程序员必读的书:Abraham Silberschatz的数据库系统概念。
替代文字http://images.barnesandnoble.com/images/14870000/14878097.JPG
特立独行!:世界上最不寻常的工作场所背后的成功故事
替代文字http://ecx.images-amazon.com/images/I/410TX7YN94L._SL500_AA300_.jpg
会让你意识到工作场所应该是什么样的。
You.Next():将您的软件开发职业转移到领导力轨道
~Michael C. Finley(作者),HonzaFedák(作者)
链接文字
程序员指南IBM PC。粉红衬衫书。
......好吧,有人不得不说出来。
Bunny先生的ActiveX指南
游戏设计的艺术 - 杰西·谢尔的"镜头之书"
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?那个食谱中的例子是什么?史蒂夫在第二版中说了什么?我应该买这本书吗?......这样的订阅很棒如果你想要一些连续性和背景你正在谷歌搜索......)
这里有两个我没见过的提到:
我希望我早一点读过Koenig和Moo的"R ++ on C ++"。这本书让OO概念真的为我点击了。
对于计划在90年代中期开始编程生涯的其他人,我推荐Michael Abrash的"代码优化之禅"。
Roger Kaufman博士撰写的"Fortran着色书"(1978,ISBN:0262610264)
多么愚蠢的概念 - 甚至比"傻瓜"书更基本!但它适用于任何语言(当然有几个特定的??例子),以一种非常容易理解和"痛苦有趣"的方式解释逻辑,变量,i / o等基本概念。
这足以让十岁的孩子对编程感兴趣......
(在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通过使用归纳的定理证明来关注算法的增量开发。
福特的生产程序员
我还没有完全通过这个,但我已经对我已经采取的一些提示/技巧感到激动,以便变得更加......嗯......富有成效。
当然,我们都知道很多东西(使用键盘快捷键,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的帮助下)小黑皮书"结构化编程",特别是题为"我们无能为力"的文章。