计算机—书籍推荐

 

作者:JavaGuide
链接:https://zhuanlan.zhihu.com/p/362738671
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这篇文章的内容其实很早就写了,并且,我也已经同步在了我的 Github 的一个仓库中(仓库内容还在继续完善中),地址: 。对应的 Gitee地址: (Github无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)。

考虑到还未发过类似的文章,所以,今天晚上就来一篇!下面推荐都是我看过并且我觉得值得推荐的书籍。

不过,这些书籍都比较偏理论,只能帮助你建立一个写优秀代码的意识标准。如果你想要编写更高质量的代码、更高质量的软件,还是应该多去看优秀的源码,多去学习优秀的代码实践(比如设计模式、设计原则)

代码整洁之道

《重构》

必看书籍!无需多言。编程书籍领域的瑰宝。

世界顶级、国宝级别的 Martin Fowler 的书籍,可以说是软件开发领域最经典的几本书之一。目前已经出了第二版。

这是一本值得你看很多遍的书籍。

《Clean Code》

《Clean Code》是 Bob 大叔的一本经典著作,强烈建议小伙伴们一定要看看。

Bob 大叔将自己对整洁代码的理解浓缩在了这本书中,真可谓是对后生的一大馈赠。

《代码大全》

其实,《代码大全(第 2 版)》这本书我本身是不太想推荐给大家了。但是,看在它的豆瓣评分这么高的份上,还是拿出来说说吧!

这也是一本非常经典的书籍,第二版对第一版进行了重写。

我简单地浏览过全书的内容,感觉内容总体比较虚,对于大部分程序员的作用其实不大。如果你想要切实地提高自己的代码质量,《Clean Code》和 《编写可读代码的艺术》我觉得都要比《代码大全》这本书更好。

不过,最重要的还是要多看优秀的源码,多学习优秀的代码实践。

《编写可读代码的艺术》

《编写可读代码的艺术》这本书要表达的意思和《Clean Code》很像,你看它俩的目录就可以看出来了。

在我看来,如果你看过 《Clean Code》 的话,就不需要再看这本书了。当然,如果你有时间和精力,也可以快速过一遍。

另外,我这里还要推荐一个叫做 write-readable-code 的仓库。这个仓库的作者免费分享了一系列基于《编写可读代码的艺术》这本书的视频。这一系列视频会基于 Java 语言来教你如何优化咱们的代码。

在实践中学习的效果肯定会更好!推荐小伙伴们都抓紧学起来啊!

《Effective java 》

Java 程序员必看!

又是一本 Java 领域国宝级别的书,非常经典。这本书主要介绍了在 Java 编程中很多极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。这篇文章能够非常实际地帮助你写出更加清晰、健壮和高效的代码。本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。

程序员职业素养

《 The Clean Coder》

《 The Clean Coder》是 Bob 大叔的又一经典著作。

《Clean Code》和《 The Clean Coder》这两本书在国内都翻译为 《代码整洁之道》,我觉得这个翻译还是不够优雅的。

另外,两者的内容差异也很大。《Clean Code》这本书从代码层面来讲解如何提高自己的代码质量。而《The Clean Coder》这本书则是从如何成为一名更优秀的开发者的角度来写的,比如这书会教你如何在自己的领域更专业、如何说不、如何做时间管理、如何处理压力等等。

架构整洁之道

《架构整洁之道》

你没看错,《架构整洁之道》这本书又是 Bob 大叔的经典之作。

这本书我强烈安利!认真读完之后,我保证你对编程本质、编程语言的本质、软件设计、架构设计可以有进一步的认识。

国内的很多书籍和专栏都借鉴了《架构整洁之道》 这本书。毫不夸张地说,《架构整洁之道》就是架构领域最经典的书籍之一。

正如作者说的那样:

如果深入研究计算机编程的本质,我们就会发现这 50 年来,计算机编程基本没有什么大的变化。编程语言稍微进步了一点,工具的质量大大提升了,但是计算机程序的基本构造没有什么变化。
虽然我们有了新的编程语言、新的编程框架、新的编程范式,但是软件架构的规则仍然和 1946 年阿兰·图灵写下第一行机器代码的时候一样。
这本书就是为了把这些永恒不变的软件架构规则展现出来。

项目管理

《人月神话》

这本书主要描述了软件开发的基本定律:一个需要 10 天才能干完的活,不可能让 10 个人在 1 天干完!

看书名的第一眼,感觉不像是技术类的书籍。但是,就是这样一个看似和编程不沾边的书名,却成了编程领域长久相传的经典。

这本书对于现代软件尤其是复杂软件的开发的规范化有深刻的意义。

《领域驱动设计:软件核心复杂性应对之道》

这本领域驱动设计方面的经典之作一直被各种推荐,但是我还来及读。

软件质量其他书籍推荐

  • 《代码的未来》 :这本书的作者是 Ruby 之父松本行弘,算是一本年代比较久远的书籍(13 年出版),不过,还是非常值得一读。这本书的内容主要介绍是编程/编程语言的本质。我个人还是比较喜欢松本行弘的文字风格,并且,你看他的文章也确实能够有所收获。
  • 《深入浅出设计模式》 : 比较有趣的风格,适合设计模式入门。
  • 《软件架构设计:大型网站技术架构与业务架构融合之道》 : 内容非常全面。适合面试前突击一些比较重要的理论知识,也适合拿来扩充/完善自己的技术广度。
  • 《微服务架构设计模式》 :这本书是世界十大软件架构师之一、微服务架构先驱 Chris Richardson 亲笔撰写,豆瓣评分 9.6。示例代码使用 Java 语言和 Spring 框架。帮助你设计、实现、测试和部署基于微服务的应用程序。

最后再推荐两个相关的文档:

 

 

作者:阿里云云栖号
链接:https://www.zhihu.com/question/24518877/answer/145188210
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1、《代码大全》 史蒂夫·迈克康奈尔

推荐数:1684

“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来, 就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。” —— Joel Spolsky
对于新手来说,这本书中的观念有点高阶了。到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。– esac

Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。

无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。

代码大全(第2版))》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。

2、《程序员修炼之道

推荐数:1504

对于那些已经学习过编程机制的程序员来说,这是一本卓越的书。 或许他们还是在校生,但对要自己做什么,还感觉不是很安全。

就像草图和架构之间的差别。虽然你在学校课堂上学到的是画图,你也可以画的很漂亮, 但如果你觉得你不太知道从哪儿下手,如果某人要你独自画一个P2P的音乐交换网络图,那这本书就适合你了。—— Joel

《程序员修炼之道:从小工到专家》内容简介:《程序员修炼之道》由一系列独立的部分组成, 涵盖的主题从个人责任、职业发展,知道用于使代码保持灵活、并且易于改编和复用的各种架构技术, 利用许多富有娱乐性的奇闻轶事、有思想性的例子及有趣的类比, 全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

无论你是初学者,是有经验的程序员,还是软件项目经理,《程序员修炼之道:从小工到专家》都适合你阅读。

3、《计算机程序的构造和解释

推荐数:916

就个人而言,这本书目前为止对我影响醉倒的一本编程书。

《代码大全》、《重构》和《设计模式》这些经典书会教给你高效的工作习惯和交易细节。 其他像《人件集》、《计算机编程心理学》和《人月神话》这些书会深入软件开发的心理层面。 其他书籍则处理算法。这些书都有自己所属的位置。

然而《计算机程序的构造和解释》与这些不同。 这是一本会启发你的书,它会燃起你编写出色程序的热情; 它还将教会你认识并欣赏美; 它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。

其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。

同时,你将会学到其他东西,函数式编程(第三章)、惰性计算、元编程、虚拟机、解释器和编译器。

一些人认为此书不适合新手。 个人认为,虽然我并不完全认同要有一些编程经验才能读此书,但我还是一定推荐给初学者。 毕竟这本书是写给著名的6.001,是麻省理工学院的入门编程课程。 此书或许需要多做努力(尤其你在做练习的时候,你也应当如此),但这个价是对得起这本书的。

4、《C程序设计语言

推荐数:774

这本书简洁易读,会教给你三件事:C 编程语言;如何像程序员一样思考;底层计算模型。 (这对理解“底层”非常重要)—— Nathan

《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强, 适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。

《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的 一本介绍C语言的权威经典著作。 我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。 原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。

人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。

5、《算法导论

推荐数:671

《代码大全》教你如何正确编程; 《人月神话》教你如何正确管理; 《设计模式》教你如何正确设计……

在我看来,代码只是一个工具,并非精髓。 开发软件的主要部分是创建新算法或重新实现现有算法。 其他部分则像重新组装乐高砖块或创建“管理”层。

我依然梦想这样的工作,我的大部分时间(>50%)是在写算法,其他“管理”细节则留给其他人…… —— Ran Biron
  • 经典的算法书,被亚马逊网,《程序员》等评选为2006年最受读者喜爱的十大IT图书之一。
  • 算法领域的标准教材,全球多所知名大学选用
  • MIT名师联手铸就,被誉为“计算机算法的圣经”
  • 编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。

6、《重构:改善既有代码的设计

推荐数:617

《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式, 并给出了何时以及何地应该开始挖掘代码以求改善。 书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。

《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

《重构:改善既有代码的设计》适合软件开发人员、项目管理人员等阅读, 也可作为高等院校计算机及相关专业师生的参考读物。

我想我不得不推荐《重构》:改进现有代码的设计。—— Martin
我必须承认,我最喜欢的编程语录是出自这本书:任何一个傻瓜都能写出计算机能理解的程序, 而优秀的程序员却能写出别人能读得懂的程序。—— Martin Fowler

7、《设计模式

推荐数:617

自1995年出版以来,本书一直名列Amazon和各大书店销售榜前列。 近10年后,本书仍是Addison-Wesley公司2003年最畅销的图书之一。 中文版销售逾4万册。

就我而言,我认为四人帮编著的《设计模式》是一本极为有用的书。 虽然此书并不像其他建议一样有关“元”编程,但它强调封装诸如模式一类的优秀编程技术, 因而鼓励其他人提出新模式和反模式(antipatterns),并运用于编程对话中。—— Chris Jester-Young

8、《人月神话

推荐数:588

在软件领域,很少能有像《人月神话》一样具有深远影响力并且畅销不衰的著作。

Brooks博士为人们管理复杂项目提供了最具洞察力的见解。 既有很多发人深省的观点,又有大量软件工程的实践。 本书内容来自Brooks博士在IBM公司System/360家族和OS/360中的项目管理经验。

该书英文原版一经面世,即引起业内人士的强烈反响,后又译为德、法、日、俄中等多种语言,全球销量数百万册。 确立了其在行业内的经典地位。

9、《计算机程序设计艺术

推荐数:542

《计算机程序设计艺术》系列著作对计算机领域产生了深远的影响。 这一系列堪称一项浩大的工程,自1962年开始编写,计划出版7卷,目前已经出版了4卷。

《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。 目前Knuth正将毕生精力投入到这部史诗性著作的撰写中。

这是高德纳倾注心血写的一本书。—— Peter Coulton

10、《编译原理》(龙书)

推荐数:462

我很奇怪,居然没人提到龙书。(或许已有推荐,我没有看到)。 我从没忘过此书的第一版封面。 此书让我知道了编译器是多么地神奇绝妙。- DB

11、《深入浅出设计模式

推荐数:445

强大的写作阵容。

  • 《Head First设计模式》(中文版) 作者Eric Freeman;
  • ElElisabeth Freeman是作家、讲师和技术顾问。
  • Eric拥有耶鲁大学的计算机科学博士学位,E1isabath拥有耶鲁大学的计算机科学硕士学位。
  • Kathy Sierra(javaranch.com的创始人)FHBert Bates是畅销的HeadFirst系列书籍的创立者,也是Sun公司Java开发员认证考试的开发者。

本书的产品设计应用神经生物学、认知科学,以及学习理论,这使得这本书能够将这些知识深深地印在你的脑海里, 不容易被遗忘。

本书的编写方式采用引导式教学,不直接告诉你该怎么做,而是利用故事当作引子,带领读者思考并想办法解决问题。 解决问题的过程中又会产生一些新的问题,再继续思考、继续解决问题,这样可以加深体会。

作者以大量的生活化故事当背景,例如第1章是鸭子,第2章是气象站,第3章是咖啡店, 书中搭配大量的插图(几乎每一页都有图),所以阅读起来生动有趣,不会感觉到昏昏欲睡。

作者还利用歪歪斜斜的手写字体,增加“现场感”。 精心设计许多爆笑的对白,让学习过程不会太枯燥。 还有模式告白节目,将设计模式拟人化成节目来宾,畅谈其内在的一切。 每一章都有数目不等的测验题。 每章最后有一页要点整理,这也是精华所在,我都是利用这一页做复习。

我知道四人帮的《设计模式》是一本标准书,但倒不如先看看这部大部头,此书更为简易。 一旦你了解了解了基本原则,可以去看四人帮的那本圣经了。- Calanus

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

推荐数:437

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

13、《代码整洁之道

推荐数:329

细节之中自有天地,整洁成就卓越代码

尽管糟糕的代码也能运行,但如果代码不整洁,会使整个开发团队泥足深陷, 写得不好的代码每年都要耗费难以计数的时间和资源。 然而这种情况并非无法避免。

著名软件专家RoberfC.Marlin在《代码整洁之道》中为你呈现出了革命性的视野。 Martin携同ObjectMetltor公司的同事,从他们有关整洁代码的最佳敏捷实践中提炼出软件技艺的价值观, 以飨读者,让你成为更优秀的程序员——只要你着手研读《代码整洁之道》。

阅读《代码整洁之道》需要你做些什么呢?你将阅读代码——大量代码。 《代码整洁之道》促使你思考代码中何谓正确,何谓错误。 更重要的是,《代码整洁之道》将促使你重新评估自己的专业价值观,以及对自己技艺的承诺。

从《代码整洁之道》中可以学到:

  • 好代码和糟糕的代码之间的区别;
  • 如何编写好代码,如何将糟糕的代码转化为好代码;
  • 如何创建好名称、好函数、好对象和好类;
  • 如何格式化代码以实现其可读性的最大化;
  • 如何在不妨碍代码逻辑的前提下充分实现错误处理;
  • 如何进行单元测试和测试驱动开发。
虽然《代码整洁之道》和《代码大全》有很多共同之处,但它有更为简洁更为实际的清晰例子。 – Craig P. Motlin

14、《Effective C++》和《More Effective C++

推荐数:297

在我职业生涯早期,Scott Meyer的《Effective C++》和后续的《More Effective C++》都对我的编程能力有着直接影响。 正如当时的一位朋友所说,这些书缩短你培养编程技能的过程,而其他人可能要花费数年。

去年对我影响最大的一本书是《大教堂与市集》,该书教会我很有关开源开发过程如何运作,和如何处理我代码中的Bug。 – John Channing

15、《编程珠玑

推荐数:282

多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。 正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力, 从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”, 成为世界计算机界名刊《ACM通讯》历史上最受欢迎的专栏, 最终结集为两部不朽的计算机科学经典名著,影响和激励着一代又一代程序员和计算机科学工作者。

本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。

尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – Matt Warren

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

本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作, 而且从涵盖面和深度上都超过了前两部经典。 书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。

作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等), 与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。

书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。 通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。

我认为没有任何一本书能向这本书一样影响了我的编程观点。 它明确地告诉你如何处理其他人的代码,含蓄地教会你避免哪些(以及为什么要避免)。- Wolfbyte
同意。很多开发人员讨论用干净的石板来编写软件。 但我想几乎所有开发人员的某些时候是在吃其他开发人员的狗食。– Bernard Dy

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

这是一本讲述计算机工作原理的书。

不过,你千万不要因为“工作原理”之类的字眼就武断地认为,它是晦涩而难懂的。 作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。 更重要的是,你会因此而获得对计算机工作原理较深刻的理解。 这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。

不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟, 都不妨翻阅一下《编码:隐匿在计算机软硬件背后的语言》,读一读大师的经典作品,必然会有收获。

我推荐Charles Petzold的《编码》。 在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。 – hemil

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

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

19、《Peopleware / 人件集:人性化的软件开发

Demarco 和 Lister 表明,软件开发中的首要问题是人,并非技术。 他们的答案并不简单,只是令人难以置信的成功。 第二版新增加了八章内容。 – Eduardo Molteni

20、《Coders at Work / 编程人生

这是一本访谈笔录,记录了当今最具个人魅力的15位软件先驱的编程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在内的业界传奇人物,为我们讲述了 他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法, 并对诸如应该如何设计软件等长久以来一直困扰很多程序员的问题谈了自己的观点。

一本非常有影响力的书,可以从中学到一些业界顶级人士的经验,了解他们如何思考并工作。 – Jahanzeb Farooq

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

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

22、《Effective Java 中文版

此书第二版教你如何编写漂亮并高效的代码,虽然这是一本Java书,但其中有很多跨语言的理念。 – Marcio Aguiar

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之父,交互设计之父。

本书是基于众多商务案例,讲述如何创建更好的、高客户忠诚度的软件产品和基于软件的高科技产品的书。 本书列举了很多真实可信的实际例子,说明目前在软件产品和基于软件的高科技产品中,普遍存在着“难用”的问题。

作者认为,“难用”问题是由这些产品中存在着的高度“认知摩擦”引起的, 而产生这个问题的根源在于现今软件开发过程中欠缺了一个为用户利益着想的前期“交互设计”阶段。 “难用”的产品不仅损害了用户的利益,最终也将导致企业的失败。

本书通过一些生动的实例,让人信服地讲述了由作者倡导的“目标导向”交互设计方法在解决“难用”问题方面的有效性, 证实了只有改变现有观念,才能有效地在开发过程中引入交互设计,将产品的设计引向成功。

本书虽然是一本面向商务人员而编写的书,但也适合于所有参与软件产品和基于软件的高科技产品开发的专业人士, 以及关心软件行业和高科技行业现状与发展的人士阅读。

他还有另一本中文版著作:《About Face 3 交互设计精髓》

26、《Why’s (Poignant) Guide to Ruby 》

如果你不是程序员,阅读此书可能会很有趣,但如果你已经是个程序员,可能会有点乏味。

27、《Unix编程艺术》

It is useful regardless operating system you use. – J.F. Sebastian
不管你使用什么操作系统,这本书都很有用。 – J.F. Sebastian

28、《高效程序员的45个习惯:敏捷开发修炼之道

45个习惯,分为7个方面:工作态度、学习、软件交付、反馈、编码、调试和协作。

每一个具体的习惯里,一开始提出一个谬论,然后展开分析,之后有正队性地提出正确的做法,并设身处地地讲出了正确做法给你个人的“切身感受”,最后列出几条注意事项,帮助你修正自己的做法(“平衡的艺术”)。

29、《测试驱动开发

前面已经提到的很多书都启发了我,并影响了我,但这本书每位程序员都应该读。 它向我展示了单元测试和TDD的重要性,并让我很快上手。 – Curro
我不关心你的代码有多好或优雅。 如果你没有测试,你或许就如同没有编写代码。 这本书得到的推荐数应该更高些。 人们讨论编写用户喜欢的软件,或既设计出色并健壮的高效代码,但如果你的软件有一堆bug,谈论那些东西毫无意义。– Adam Gent

30、《点石成金:访客至上的网页设计秘笈

可用性设计是Web设计中最重要也是难度最大的一项任务。 《点石成金-访客至上的网页设计秘笈(原书第二版)》作者根据多年从业的经验,剖析用户的心理, 在用户使用的模式、为扫描进行设计、导航设计、主页布局、可用性测试等方面提出了许多独特的观点, 并给出了大量简单、易行的可用性设计的建议。

本书短小精炼,语言轻松诙谐,书中穿插大量色彩丰富的屏幕截图、趣味丛生的卡通插图以及包含大量信息的图表, 使枯燥的设计原理变得平易近人。

本书适合从事Web设计和Web开发的技术人员阅读,特别适合为如何留住访问者而苦恼的网站/网页设计人员阅读。 这是一本关于Web设计原则而不是Web设计技术的书。

本书作者是Web设计专家,具有丰富的实践经验。 他用幽默的语言为你揭示Web设计中重要但却容易被忽视的问题,只需几个小时, 你便能对照书中讲授的设计原则找到网站设计的症结所在,令你的网站焕然一新。

取决于你所追求的目标。 我喜欢《代码大全》是因纯编程,《点石成金》是一本有关UI设计的卓越书籍。 – Justin Standard

 

作者:人民邮电出版社
链接:https://www.zhihu.com/question/24518877/answer/1237226575
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

01 . 程序员必读圣经

——计算机程序设计艺术系列——

作者:[美]Donald E. Knuth

当代最伟大的程序员之一高德纳著作。高德纳老先生从 1963 年开始写作,至今已经跨越半个世纪。这套书原计划出版7卷,已经出版《计算机程序设计艺术 卷1:基本算法》《计算机程序设计艺术 卷2:半数值算法》《计算机程序设计艺术 卷3:排序与查找》《计算机程序设计艺术,卷4A:组合算法》《计算机程序设计艺术:MMIX的增补》。

02 . 程序员之技术初启蒙

——日系“怎样”系列——

《程序是怎样跑起来的》,作者:户根勤:本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容。

《计算机是怎样跑起来的》,作者:矢泽久雄:本书以图配文,以计算机的三大原则为开端、相继介绍了计算机的结构、手工汇编、程序流程、算法、数据结构、面向对象编程、数据库、TCP/IP 网络、数据加密、XML、计算机系统开发以及 SE 的相关知识。

《网络是怎样链接的》,作者:矢泽久雄:本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页的内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。

03 . 程序员网络三件套

——日系图解系列——

《图解HTTP》,作者:上野宣:一本书掌握 HTTP 协议。本书对互联网基盘 HTTP 协议进行了全面系统的介绍。作者由 HTTP 协议的发展史娓娓道来,严谨细致地剖析了 HTTP 协议的结构,列举诸多常见通信场景及实战案例,最后延伸到 Web 安全、最新技术动向等方面。

《图解TCP/IP》,作者:竹下隆史:本书是一本图文并茂的网络管理技术书籍,旨在让广大读者理解 TCP/IP 的基本知识、掌握 TCP/IP 的基本技能。书中讲解了网络基础知识、TCP/IP 基础知识、数据链路、IP 协议、IP 协议相关技术、TCP 与 UDP、路由协议、应用协议、网络安全等内容。

《图解网络硬件》,作者:三轮贤一:详细介绍了计算机网络硬件的相关知识,重点讲述了在实际网络建设工程中真实使用的网络硬件设备及其相关背景知识。

04 . 程序员青春里应该有数学

——日系数学女孩系列——

作者:结城浩

《数学女孩》:以小说的形式展开,重点描述一群年轻人探寻数学中的美。内容涉及数列和数学模型、斐波那契数列、卷积、调和数、泰勒展开、巴塞尔问题、分拆数等,非常适合对数学感兴趣的初高中生以及成人阅读。

《数学女孩2:费马大定理》:作者巧妙地以每一章的概念作为拼图,拼出被称为“世纪谜题”的费马大定理的大概证明。

《数学女孩3:哥德尔不完备定理》:作者巧妙地以每一章的概念作为拼图,拼出与塔斯基的形式语言的真理论、图灵机和判定问题一道被誉为“现代逻辑科学在哲学方面的三大成果”的哥德尔不完备定理的大概证明。

《数学女孩4:随机算法》:以“随机算法”为主题,从纯粹的数学和计算机程序设计两个角度进行讲解。内容涉及概率、期望、线性法则、矩阵、顺序查找算法、二分查找算法、冒泡排序算法等。

05 . 程序员编程所需的数学思维

——程序员的数学系列——

《程序员的数学(第2版)》,作者:结城浩:第一版原版累计销售 18 万册。通过向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。第 2 版还新增了机器学习等内容,解决了程序员编程过程中出现的数学痛点。

《程序员的数学2:概率统计》,作者:平岡和幸,堀玄:涉及随机变量、贝叶斯公式、离散值和连续值的概率分布、协方差矩阵、多元正态分布、估计与检验理论、伪随机数以及概率论的各类应用。

《程序员的数学3:线性代数》,作者:平岡和幸,堀玄 :内容包括向量、矩阵、行列式、矩阵求逆、线性方程、特征值、对角化、Jordan 标准型、特征值算法、LU 分解等。

06 . 最友好的 C 和 Java 入门书

——日系“明解”系列——

作者:柴田望洋

《明解C语言:入门篇》:本书对 C 语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。对于 C 语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。原著在日本广受欢迎,始终位于网上书店 C 语言著作排行榜首位。

《明解C语言:中级篇》:延续了《明解C语言:入门篇》图文并茂、示例丰富、讲解细致的风格,内容包含着很多实用性的技巧,例如随机数的生成、数组的应用方法、字符串和指针、命令行参数、文件处理、接收可变参数的函数的生成方法、存储空间的动态分配与释放,等等。

《明解Java》:通过 258 段代码+284 幅图表,入门 Java 更容易。本书原版系列累计畅销超 100 万册。从 Java 基础知识讲起,循序渐进,直到面向对象编程的内容。书中结合猜数字游戏、猜拳游戏、心算训练等有趣的游戏程序进行讲解,让学习过程完全不枯燥。

07 . SQL 实用教程

——SQL从入门到进阶系列——

《SQL基础教程(第2版)》,作者:MICK:日本知名数据库工程师写给初学者的实用指南!介绍了关系数据库以及用来操作关系数据库的 SQL 语言的使用方法。书中通过大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握 SQL 的基础知识和使用技巧,提高编程能力。

《SQL进阶教程》,作者:MICK:中级进阶数据库工程师的实用 SQL 技能提升指南。全书为两部分,第一部分介绍了 SQL 语言不同寻常的使用技巧,带领读者从 SQL 常见技术;第二部分着重介绍关系数据库的发展史,把实践与理论结合起来,旨在帮助读者加深对关系数据库和 SQL 语言的理解。

《SQL查询》,作者:约翰·L.维斯卡斯:市面上罕有的讲解SQL查询的专著,由从事SQL 方面研究和咨询工作的资深专家编写,重点讲解SQL 查询和数据操作的相关主题,包括关系型数据库和SQL、SQL 基础、多表操作、汇总和分组数据,以及修改数据集等内容,针对编写SQL 查询提供了轻松易懂的逐步指导,并包含上百个带有详细说明的例子。

08 . JavaScript 进阶“小黄书”

——你不知道的 JavaScript 系列——

作者:[美]Kyle Simpson

《你不知道的JavaScript(上卷)》:豆瓣评分 9.4 分,上卷介绍两个主题:“作用域和闭包”以及“this和对象原型”,深入挖掘 JavaScript 语言本质,打通 JavaScript 的任督二脉。

《你不知道的JavaScript(中卷)》:中卷聚焦主题:类型与语法、异步与性能。

《你不知道的JavaScript(下卷)》:全面介绍 JS 中常被人误解和忽视的重要知识点,探索 JS 语言核心概念。下卷介绍 JavaScript 入门知识和对 ES6 及未来发展趋势的展望。

链接:https://zhuanlan.zhihu.com/p/268199124

大学期间,我买了很多书,也看了很多技术书,发现书不在于多,而在于经典。

读经典的书是站在巨人的肩膀上。

所以我在这里列出我认为经典的书,尽量保持少,精简。

推荐大家看书的时候保持 看书、实践、看书.... 这样不断的循环迭代,不要只看书也不要只写代码。理论结合实践才能进步最快!

这是我大学买过看过的一些书。。。毕业的时候大部分都卖了,因为实在是太重了,现在我看书大部分也都是在网上找 PDF,这样一方面是携带方便,我一个电脑就可以随便存几百本书,另一方面是可以方便我快速筛选一些书,如果确实有特别好的书就会去购买纸质版的。

在这里也只推荐我觉得比较好的书,宁缺毋滥。

书单推荐

一、计算机思维

  • 《数学之美》
    • 推荐理由: 吴军博士文笔流畅、干货满满,同时切合实际应用,可以作为计算机科学(尤其是AI领域)的入门读物
  • 《程序员的数学》系列
    • 推荐理由: 程序员需要一定的数学知识,但不是像高数那样,这个系列一共三本,比课本有趣,通俗易懂,而且切合实际应用,良心推荐。第1部讲数学思维,2是概率统计,3是线性代数。
  • 《编码》
    • 推荐理由: 隐匿在计算机背后的语言,这本书不应该叫编码,它更应该叫“Petzold教你造计算机”——作者Charles Petzold创造性的以编码为主题,从电报机和手电筒讲到数字电路,然后利用数字电路中的逻辑门构造出加法器触发器,最后构造出一个完整的存储程序计算机。不要被这些电路概念吓到——编码使用大量形象贴切的类比简化了这些概念,使其成为最精彩最通俗易懂的计算机入门读物。

二、计算机基础

2.1 操作系统

  • 《现代操作系统》
    • 推荐理由: 本书虽然是理论的书,但是里面的一些操作系统算法介绍都挺非常的详细,有关操作系统的各种理论也是非常详实。
  • 《深入理解计算机系统》
    • 推荐理由: 这本书是一本导论型作品,并不单单的讲操作系统,它创造性的把操作系统,体系结构,数字逻辑,以及编译原理这些计算机基础学科知识有机的结合起来,覆盖了指令集体系架构,汇编语言,代码优化,计算机存储体系架构,链接,装载,进程,虚拟内存、文件、网络等这些程序员所需了解的关键计算机系统知识。如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读深入理解计算机系统是最好的方式。
  • 《自己动手写操作系统》
    • 推荐理由:这本书从零开始实现一个 mini 操作系统内核,一步步指导读者用汇编和C语言实现一个可运行的操作系统内核。看完之后可以对操作系统最基本的原理有比较好的理解。
  • 《操作系统真象还原》
    • 推荐理由: 这本书正如其名,带着你从 0 开始实现(还原)一个操作系统,最可贵的是,这本书会将需要的前置知识提前安排章节做讲解,比如汇编、内联汇编,你完全不用担心不会汇编、C语言,在这本书里作者讲的非常的详细,只要跟着做,自己就能写出一个 mini os内核,如果想实现操作系统内核的一定不要错过。

2.2 计算机网络

  • 《网络是怎么连接的》
    • 推荐理由:这本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。可以帮助你理解一个数据包是如何从一台电脑发送到另外一台的。看完这本书你就不会再被面试题 ”浏览器输入一个 url,到显示出来中间经过了哪些“所难倒。
  • 《计算机网络-自顶向下方法》
    • 推荐理由:这本书首创采用自顶向下的方法讲解计算机网络的原理和协议,将网络分层逐一拆解讲解,自顶向下循序渐进,能够帮助读者快速的理解整个网络世界,也经常被各大高校作为计算机网络的教材而使用。
  • 《图解HTTP》
    • 推荐理由:这本书对互联网的基石——HTTP协议进行了全面系统的介绍,详细地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。无论前端还是后端的开发人员都应该掌握HTTP,推荐。

2.3 编译原理

  • 《编译器设计-第二版》
    • 推荐理由:这本书深入剖析现代编译器运用的算法和技术,强调代码优化和代码生成。书中深入分析现代编译器后端所用的算法和技术,重点讨论代码优化和代码生成,详细介绍了用几个编程语言编写的示例等。这本书不像龙书那么偏理论,这本是理论结合实践讲解。
  • 《编译原理》
    • 推荐理由:本书深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,每章都提供了大量的练习和参考文献。被誉为”龙书“

2.4 算法与数据结构

  • 《算法-第四版》
    • 推荐理由: 一直以来,说到算法,大家便推荐《算法导论》,但是真正能看下来的人却比较少。而这本书比算法导论友好得多 ,非常适合初学者,同样内容也是非常详实,涉及到了算法和数据结构的绝大部分知识,强烈推荐。
  • 《算法导论》
    • 推荐理由: 如果推荐算法书不推荐这本的话似乎显得不太专业,原因就不说了,懂得自然懂,这本书偏向理论一点,书中证明比较多,大家可以量力而行,看得下去就看。看不下去就看上面那本 。

三、编程语言学习

C/C++:

  • 《C程序设计语言》
    • 推荐理由:这是一本穿越二十年风雨的经典C语言书籍,它用清晰的语言和简练的代码描述了C语言全貌,是C语言入门和提高的必备案头书~
  • 《C++ primer》
    • 推荐理由: 这是学习C++的必备之书,最新版包含了C++ 11、14、17标准各个方面,是久负盛名的 C++经典教程,这本书包含了C++的方方面面,无论是初学者入门,或是中、高级程序员提升,这本书均为不容置疑的首选。
  • 《C和指针》
    • 推荐理由: 是这本书拯救了我的指针,如果你对指针和动态内存有任何疑惑,看它!就完事了
  • 《C++ primer》
  • 《STL源码解析》
  • 《Effective C++》
  • 《深度探索C++对象模型》
  • 看完上面 四本,C++算入门了,接下来靠你自己去进阶~
  • 网络编程:
    • 《Unix网络编程》
    • 《Linux高性能服务器编程》
    • 《Linux多线程服务端编程》

 

  • Java系:
    • Java 核心技术
    • 《effective java》
    • 《深入理解Java虚拟机》
    • 《Java并发编程实战》

持续更新中。。。

上面的书籍链接:

提取码: b6mw

 

 

 

 

 

有限状态机 方面的书

《Introduction to the Theory of Computation 》即《计算理论导引》Michael Sipser

【说明】推荐这些书,仅仅是因为自己看过后,觉得好。希望对大家有帮助。推荐的原则是可以看懂,并且值得反复看几遍。

【书籍推荐】

1 C语言

(1)《C与指针》

推荐理由:非常基础和经典。虽然叫C与指针,但不全是讲指针。与很多C基础类书籍,如《C Plus Primer》,互补。值得看5遍的书籍。这个类型,还有几本书,如《C++沉思录》(正在看,建议去图书馆借着看,个人感觉不很易懂),建议先去图书馆借着看,感觉好再买。

习题补充解答下载地址:http://download.csdn.net/detail/tandesir/4906463

(2)《C语言接口与实现》

推荐理由:包含了包含了库函数(异常、内存管理、链表、集合、字符串等)的实现方法。

源码下载地址:http://download.csdn.net/detail/tandesir/4976311

(3) 《C嵌入式编程设计模式》

推荐理由:针对嵌入式设计的C语言模式实现。本书的设计模式本身很基础,但可以通过本书了解一些函数指针的框架。建议先去图书馆借着看看。

推荐博客(C设计模式):http://blog.csdn.net/sx_wpc/article/category/1163563,很久没见更新了,期待有新文章

(4) 《测试驱动的嵌入式C语言开发》

推荐理由:测试驱动,对测试感兴趣的可以看一下,本书旨在减小甚至消除编程过程中,产生Bug的情况。

源码下载地址:http://download.csdn.net/detail/tandesir/4977661

(5) 《系统程序员成长计划》

推荐理由:国内的一本书,包含了通用链表、动态数组、栈与队列等的实现,以及内存管理、状态机处理文本等。关键是源码很不错,足见作者的编码功底。想深入了解函数指针用法的朋友可以看一看。

源码下载地址:http://download.csdn.net/detail/tandesir/4869670

 

2 C++

(1) 《C++ Primer》

推荐理由:这本书可以作为工具书,都说很经典,但实际上能坚持完整的看上两遍的人恐怕不多。

(2) 《Effective C++-改善程序设计的55个具体实现》

推荐理由:还没看完,讲的都是修炼C++的武功秘籍。

(3) 《More Effective C++-35个改善编程与设计的方法》

推荐理由:和《Effective C++-改善程序设计的55个具体实现》同样经典。

(4) 《C++ Qt Gui编程》

推荐理由:Qt C++入门经典

(5) 《提高C++性能的编程技术》

推荐理由:部分章节写得不错,如果图书馆有,就不要购买了。

(6) 《设计模式》- 刘伟

推荐理由:虽然是国内的一本书,但可以看出,作者很用心。C++的设计模式。

 

3 Linux及驱动开发

(1) 《Linux设备驱动开发详解》

推荐理由:可以作为设备驱动开发的工具书使用。

(2) 《Linux设备驱动程序》

推荐理由:很经典的著作。还没看完。

(3) 《Linux C程序设计大全》

推荐理由:非常全面的一本书。

 

4 Java

(1) 《重构-改善既有代码的设计》

推荐理由:看了3遍,非常受用。

(2) 《大话设计模式》

推荐理由:重构和设计模式是Java的经典著作。原《设计模式》一书,感觉有些晦涩(但带了一个案例),还是这本书比较好懂。

 

5 HTML5

(1) 《HTML5与CSS3权威指南》

推荐理由:少有的HTML5的好书。

 

6 Shell

(1) 《Linux Shell 脚本攻略》

推荐理由:案例驱动式的书籍。

 

7 PHP

(1) 《PHP设计模式》

推荐理由:代码非常不错。

源码下载地址:http://download.csdn.net/detail/tandesir/4906443

 

8 Verilog HDL

(1) 《Verilog HDL入门》

推荐理由:学FPGA,先学语言。很不错的书。

(2) 其他资料

黑金动力社区: http://www.heijin.org/

《Verilog 那些事儿》

《Nios II那些事儿》

推荐理由:很用心在做自己的教学产品。

 

9 SQL

(1) 《MySQL必知必会》

推荐理由:SQL的畅销书

 

10 Socket编程

(1) 《Windows Sockets网络编程》

推荐理由:WinSocket的经典书籍,介绍详细全面。

(2) 《TCP/IP Sockets编程(C语言实现)》

推荐理由:Linux C实现的sockets编程,书不是很厚,看起来也不会头疼。呵呵

 

 
posted @ 2020-12-24 13:05  北极星!  阅读(554)  评论(0编辑  收藏  举报