最受欢迎的25本计算机编程书籍

程序员修炼之道

《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。

代码整洁之道

《代码整洁之道(英文版)》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道(英文版)》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道(英文版)》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

代码大全

史蒂夫·迈克康奈尔(Steve McConnell)被公认为软件开发社区中的首要作者和发言人之一。他是Construx Software公司的首席软件工程师。他所编著的图书包括曾被《软件开发》杂志授予优异产品震撼大奖的《代码大全》和《快速软件开发》,以及《软件项目生存指南》和《专业软件开发》

重构

重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。

本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。

深入浅出设计模式

《深入浅出设计模式》(影印版)的编写运用许多最新的研究,包括神经生物学、认知科学以及学习理论,这使得《深入浅出设计模式》(影印版)能够将这些设计模式深深地烙印在你的脑海中,不容易被遗忘。你将会更擅长于解决软件设计中的问题,并能够和你的团队成员用模式的语言来更好地沟通

人月神话

20余年畅销不衰的经典巨作,软件工程领域的圣经宝典!IBM大型电脑之父Fred Brooks20余年开发经验的汇集,远谋深虑,字字珠玑!技术之巧与人文之美的完美结合!纯正原版影印,真正理解大师的睿智思维,再无译文之歧义困扰!更收录包括《No Silver Bullet》(没有银弹)在内的最新四篇经典论文!

代码整洁之道-程序员的职业素养

  1. 汇聚编程大师40余年编程生涯的心得体会

  2. 阐释软件工艺中的原理、技术、工具和实践

  3. 助力专业软件开发人员具备令人敬佩的职业素养

成功的程序员在以往的工作和生活中都曾经历过大大小小的不确定性,承受过永无休止的压力。他们之所以能够成功,是因为拥有一个共同点,都深切关注创建软件所需的各项实践。他们将软件开发视为一种需要精雕细琢加以修炼的技艺,他们以专业人士的标准要求自己,他们具有职业素养。

软件开发大师Robert C. Martin在书中介绍了真实软件技艺中的各项原则、技术、工具和实践,展示了怎么以自豪、自尊和自信的心态进行软件开发,怎么取得卓越表现和丰硕成果,怎么做到有效沟通和确切估算,怎么以坦诚的心态面对困难,并引导读者认识到专业程序员肩负的责任重大,阐述了什么才是程序员的职业素养。

书中的具体内容包括:

● 成为真正的软件专业人士需要具备哪些条件,如何应对彼此冲突又紧张的进度表和不近情理的管理人员;

● 如何做到流畅编程,克服阻塞状态;

● 如何应对无休止的工作压力,避免崩溃;

● 如何培养坚持不懈的态度,如何拥抱新的开发范式;

● 如何管理好时间,避免身陷泥潭无法自拔;

● 如何培育有利于程序员和开发团队茁壮成长的环境;

● 什么时候应该说“不”,怎么说;

● 什么时候应该说“是”,承诺意味着什么。

软件强大、优雅而实用,让人惊叹不已,不论是开发者还是用户都乐于使用这样的软件。它们并非是由机器编写出来的,而是出自那些对软件技艺拥有坚定信念的专业软件开发者之手。本书将帮助读者成为专业软件开发者中的一员,并赢得只有他们才能拥有的荣誉感和成就感。

修改代码的艺术

世界级计算机专家Michael C. Feathers的经典之作,软件开发大师Robert C. Martin作序倾情推荐,修改遗留代码的权威指南。深入剖析修改遗留代码的各种方法和策略,从理解遗留代码、为其编码测试、重构及增加特性等方面给出大量实用建议,是所有程序开发人员必读之作。

设计模式

这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别有用。此书适合大学计算机专业的学生、研究生及相关人员参考。

书中涉及的设计模式并不描述新的或未经证实的设计,只收录了那些在不同系统中多次使用过的成功设计

程序员的面试经典

本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。第1~7 章主要涉及面试流程解析、面试官的幕后决策及可能提出的问题、面试前的准备工作、对面试结果的处理等内容;第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。

软技能

这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。本书共分为职业篇、自我营销篇、学习篇、生产力篇、理财篇、健身篇、精神篇等七篇,概括了软件行业从业人员所需的“软技能”。通过阅读本书,软件工程人员、编程人员和其他技术人员能够积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。

计算机程序的构造和解释

《计算机程序的构造和解释(原书第2版)》1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释(原书第2版)》对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。

编码:隐匿在计算机软硬件背后的语言

本书讲述的是计算机工作原理。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的

算法导论

这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。

人件

在软件管理领域,很少有著作能够与本书媲美。作为经久不衰的畅销书,本书深刻地洞察到软件开发的最大问题不在于技术,而在于人。人的因素并不容易解决,一旦解决了,你将更有可能获得成功。

本书是软件管理领域的传奇经典,被誉为“对美国软件业影响最大的一本书”。全书从管理人力资源、创建健康的办公环境、雇用并留用正确的人、高效团队形成、改造企业文化和快乐工作等多个角度阐释了如何思考和管理软件开发的最大问题——人(而不是技术),以得到高效的项目和团队。

作者在第3版中添加了6章内容,并对先前的内容做了调整,使其更能应对当今软件的开发环境和挑战。例如,第3版讨论了一些领导力上的病理症状,这些是先前版本中没有作为病理来归纳的;书中还讲述了会议文化的演进,以及如何管理新旧成员水火不容的混合团队,讨论了为何一些日常使用的工具会成为团队前进的阻力而非动力。任何需要管理软件项目或软件组织的人员都能从本书中寻找到有价值的建议

编程珠玑

本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。.多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”,成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏,最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。..在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。解决方案的代码均以C/C++语言编写,不仅有趣,而且有很大的实战示范意义。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。

企业应用架构模式

《企业应用架构模式》作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。《企业应用架构模式》分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是《企业应用架构模式》的主体,是关于模式的详细参考手册,每个模式都给出使用方法和实现信息,并配以详细的Java代码或C#代码示例。此外,整《企业应用架构模式》中还用了大量UML图来进一步阐明有关概念。

《企业应用架构模式》是为致力于设计和构建企业应用的软件架构师、设计人员和编程人员而写的,同时也可作为高等院校计算机专业及软件学院相关课程的参考教材。

计算机程序的构造和解释

算机程序的构造和解释(原书第2版)》1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释(原书第2版)》对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。

计算机程序设计艺术

首先介绍编程的基本概念和技术,然后详细讲解信息结构方面的内容,包括信息在计算机内部的表示方法、数据元素之间的结构关系,以及有效的信息处理方法。此外,书中还描述了编程在模拟、数值方法、符号计算、软件与系统设计等方面的初级应用。此第3版增加了数十项简单但重要的算法和技术,并根据当前研究发展趋势在数学预备知识方面做了大量修改。

领域驱动设计

《领域驱动设计:软件核心复杂性应对之道》是领域驱动设计方面的经典之作。全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。《领域驱动设计:软件核心复杂性应对之道》适合各层次的面向对象软件开发人员、系统分析员阅读。

编程人生

业界顶尖的程序员是怎么走上编程道路的?

他们的编程工作创造和改变了人类历史,在这一过程中都有哪些经验和教训?

他们对计算机软件行业的过去、现在和未来有什么独到的看法和见解?

他们对培养、发现、选拔、面试优秀的程序员有什么建议?

放下手头的工作,听听这些软件先驱们的故事和建议,眼界可以更开阔,思路可以更清晰,方向可以更明确,人生可以更精彩。

作者Peter Seibel采访了下面这15位世界级编程大师,本书是他在近80个小时的访谈录音基础上整理汇编而成的。

 Jamie Zawinski:Lisp程序员,XEmacs开发者,Netscape浏览器和Mozilla核心开发者。

 Brad Fitzpatrick:书中唯一的80后,LiveJournal和memcached开发者。现效力于Google。

 Douglas Crockford:JavaScript权威,JSON之父。现任Yahoo架构师。

 Brendan Eich:JavaScript之父。Mozilla公司CTO。

 Joshua Bloch:如果说Gosling是Java之父,那Bloch就是使Java真正成熟的教父,Java 2到5的核心架构师。现为Google首席Java架构师。

 Joe Armstrong:Erlang和OTP(开放电信平台)框架之父。

 Simon Peyton Jones:Haskell先驱。ACM会士。现为微软剑桥研究院研究员。

 Peter Norvig:Google研发总监。ACM会士。

 Guy Steele:精通多门语言,Common Lisp和Scheme开发者之一,Java语言规范作者之一,Common Lisp、Fortran、C、ECMAScript和Scheme等语言标准化委员会成员。高性能科学计算的语言Fortress设计者。ACM会士,美国工程院院士。Sun公司院士。

 Dan Ingalls:与Alan Kay合作开发了Smalltalk,是该语言的真正实现者。现为Sun公司杰出工程师。

 L. Peter Deutsch:JIT(即时)编译技术发明者之一,PostScript文件浏览器GhostScript的作者。ACM会士。Sun公司院士。

 Ken Thompson:图灵奖得主。Unix之父。UTF-8 Unicode编码设计者。

 Fran Allen:图灵奖第一位女得主。编译技术公认权威。IEEE院士,ACM会士,美国工程院院士。IBM院士。

 Bernie Cosell:Internet奠基人,ARPANET最早的路由计算机IMP设计者之一。

 Donald Knuth:多卷本经典巨著《计算机程序设计艺术》的作者,排版软件TeX的作者,图灵奖得主。

快速软件开发

提高软件开发的速度,按进度计划完成项目,是软件开发项目管理最常见和最难解决的问题。这本书在总结了包括微软公司在内的美国软件业成千上万个软件开发项目的实践经验、研究成果、经验教训的基础上,详细列出了几十种经实践证明可以直接在软件开发中应用,以提高开发速度的最佳实践方法、开发策略、实用技巧等,帮助开发人员和项目经理在了解软件开发中最常见错误的基础上,根据自身实际情况,制定出满足项目进度、成本、质量与其他目标要求的最佳方案。

算法

《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。

持续交付

Jez Humble编著的《持续交付(发布可靠软件的系统方法)》讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。《持续交付(发布可靠软件的系统方法)》由三部分组成。第一部分阐述了持续交付背后的一些原则,以及支持这些原则的实践。第二部分是本书的核心,全面讲述了部署流水线。第三部分围绕部署流水线的投入产出讨论了更多细节,包括增量开发技术、高级版本控制模式,以及基础设施、环境和数据的管理和组织治理。 《持续交付(发布可靠软件的系统方法)》适合所有开发人员、测试人员、运维人员和项目经理学习参考。

软件架构设计

《软件架构设计:大型网站技术架构与业务架构融合之道》围绕软件架构设计,系统化地梳理技术架构与业务架构的方法论与实践。《软件架构设计:大型网站技术架构与业务架构融合之道》内容分为5 大部分,第1 部分定义架构的概念和范畴;第2 部分从编程语言、操作系统、网络、数据库、框架、中间件等方面入手,介绍架构学的基础知识;第3 部分从高并发、高可用与稳定性、一致性、CAP 理论等角度,分析技术架构知识;第4 部分从业务架构思维、技术架构与业务架构的融合角度,阐述业务架构知识;第5 部分从个人素质、团队能力两大方面,诠释从技术到管理的转变方法。通过本书,读者可以对业务软件的架构方法学有全局的认识,同时对软件架构的核心能力有深刻的理解,对个人的技术成长起到一定的借鉴作用。

《软件架构设计:大型网站技术架构与业务架构融合之道》不仅适合工程师、架构师阅读,也适合企业系统开发人员在内的软件开发从业人员阅读。