Saturday, December 5, 2015

Books to read - programming



The Effective Engineer
https://henrikwarne.com/2017/01/15/book-review-the-effective-engineer/

Developer Testing
https://henrikwarne.com/2017/08/20/developer-testing/

Exercises in Programming Style
https://henrikwarne.com/2018/03/13/exercises-in-programming-style/#more-1626

http://justjavac.com/other/2012/05/15/qualified-programmer-should-read-what-books.html
然而《计算机程序的构造和解释》与这些不同。 这是一本会启发你的书,它会燃起你编写出色程序的热情; 它还将教会你认识并欣赏美; 它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。
其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。
同时,你将会学到其他东西,函数式编程(第三章)、惰性计算、元编程、虚拟机、解释器和编译器。

11、《深入浅出设计模式

推荐数:445
强大的写作阵容。
  • 《Head First设计模式》(中文版) 作者Eric Freeman;
  • ElElisabeth Freeman是作家、讲师和技术顾问。
  • Eric拥有耶鲁大学的计算机科学博士学位,E1isabath拥有耶鲁大学的计算机科学硕士学位。
  • Kathy Sierra(javaranch.com的创始人)FHBert Bates是畅销的HeadFirst系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。
本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里, 不容易被遗忘。
本书的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。 解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。
作者以大量的生活化故事当背景,例如第1章是鸭子,第2章是气象站,第3章是咖啡店, 书中搭配大量的插图(几乎每一页都有图),所以阅读起来生动有趣,不会感觉到昏昏欲睡。
作者还利用歪歪斜斜的手写字体,增加“现场感”。 精心设计许多爆笑的对白,让学习过程不会太枯燥。 还有模式告白节目,将设计模式拟人化成节目来宾,畅谈其内在的一切。 每一章都有数目不等的测验题。 每章最后有一页要点整理,这也是精华所在,我都是利用这一页做复习。

12、《哥德尔、艾舍尔、巴赫书:集异璧之大成

推荐数:437
如果下昂真正深入阅读,我推荐道格拉斯·侯世达(Douglas Hofstadter)的《哥德尔、艾舍尔、巴赫书》。 他极为深入研究了程序员每日都要面对的问题:递归、验证、证明和布尔代数。 这是一本很出色的读物,难度不大,偶尔有挑战,一旦你要鏖战到底,将是非常值得的。 – Jonik

16、《修改代码的艺术》by Michael Feathers

本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作, 而且从涵盖面和深度上都超过了前两部经典。 书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。
作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等), 与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。
书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。 通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。

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

这是一本讲述计算机工作原理的书。
不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。 作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。 更重要的是,你会因此而获得对计算机工作原理较深刻的理解。 这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。
不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟, 都不妨翻阅一下《编码:隐匿在计算机软硬件背后的语言》,读一读大师的经典作品,必然会有收获。

18、《禅与摩托车维修艺术 / Zen and the Art of Motorcycle Maintenance

对我影响最大的那本书是 Robert Pirsig 的《禅与摩托车维修艺术》。 不管你做什么事,总是要力求完美,彻底了解你手中的工具和任务,更为重要的是, 要有乐趣(因为如果你做事有乐趣,一切将自发引向更好的结果)。 – akr

21、《Surely You’re Joking, Mr. Feynman! / 别闹了,费曼先生!》

虽然这本书可能有点偏题,但不管你信不信,这本书曾在计算机科学专业课程的阅读列表之上。 一个优秀的角色模型,一本有关好奇心的优秀书籍。 – mike511

23、《Patterns of Enterprise Application Architecture / 企业应用架构模式

很奇怪,还没人推荐 Martin Fowler 的《企业应用架构模式》- levi rosol

24、《The Little Schemer》和《The Seasoned Schemer》 nmiranda

这两本是LISP的英文书,尚无中文版。 美国东北大学网站上也有电子版。

25、《交互设计之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》该书作者:Alan Cooper,人称Visual Basic之父,交互设计之父。


https://dzone.com/articles/20-books-java-programmers-should-read-in-2018

1. Java 8 in Action
2. Clean Architecture
3. Grokking Algorithms
4. Building Microservices: Designing Fine-Grained Systems
5. Soft Skills
6. Database Design for Mere Mortals
7. Making Java Groovy
9. TCP/IP Illustrated
10. UML Distilled
11. Hibernate Tips
12. The Art of Agile Development
13. Essential Scrum
14. Java Performance Companion
15. High-Performance Java Persistence
18. Head First JavaScript
20. The Complete Software Developer's Career Guide


ThoughtWorks读书雷达(2016)
http://www.epubit.com.cn/article/495

http://h2ex.com/875
《Soft Skills: The Software Developer’s Life Manual》
The Clean Coder

https://sites.google.com/site/steveyegge2/ten-challenges
#1: Gödel, Escher, Bach: An Eternal Golden Braid — Douglas R. Hofstadter
#2: Structure and Interpretation of Computer Programs — Harold Abelson, Gerald Sussman
#4: Programming Language Pragmatics — Michael Scott
#5: The Essentials of Programming Languages — Friedman, Wand, Haynes.
#6: Types and Programming LanguagesBenjamin C. Pierce
#9: How to Design Programs — Felleisen, Findler, Flatt, Krishnamurthi
#10: Purely Functional Data Structures

我的Java后端书架2015年2.0版
《程序员必读之软件架构 - Software Architecture for Developers》
作者维护着codingthearchitecture.com 。不过中文书名叫“必读”有点过。薄书里的两部分内容:
1. 编码的架构师:一直是我的职业模板,我记的笔记
2. 架构的表达: 当年我觉得RUP的4+1 UML视图不足以表达系统时,Simon Brown的模板给了很好的过渡范例。
《发布!软件的设计与部署 - Release It!: Design and Deploy Production-Ready Software 》
关于高可靠性的软件,学校里不会教,出来社会却要面对的那部分,英文的原标题更清晰。
《大型网站技术架构:核心原理与案例分析》
淘宝出品,大型互联网站的科普入门书。
《大规模分布式存储系统》
继续淘宝出品,分布式文件系统与数据库的科普入门书。
《Docker: 容器与容器云》
这本书叫Docker一本就够了,的确够了,在那些Docker操作指南书之上,不想着改Docker代码的看它就够了,别想着什么《Docker源码分析》。
《Redis设计与实现分析》
用Redis的工程师桌面必备吧,不用再多说了。
《从Paxos到Zookeeper》
Zookeeper的书,淘宝出品。
《Spark技术内幕》
深度与厚度之间,选了这本200页的薄书,一样有很多的原理与代码解释,但不会像有的书那样贴20行代码只写一行字。
《布道之道 - Driving Technical Change:Why People on Your Team Don't Act on Good Ideas,and How to Convince Them They Should》,经常在组织里推行新技术的同学可以看下,七种怀疑论者模式,脑海中一幅幅熟悉的面孔。

12 Most Influential Books Every Software Engineer Needs to Read
http://jasonroell.com/2015/03/16/12-most-infuential-books-every-software-engineer-needs-to-read/

http://insights.thoughtworkers.org/reading-radar-2016/

image
基础篇
进阶篇
  • 实现模式
  • 领域特定语言
  • Building Microservices
    微服务是支持可演化性的一些一起协同工作的小而自治的服务。许多组织发现这种细粒度的架构让系统更具弹性,扩展,也能增加团队的自治。但是,大量的服务会导致很多令人头疼的问题必须处理。这本书作为一个一站式商店包含微服务涉及的各种主题,并且通过在ThoughtWorks,Amazon,Netflix和其他公司的具体实践,帮助大家了解微服务。
高级篇

提升与修炼

基础篇
  • 程序员思维修炼
  • 金字塔原理
  • 暗时间
    为什么我每天都看书学习进步却并不明显?为什么有些人玩得时间不比我少学的时间不比我多,但却越来越牛?也许刘未鹏会给你答案。
  • 黑客:计算机革命的英雄
    每门专业都有其灵魂,或者说启蒙思想。黑客精神伦理及其独特的价值观在很多方面都深刻地影响了今天软件业的形态。这本书对“黑客”的起源及发展做了详尽的阐释。对于一位以计算机,尤其是软件为职业的人来说,这本书将带你“寻根访祖”,探寻我们日常工作背后的哲思。
进阶篇
  • 系统思考
  • 咨询的奥秘
  • The Trusted Advisor
    这本书初看有点儿像中文版的“厚黑学”,但是它内容并不是教读者取得个人功利的最大化,而是如何与他人合作,达到“win-win”。它的内容虽然涉及作为顾问如何有效地为客户提供价值,不过书中的建议操作性很强,完全可以应用在更广泛的范畴——我们每天与他人的交流很多都是向别人提建议或者接受别人建议的过程。最初我担心这本书的内容不适合“国情”,但后来的经历告诉我,在沟通与协作上,全人类都面临相同的挑战。
  • Unix编程艺术
    UNIX作为一款软件,绝对是人类的工程史上的奇迹,今天最重要的系统几乎全部运行在UNIX或其变体之上。它诞生于软件工程方法论的“创世纪”。得益于数位天才的努力,UNIX将他们的智慧全部包容进来,比如我们耳熟能详的KISS,YAGNI原则。不过这些智慧大多以源代码的形式保留在磁盘上了。所幸Eric Raymond的妙笔让这些睿智跃然纸上,触手可得,也让后人可以不断地从中汲取智慧和精神动力。
高级篇
  • 分析模式
  • 实现领域驱动设计
    本书适合于那些已经具备面向对象编程基础并想进一步提升的开发人员,它告诉我们:好的软件不只是用好设计模式这么简单,而是要能够准确地表达业务意图,达到“代码本身即是设计”。

流程与交付

基础篇
进阶篇
  • 持续交付
  • Google软件测试之道
  • 敏捷软件测试
  • 精益软件度量
    软件度量是当今软件开发行业的热点话题,但同时也是推广实施过程中的难题。一方面软件企业管理存在度量的迫切需求,另一方面,企业在推行软件度量的实践上问题颇多、效果不佳。人们迫切需要破解度量难题,找到切实可行的软件度量的实践方法。而这本书从精益理念的角度,尝试重新梳理在中等规模到大规模软件开发中度量体系设计和实施的思路。
高级篇

思想与领导力

基础篇
  • 门后的秘密
  • 部落
    如果你幸运的话,在你的一生中,会有一些经历让你难忘,每当你遇到困难的时候,你都会不自觉的想起那个时候是什么样的,从中寻找答案,你在努力让自己身边的环境回到“当年”的那个状态,虽然已经物是人非。如果你不能,你会痛苦、无力、抱怨世事不如以前了。
    然而“当年”那个状态到底是什么状态?所谓伟大的团队到底有什么样的特点?他们中的每一个人心里想的是什么,他们之间又是如何交互的?所谓团队建设究竟应该怎么做?你又如何领导你的团队到达这样的状态?
    作为一个软件工程师,你一定会多多少少的遇到这些困惑,我强烈建议你读读这本书,因为,毕竟,软件是一个协作的游戏。
进阶篇
  • 精益思想
  • 第五项修炼
  • 影响力
    为什么有些人极具说服力?同样的观点为什么不同人说出来的大家的反应是不一样的甚至截然相反的?这就是影响力这个武器的威力所在。影响力的打造和经营,无论对于个人还是企业,都可以让我们做到事半功倍,节省更多的成本,创造更多的价值
高级篇


  • Agile IT Organization Design
  • 管理3.0:培养和提升敏捷领导力
  • 精益企业
    “精益”的概念源自于二十世纪末期美国人对丰田制造方法的研究,总结出的可以同是提高质量并降低成本的秘密。“精益创业”将这种方法用于初创企业,并随着很多硅谷的明星公司以及国内很多创业奇迹故事而流行开来。于是很多人开始认为只有小型的初创企业才能谈及“精益”。本书的三位作者以他们自身丰富的经历告诉我们,同样的原则、方法、实践也适用于“恐龙”般的大型企业,从而保持它们与“初创公司”的竞争力。

http://www.kancloud.cn/digest/articles/76023

http://dqfbbs.appspot.com/article_t/Programming/19497419.html
看书的原则:
1. 不要看 C、C++、JAVA...
不过不要理解错了。不管学什么语言,永远不要忘了语言是做什么用的。语言只是一种
工具,它的作用就是完成你的工作。不管把 C 的语法学得如何透彻,也不管把 C 的 
trick 用的如何精妙,这并不能表示你会编程。要学会如何分析问题,如何设计程序,
如何用一种具体的语言来实现。如果你只会做最后一步,你只是一个编码者 (coder),
还不是一个程序员(programmer)。做一个 programmer,不要做 coder。总之,不要为
了学语言而去学语言(除非你是个语言学家)。

2. 不要放弃对基础知识的学习。所谓基础知识,一般都有一个特点,那就是:它们可
能看起来没用,但如果你忽视它们的话,总有一天你会后悔莫及。所以,如果不想以后
再后悔的话,就在今天多花点时间。

3. 不管学什么东西,学之前先弄明白自己要学的是什么东西,它有什么用,在你已经
学和以后的发展方向中,它处于什么位值。如果这些都不明白,就好比在茫茫的丛林里
面四处乱撞,就算能出去,也一定会走很多弯路。

4. 对于软件工程之类的东西,不象 C 语言有着严格的标准,最好的办法就是兼收并蓄
,能看的都看,然后(最重要的)在此之上形成自己的思想(不然就什么都白看了)。

5. 尽信书不如无书。书里写的只不过是写书的人认为正确的观点而已。学习前人的知
识和经验,在此基础上形成自己的知识结构、观点和思维方式,才是学习的真正目的。

----------------------------------------------------------------------------
----


1. Mathematics (数学)


Discrete Mathematics and Its Applications (Fifth Edition)
http://www.china-pub.com/computers/common/info.asp?id=9558
离散数学及其应用 (第五版)

[Kenneth H.Rosen]

我想这本书就不用我推荐了,就凭它是全世界 500 多所大学指定教材的事实就足以说
明一切。



Concrete Mathematics : A Foundation for Computer Science (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=7210
具体数学:计算机科学基础 (第2版)

[Ronald L. Graham / Donald E. Knuth / Oren Patashnik]

如果你打算学“计算机”而不是“电脑”的话,别忘了看这本书。讲述了算法的数学基
础。

----------------------------------------------------------------------------
----


2. Data Structures & Algorithms (数据结构、算法)


Data Structures & Program Design In C (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=1449
数据结构与程序设计 C 语言描述 (第二版)

[Robert Kruse / C.L. Tondo / Bruce Leung]

大凡国外的数据结构教科书,都有一个共同的特点,就是他们的第一章都不是讲的数据
结构,而是软件工程的基本原则。我个人认为这是十分必要的,特别是对于大多数没有
接触过程序设计的同学来说,在数据结构这个可以说是第一次接触程序设计的课程中能
学习到基本的软件工程原则,对于以后的学习是十分有好处的。至少,在我看来,写一
个乱七八糟的程序出来还不如什么都不写。在我看来,这本书有两个优点:一:将软件
工程的基本原则贯穿全书,二:简单,容易理解。



Data Structures with C++ Using STL (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=9164
数据结构C++语言描述描述—应用标准模版库 (第二版)

[William Ford, William Topp]

这本书的重点是:一、用面向对象的观点解决数据结构问题;二、用 STL 解决数据结
构问题。有兴趣的同学可以看看这本书的第一版,看一看不用 STL 的 C++ 数据结构是
什么样子的。http://www.china-pub.com/computers/common/info.asp?id=1429



Introduction to Algorithms (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=6434
算法导论 (第二版)

[Thomas H. Cormen / Charles E. Leiserson / Ronald L. Rivest / Clifford Stein]

又是经典,没什么好说的。我看过的几本离散数学、数据结构、操作系统的书都引用到
了这本书的内容。



The Art of Computer Programming, Volume 1 : Fundamental Algorithms (Third 
Edition)
http://www.china-pub.com/computers/common/info.asp?id=7470
计算机程序设计艺术 第1卷 基本算法 (第3版)

The Art of Computer Programming, Volume 2 : Seminumerical Algorithms (Third 
Edition)
http://www.china-pub.com/computers/common/info.asp?id=7471
计算机程序设计艺术 第2卷 半数值算法 (第3版)

The Art of Computer Programming, Volume 3 : Sorting and Searching (Second 
Edition)
http://www.china-pub.com/computers/common/info.asp?id=7472
计算机程序设计艺术 第3卷 排序和查找 (第2版)

[Donald E. Knuth]

在计算机技术领域,Knuth = The Art of Computer Programming = 一切数据结构和算
法问题的答案。这一点就足够了。

----------------------------------------------------------------------------
----


3. Compiler (编译原理)


Compilers: Principles, Techniques, and Tools
http://www.china-pub.com/computers/common/info.asp?id=4713
编译原理 技术与工具

[Alfred V. Aho / Ravi Sethi / Jeffrey D. Ullman]

计算机科学界有几本著名的“龙书”,这是其中一本。作者将读者比喻为一个手握宝剑
和盾牌,跟一只恐龙战斗的骑士。除了有趣之外,这本书的质量也是无可挑剔。只是人
邮影印的...总是那么贵,真该跟高教好好学学。再怎么说我也是学生嘛...



Advanced Compiler Design and Implementation
http://www.china-pub.com/computers/common/info.asp?id=14021
高级编译器设计与实现

[Steven S. Muchnick]

与“龙书”齐名的另外一本讲编译原理的书。

----------------------------------------------------------------------------
----


4. Operating System (操作系统)


Operating System Concepts (Sixth Edition)
http://www.china-pub.com/computers/common/info.asp?id=6437
操作系统概念 (第六版)

[Abraham Silberschatz / Peter Baer Galvin / Greg Gagne]

另外一本龙书,讲操作系统的非常经典的一本书,优点是阐述概念非常清晰,容易理解
。缺点就是纯粹的概念,没有讲实现。在现实中具体的实现往往并不象人们想象的那样
。但不要以为我在说这本书的坏话。一般说来,一本好书在它写之前,作者肯定首先确
定了这本书要面对的读者群。对你来说没用或者不好的书并不代表对其他人来说也没用
(如果你不打算学核物理,这不表示讲核物理的书没用;也不要考上了大学,就鄙视你
的小学课本)。如果你以后不打算去写一个操作系统的话,这本书再适合不过。
什么什么?为什么叫龙书呀?去买一本原版的看看封面就知道了...



Operating Systems : Design and Implementation (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=1433
操作系统:设计及实现 (第二版)

[Andrew S. Tanenbaum / Albert S. Woodhull]

如果你希望看到一个操作系统是如何具体实现的,而你有没有能力马上读懂linux之类
的内核源码的话,这本书非常适合你。它除了阐述概念,还结合一个“微型的 UNIX” 
- MINIX,讲述了如何实现一个真正的操作系统。这个操作系统不大,源码总共只有数
万行、2兆多,但却是“麻雀虽小,五脏俱全”,操作系统该有的东西它差不多都有了
,而且还遵循 POSIX 规范(当然,它并不能支持所有的 POSIX 规范,只是一部分)。如
今风头正劲的 linux,就是以 MINIX 为蓝本和平台开发的。用一个小型的操作系统作
为入门平台的好处是你不必牵涉进真正的操作系统的复杂的实现中。除了概念,一个真
正的操作系统还要考虑到很多其他的东西。在学习的入门阶段,这些东西不会有什么帮
助,只会让人抓狂。
本书的作者 Andrew S. Tanenbaum 博士一生写了好几本书,涉及操作系统、分布式操
作系统、计算机网络等很多领域,每一本都在计算机教育领域产生了深远的影响。买书
是要看作者的,有几个人写的书,不用看内容,掏钱买就行了。



UNIX Internals : The New Frontiers
http://www.china-pub.com/computers/common/info.asp?id=12731
UNIX系统内幕

[Uresh Vahalia]

讲 UNIX 系统内核的非常经典的一本书。介绍了各个版本的 UNIX 内核以及它们所用的
算法。如果你很希望了解 UNIX 内核,这本书就是你想要的。



The Design and Implementation of the 4.4BSD Operating System
http://www.china-pub.com/computers/common/info.asp?id=7552
4.4BSD操作系统设计与实现

[Marshall Kirk McKusick / Keith Bostic / Michael J. Karels / John S.
Quarterman]

UNIX 操作系统两大分支,BSD 和 System V,这一本是讲 BSD 内核实现的书。如果你
对 BSD UNIX 内核感兴趣,这本是不可不看的。



The Design of The UNIX Operating System
http://www.china-pub.com/computers/common/info.asp?id=12740
UNIX操作系统设计

[Maurice J.Bach]

同上,只不过这本是讲 System V 的。因为 AT&T 的版权问题,作者不能透露源代码,
但是书中阐述了大量 System V 的实现算法。



Lions' Commentary on UNIX 6th Edition with Source Code
http://www.china-pub.com/computers/common/info.asp?id=633
莱昂氏UNIX源代码分析

[John Lions]

知道什么叫旷世奇书吗?这本就是。在当初因为 UNIX 的版权问题而无法发表的情况下
,这本书居然流传 20 多年魅力不减,可谓前无古人。不过...再怎么说,UNIX 第六版
似乎老了点...



Distributed Systems : Principles and Paradigms
http://www.china-pub.com/computers/common/info.asp?id=7693
分布式系统:原理与范例

[Andrew S.Tanenbaum / Maarten van Steen]

分布式系统我没太大兴趣,但是这本书很经典的。

----------------------------------------------------------------------------
----


5. C (C 语言)


The C Programming Language
http://www.china-pub.com/computers/common/info.asp?id=13426
C程序设计语言

[Brian W. Kernighan / Dennis Ritchie]

最经典的 C 语言书。其作者 Dennis Ritchie 就是 C 语言之父,UNIX 两个原作者之
一。让我都不知道该怎么评价这本书了...总之,如果之前有一点程序设计基础的话,
这本书很快就可以帮你在 C 语言的世界里登堂入室。但是,对于对编程一无所知的数
学者来说,这本书还是困难了点。
如果你什么时候碰到了 K&R 的话(基本上,如果你搞计算机,想不碰到很难),那就是
指这本书的两个作者。K&R 风格就是这本书里用的编码风格。
还要说的是,给出的链接是进口的,我这个四星会员也要209大洋。清华出的影印本绝
版了...



The Art and Science of C : A Library-Based Introduction to Computer Science
http://www.china-pub.com/computers/common/info.asp?id=17991
C语言的科学和艺术

Programming Abstractions in C : A Second Course in Computer Science
http://www.china-pub.com/computers/common/info.asp?id=19744
C程序设计的抽象思维

[Eric S.Roberts]

两本非常优秀的C入门书。说实话,要推荐一本 C 的入门书还真不容易,原因大概就是
讲 C 语言的书实在太多了。幸运的是,在我们国家,能买到的影印版 C 语言教科书就
那么寥寥几本,我们还有的选(真不知道是幸运还是不幸,幸好这两本书也是非常优秀
,以至于可以忽略其它的存在了)。非常适合初学者。需要注意的是,《The Art and 
Science of C》为了更好的阐述概念,在书中用了作者自己开发的 C 库函数。在实际
的 C 语言开发中,为了最大的标准性和可移植性,必须用 C 标准库。所以看完这本书
之后很有必要看一看 K&R 的那本 C。《Programming Abstractions in C》实际上是讲
数据结构和算法的,不过这两本书还是应该放在一起看。



C Traps and Pitfalls
http://www.china-pub.com/computers/common/info.asp?id=8150
C陷阱与缺陷

[Andrew Koenig]

很多人推荐的书,虽说我没看过...

----------------------------------------------------------------------------
----


6. C++ (C++ 语言)


C++ Primer (Third Edition)
http://www.china-pub.com/computers/common/info.asp?id=5926
C++ Primer (第三版)

[Stanley B. Lippman / Josee Lajoie]

最好的 C++ 教科书。别看它的书名叫 Primer,实际上它的内容早就超出了一本入门书
应有的范围。C++初学者最好的选择。潘爱民翻译的,质量还算有保证。



The C++ Programming Language (Special Edition)
http://www.china-pub.com/computers/common/info.asp?id=3311
C++ 程序设计语言 (特别版)

[Bjarne Stroustrup]

C++ 之父 Bjarne Stroustrup 写的,非常经典的一本书,除了对于初学者来说困难了
点。我的经验是,当我有了任何对 C++ 不理解的问题时,总可以在这本书上找到答案
。如果你学 C++,这本书必须备着。(这本书好像是计算机系的专业英语阅读教材,看
很多人拿着出去卖二手,真不识货...)



Inside the C++ Object Model
http://www.china-pub.com/computers/common/info.asp?id=12911
深度探索 C++ 对象模型

[Stanley B. Lippman]

据说是一本“让很多 C++ 老手崩掉大牙”的书。虽说我没看过,不过既然侯捷都这么
说了...



Effective C++ (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=12315
Effective C++ (第二版)

[Scott Meyers]

More Effective C++
http://www.china-pub.com/computers/common/info.asp?id=9587
More Effective C++

[Scott Meyers]

又是 C++ 程序员不得不看的书,能极大的提高 C++ 编码效率。只有翻译的,不过这回
是侯捷。



Thinking in C++ (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=4801
C++编程思想 (第二版)

[Bruce Eckel]

Thinking in C++, Volume 2 : Practical Programming
http://www.china-pub.com/computers/common/info.asp?id=16608
C++编程思想 第2卷:实用编程技术

[Bruce Eckel / Chuck Alison]

Eckel 的好几本 Thinking in 系列都是不可多得的好书,也是必须看的(唉,当个 C++
程序员真苦呀)。



Ruminations on C++ : A Decade of Programming Insight and Experience
http://www.china-pub.com/computers/common/info.asp?id=8149
C++沉思录

[Andrew Koenig / Barbara Moo]

也是影响很广泛的书。

----------------------------------------------------------------------------
----


7. Object-Oriented (面向对象)


Object-Oriented Analysis and Design with Applications
http://www.china-pub.com/computers/common/info.asp?id=14571
面向对象分析与设计 (第二版)

[Grady Booch]

本书是UML的创始人Grady Booch的代表作之一,也是此领域公认的不可替代的权威著作
,在推动面向对象技术走向现实应用的过程中发挥了重要的作用,曾获得《Software 
Development》杂志的Jolt图书大奖。
反正是好书,我正在看。



Object-Oriented Software Construction (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=8170
面向对象软件构造 (第二版)

[Bertrand Meyer]

据说是非常经典的 OO 圣经(一_一!~~哪来那么多圣经呀?),我唯一的感受就是 - 这
本书好厚呀,比枕头还高...基于目前 OO 领域的混乱现状,本着兼收并蓄的原则,有
时间一定看。



Design Patterns : Elements of Reusable Object-Oriented Software
http://www.china-pub.com/computers/common/info.asp?id=6333
设计模式:可复用面向对象软件的基础

[Erich Gamma Richard Helm Ralph Johnson John Vlissides]

学OO?那这本书就是必修课了。据作者称,他们在写这本书的时候,也不是很清楚他们
到底在做什么(汗...)。据我所知,这种情况下一般只能出现两种结果:要么是一本糟
烂到底的书,要么就是旷世奇书。这本是后者...

----------------------------------------------------------------------------
----


8. Software Engineering (软件工程)


Software Engineering (6th Edition)
http://www.china-pub.com/computers/common/info.asp?id=9837
软件工程 (第6版)

[Ian Sommerville]

Software Engineering : A Practitioner's Approach (Fifth Edition)
http://www.china-pub.com/computers/common/info.asp?id=1305
软件工程:实践者之路 (第5版)

[Roger S. Pressman]

Software Engineering : Theory and Practice (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=3513
软件工程:理论与实践 (第二版)

[Shari Lawrence Pfleeger]

据说软件工程历来有理论派(俗称学院派)和实践派之分。不管他们怎么争论的,我在 
china-pub 上找到这三本比较适合做教科书的。按我的理解,面向对象和软件工程这些
东西,不象 UNIX 什么的有着严格的标准,那最好的学习办法就是兼收并蓄,学习所有
人的理论,在此之上逐步形成自己的理解,这才是真正的学习之道。



The Mythical Man-Month
http://www.china-pub.com/computers/common/info.asp?id=9537
人月神话

[Frederick Phillips Brooks]


软件工程领域一本传世之作,自第一版出世以来历经数十年而不朽。这个应该是最近重
版的,增加了数篇文章,包括这些年来书中的理论在实践中的应用以及 Brooks 的反思
。不可错过。特别要说的是,任何一个写操作系统的人都应该看一看这本书。Brooks 
写这本书之前参与了 IBM 的 OS/350 操作系统的设计工作。总体来说,这是一个失败
的系统。作者在这本书中详细总结了他的经验,从他艰苦的经历当中得出结论并告诉人
们一个操作系统不应该怎么写。很多情况下,知道一件事不应该怎么做就等于知道了一
件事应该怎么做。



Software Architecture : Perspectives On an Emerging Emerging Discipline
http://www.china-pub.com/computers/common/info.asp?id=3806
软件体系结构:一门初露端倪学科的展望

[Mary Shaw / David Garlan]

软件体系结构也是一门比较新兴的学科,这本书可以说是这一领域的开山之作,在讨论
软件体系结构的文章中,这本书是被引用的最多的。
清华出的32开标价15元,好像人邮也出了一本16开的,不过要贵上十元左右。

----------------------------------------------------------------------------
----


9. UNIX Programming (UNIX编程)


Advanced Programming in the UNIX Environment
http://www.china-pub.com/computers/common/info.asp?id=4892
UNIX 环境高级编程

[W. Richard Stevens]

Stevens 一生写了六本书(好像是),每一本都是传世经典。让我评价?还是让我跳楼先
吧...买吧,反正我全买了~话说回来,搞 UNIX 的有几个不知道 Stevens(您是从火星
来的吧?)?数数历史上,有几个人一辈子没有写过一篇攻击计算机的文章,去世后却
有全世界的 hacker 撰文哀悼的?
中国所谓的各位 hacker 大爷们,省省吧!你以为利用已经发现的漏洞攻陷了几个计算
机,你就是 hacker 了?那叫 cracker,意思是破坏者!再说,hacker 这个名字是自
己给自己封的吗?所谓 hacker,是指技术圈里所有的人对于你技术的承认。哪有自己
给自己封爵位的?
这本书主要是讲 UNIX 系统调用的。



The UNIX Programming Environment
http://www.china-pub.com/computers/common/info.asp?id=22
UNIX 编程环境

[Brianw. Kernighan]

据说比 Stevens 那本容易。我没看,反正 Stevens 的也非常容易,前提是你要有一点
操作系统知识,以及一些 UNIX 使用经验(连 UNIX 都不会用学什么 UNIX 编程?)。



UNIX Network Programming, Volume 1 : The Sockets Networking API (Third 
Edition)
http://www.china-pub.com/computers/common/info.asp?id=20159
UNIX 网络编程 卷1:套接字联网API (第三版)

[W. Richard Stevens / Bill Fenner / Andrew M. Rudoff]

UNIX Network Programming Volume 2 : Interprocess Communications (Second 
Edition)
http://www.china-pub.com/computers/common/info.asp?id=5968
UNIX 网络编程 卷2:进程间通信 (第2版)

[W. Richard Stevens]

其实这两本书是讲网络编程的。不过鉴于针对的是 UNIX,还是放到这里。总之只要是 
Stevens 的书,就没有什么好怀疑的。



The Art of UNIX Programming
http://www.china-pub.com/computers/common/info.asp?id=18615
UNIX 程序设计艺术

[Eric Raymond]

本书是作者封笔30年后历时5年创作而成,是一部难得的软件工程方面的佳作作者首次
将哲学、设计模式、工具、文化和传统结合在一起,使得UNIX成为世界上最好且最具创
新意义的软件,并展示了如何将其拓展到Linux和当今的开源(open-source)运动中:通
过取自最主要的开源项目中的示例,作者向UNIX和Linux编程人员展示了如何更巧妙地
创建软件,使其更雅致、更灵巧、更具可重用性且具有更长的生命期。

----------------------------------------------------------------------------
----


9. UNIX Administration (UNIX系统管理)


UNIX System Administration Handbook (Third Edition)
http://www.china-pub.com/computers/common/info.asp?id=5623
UNIX系统管理技术手册 (第三版)

[Evi Nemeth / Garth Snyder]

Linux Administration Handbook
http://www.china-pub.com/computers/common/info.asp?id=15886
Linux系统管理技术手册

[Evi Nemeth / Garth Snyder / Trent R.Hein]

据说这两本书,前一本的第一版由 UNIX 之父 Dennis Ritchie 作序,第三版和后一本
由 Linux 之父 Linus Torvalds 作序。这这这...还让我说什么好呢???



UNIX Unleashed (Fourth Edition)
http://www.china-pub.com/computers/common/info.asp?id=7788
UNIX 技术内幕 (第四版)

[Robin Anderson / Andy Johnston ...]

本书是由十几位经验丰富的系统管理员编写的,内容涉及系统管理的方方面面,包括如
何构建自己的网络入侵侦测系统、身份验证、加密技术、安全及Web服务的建立和维护
等。通过阅读本书,能让一名普通的UNIX用户快速成长为一名初中级系统管理人员。也
是一本很经典的书。



UNIX:The Textbook
http://www.china-pub.com/computers/common/info.asp?id=7128
UNIX操作系统教程

[Syed Mansoor Sarwar / Robert Koretsky / Syed Aqeel Sarwar]

我看的第一本 UNIX 教程。浅显易懂,不止告诉你如何去做,而且告诉你为什么应该这
样,里面都发生了什么事情。适合初学者。



Unix Backup & Recovery
http://www.china-pub.com/computers/common/info.asp?id=9352
UNIX 备份与恢复

[W.Curtis Preston]

如果你不懂的备份和恢复,那你还没有资格做 UNIX 系统管理员...

----------------------------------------------------------------------------
----


网络


Computer Networks (Fourth Edition)
http://www.china-pub.com/computers/common/info.asp?id=15894
计算机网络 (第4版)

[Andrew S. Tanenbaum]

Tanenbaum 的,好书呀...



TCP/IP Illustrated, Volume 1 : The Protocols
http://www.china-pub.com/computers/common/info.asp?id=4803
TCP/IP 详解 卷1:协议

[W. Richard Stevens]

TCP/IP Illustrated, Volume 2 : The Implementation
http://www.china-pub.com/computers/common/info.asp?id=5216
TCP/IP详解 卷2:实现

[Gary R. Wright / W. Richard Stevens]

TCP/IP Illstrated, Volume 3 : TCP for Transactions, HTTP, NNTP, and the UNIX
Domain Protocols
http://www.china-pub.com/computers/common/info.asp?id=5066
TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

[W. Richard Stevens]

讲解 TCP/IP 协议的书有两套经典的,这一套是 Stevens 的。既然是 Stevens 的,那
还有什么好犹豫的,想学就买。要注意的是,第二卷是讲 4.4BSD 的 TCP/IP 实现的,
看清楚了是实现哦,很变态的。



Internetworking with TCP/IP Vol I : Principles, Protocols, and Architecture 
(Third Edition)
http://www.china-pub.com/computers/common/info.asp?id=4087
TCP/IP 网络互连技术 卷1:原理、协议和体系结构 (第3版)

[Douglas E. Comer]

Internetworking with TCP/IP Vol II : Design, Implementation, and Internals (
Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=4088
TCP/IP 网络互连技术 卷2:设计与实现 (第2版)

[Douglas E. Comer / David L. Stevens]

Internetworking with TCP/IP Vol III : Client-Server Programming and 
Applications, BSD Socket Version (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=4089
TCP/IP 网络互连技术 卷3:客户服务器编程和应用BSD套接字版 (第2版)

[Douglas E. Comer / David L. Stevens]

Internetworking with TCP/IP Vol III : Client-Server Programming and 
Applications, Windows Sockets Version
http://www.china-pub.com/computers/common/info.asp?id=4090
TCP/IP 网络互连技术 卷3:客户服务器编程和应用Windows套接字版

[Douglas E. Comer / David L. Stevens]

另外一套很经典的讲 TCP/IP 协议的书,道格拉斯写的,只要有时间就应该看。据说这
套书出新版了,大家买之前多观察观察。

----------------------------------------------------------------------------
----


Windows Programming (Windows 编程)
虽说我已经暂时不再研究 Windows 下的程序设计了,但我对此还是比较了解的。下面
这几本书都是无可置疑的经典之作。


Inside Microsoft Windows 2000 (Third Edition)
http://www.china-pub.com/computers/common/info.asp?id=7737
Microsoft Windows 2000 技术内幕 (第3版)

[David A.solomon Mark E.Russinovich]

准确的说,这本书不是讲程序设计的,而是讲 Windows 操作系统的。但是显然的,如
果你不了解 Windows,那么当你的程序写到一定程度时,你一定会碰到不可逾越的障碍。



Programming Windows (Fifth Edition)
http://www.china-pub.com/computers/common/info.asp?id=2700
Windows 编程 (第5版)

[Charles Petzold]

曾经的 Windows 程序设计圣经(又来一个圣经?)。虽说近些年来 MFC 这些东西的应用
让这本书不再像以前那么光彩照人,但如果你打算一探 MFC 的本质的话,这本书就是
你的稻草~



Programming Applications for Microsoft Windows
http://www.china-pub.com/computers/common/info.asp?id=10952
Microsoft Windows应用程序设计

[Jeffrey Richter]

和 Petzold 那本一样经典。只不过这本侧重点不同,主要涉及 Windows 下的进程、线
程等等比较深层次的东西。



Programming with Microsoft Visual C++ .NET (Sixth Edition)
http://www.china-pub.com/computers/common/info.asp?id=8805
Visual C++.NET 技术内幕 (第6版)

[George Shepherd / David Kruglinski]

微软出版的讲 MFC 的书,前身是 Inside Microsoft Visual C++ (这个都该知道吧)。
第四版出版以后,原作者在一次滑翔伞事故中去世,这是别人接着出的。



Dissecting MFC
http://www.china-pub.com/computers/common/info.asp?id=3565
深入浅出MFC

[侯捷]

非常好的一本书,把 MFC 剖开来,看看里面是如何工作的。虽说现代的软件工程思想
是封装和隐藏,但大部分情况下如果你知道里面是什么样的话,你可以让它工作得更好。

----------------------------------------------------------------------------
----


Other (其它)


Computer Systems : A programmer' s Perspective
http://www.china-pub.com/computers/common/info.asp?id=18384
计算机系统

[Randal E. Bryant / David R. O'Hallaron]

本书主要介绍了计算机系统的基本概念,包括最底层的内存中的数据表示、流水线指令
的构成、虚拟存储器、编译系统、动态加载库,以及用户应用等。书中提供了大量实际
操作,可以帮助读者更好地理解程序执行的方式,改进程序的执行效率。此书以程序员
的视角全面讲解了计算机系统,深入浅出地介绍了处理器、编译器、操作系统和网络环
境,是这一领域的权威之作。 本书适合作为计算机及相关专业的本科生教材,同时也
适用于编程人员参考阅读。
aya极力推荐的书。



Pattern Classification (Second Edition)
http://www.china-pub.com/computers/common/info.asp?id=17198
模式分类 (第2版)

[Richard O. Duda / Peter E. Hart / David G. Stork]

本书的第1版是模式识别领域的奠基性著作。而今,Stork博士又从近年这一领域的最新
成果中精选出重要的内容,对模式识别领域的发展进行了新的总结,并指明了对未来30
年至关重要的问题。本书简明易读,新增的图表使得许多统计和数学题材非常生动,最
终以完美和谐的形式,引导读者深入各种新的主题。



An Introduction to Database Systems (Seventh Edition)
http://www.china-pub.com/computers/common/info.asp?id=693
数据库系统导论 (第7版)

[C. J.Date]

我看过的离散数学等好几本书上都引用了这本书的内容,其影响可见一斑。非常好的书
,适合入门。不知道为什么 china-pub 上面没有影印的,我在学府都买到了。



Database System Concepts (Fourth Edition)
http://www.china-pub.com/computers/common/info.asp?id=6436
数据库系统概念 (第四版)

[Abraham Silberschat / Henry F.Korth / S.Sudarshan]

除了 Operating System Concepts,Silberschat 另外一本非常出名的书就是这个了。
没看过,大家看着办吧。














我现在唯一想的就是能看完上面的书。:)
关于java的
  thinking in java,(美)Bruce Eckel
  Java编程思想(第2版)侯捷译
http://www.china-pub.com/computers/common/info.asp?id=7241

http://www.china-pub.com/search/ ... y1=thinking+in+java

Bruce Eckel 的书一向以经典著称,特别是Thiking in系列,像上面提到的Thinking 
in C++等,TIJ是他转到Java后的著作,本来这是一本他免费发布在网上的,但由于绝
大部分读者的强烈建议,只好出书(可见人气旺);此前的第一版是国内的京京工作室
翻译,被世人贬为垃圾;后来侯先生翻译之后,被誉为经典收藏之作。
这本首先注重的是OOP思想,从Java的基本语法性能展开,他讲的特别的深入,包括
Java特性的方方面面,很全,这正是和一般的书不同。此书可是个大部头,可需要有信
心啊,初学者刚看的时候或许有只见树木不见森林的感觉,但是你要是回头再看完第二
遍,拿就不可同日而语了。一般的建议是三遍以上。
(上交大,水木清华,紫丁香等都强烈推荐)

  Core JAVA 2,6e,Volume I:FundamentalsJAVA 2核心技术(第6版) 卷I:基础知识
http://www.china-pub.com/computers/common/info.asp?id=14354
  Core JAVA 2 Volume 2:Advanced FeaturesJAVA 2核心技术 卷2:高级特性
http://www.china-pub.com/computers/common/info.asp?id=825
(美)Cay S.Horstmann,Gary Cornell (Sun公司核心技术丛书 )
Sun公司核心技术丛书,重要性可见一斑,sun公司的员工人手一册(其中和c++的比拟
比较多)。

由于国内丛书的翻译老是跟不上时代,以上两套书已经出到第N版,但是国内却落后好
几个朝代(影印版除外),所以,有条件的建议看英文版。

http://developer.51cto.com/art/201512/503095.htm
《Spring源码深度解析》
从Paxos到ZooKeeper 分布式一致性原理与实践
《大型网站系统与Java中间件实践》
《大型网站技术架构 核心原理与案例分析》
《深入分析Java Web技术内幕》
《java多线程编程核心技术》
《Java并发编程实战》
《HotSpot实战》
《深入理解Java虚拟机:JVM高级特性与最佳实践》
java_my_life
我的编程生涯里启发我的15本书

《面向模式的软件架构 卷1:模式系统》-pattern oriented software architecture

《领域特定语言》dsl


《代码之美》




《SEO艺术》art of seo




《重来》-rework




《浮现式设计 专业软件开发的演进本质》-emergent design


《实现领域驱动设计》-implementing domain driven design


Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts