个人编程生涯里启发个人15本书

从几百本书中整理出一份书单是一件困难的事,可是从这些书中挑选出对本身影响比较大的书确是一件容易的事。 面试

在是一份迟来的书单,可是并非一份适用于每一个人的书单。这是我在学习编程过程当中看的一些书,启发到个人书,有不少你可能没有听过,也有不少多是你耳熟能详的。之因此说是启发是由于不少说并无那么好,可是我从上面获取到了一些灵感。 算法

高中时期

高中时期,由于想开发游戏的热情才深刻计算机世界。而且高中也是一个至关无聊的时期,除了为高考准备的考试,还有就是上课 编程

《C++游戏开发》

有一些书,你就没有必要去看了,好比这里的第一本书《C++游戏开发》,这本书是我在高中的时候翻了好几遍的书 设计模式

enter image description here

这本书一直在说“C++是一门优雅的语言”,也介绍了不少我在以前编程中不懂的知识点:数组、指针,以及高级点的重载和继承这一些面向对象的知识。这本书在游戏开发方面讲得不是不少,可是当时让我脑洞大开的是——2.5D编程。简单地来讲,就是二张图片叠加在一块儿造成的3D效果。我才意识到固然我玩的不少游戏是这样作出来的。 数组

我那以前我只会写点代码,并不知道一个游戏是如何在操做系统上运行的。在这本书中我学会了代码是如何经过操做系统的API来建立窗口、操做文件、操做声音等等。 微信

其实上面说到的游戏开发的书应该是一整个系列,可是不少书启发性彷佛并不大就不提了。记得还有《Java5 游戏编程》、《网络游戏开发》、《游戏开发核心技术•剧本与角色创造》等等的书。 网络

《3D游戏》

这是一本讲述3D游戏编程的书,实际上说的是如何去造一个游戏引擎。上图: 架构

enter image description here

固然不少内容都看得不是很懂,这本书对个人帮助并非技术自己,而是对于数学的提升和3D空间的理解。高中的知识自己并很少,多的是知识自己衍生出来的试题。换句话说,这样的书和上一本书同样,在咱们遇到瓶颈的时候是颇有帮助的,至关于帮咱们打开了另一片天空。本来咱们觉得世界是这样的,后来咱们意识到了世界并非这样的,世界比咱们想象中的要大。 框架

《Linux内核设计与实现》

这本书并非同上两本是一本启发性的书籍,可是是一本奠基基础的书籍。 学习

enter image description here

出于某种缘由,加之发现一我的很难开发3D游戏。便开始学习游戏底层之下的技术——操做系统。因而很快地就从一个游戏开发爱好者变成了一个Kernel Hacker。不少东西都已经忘了,可是不少东西都记得很清楚。如Linux是一个宏内核,可是借助了微内核的不少思想。在当时的环境下,所谓的多进程是怎么一回事,他们多久切换一次进程等等。

除此,不得不说起的一本书是《Orange'S:一个操做系统的实现》,这本书在当时的映像是很是不错的。可是这本书放在个人家里吃灰尘了~~。

《代码之美》

这本书开启了个人装B史~~,上图

enter image description here

因为这是一本合集,因此书中的大部份内容我没有看懂。可是,这本书让我看到了各类很Diao的代码。不过这并不重要,重要的是我在这本书里面认识了Emacs。这就是为何这本书会上榜的缘由。

enter image description here

这本书中有多篇提到了Emacs,而后我就去试了!!! 这本书中有多篇提到了Emacs,而后我就去试了!!! 这本书中有多篇提到了Emacs,而后我就去试了!!!

大学

大学学的是硬件,因此在软件方面花费的经历并非特别多,成长比较大的是大学最后的学习。

《设计模式》

之因此买这本书的缘由是:不少书中都提到了这本书,强调这本书是多么的重要。而后,我就买了。

enter image description here

当时写的语言基本上就是C、Python还有汇编,因此在当时并不特别懂,后面咱们会继续说到。它给个人感受就是,WOCAO,我当年的C++连入门都算不上。虽然能看懂,可是只知其一;不知其二。主要是当时代码写得并很少,主要是在博览群书。

《领域特定语言》

DSL大法好,DSL大法真的是一个很棒的想法。

enter image description here

它能够用更简洁的语言业表达你的想法。这是很美好的一个想法,若是咱们能够把咱们的业务代码抽象成外部DSL的话,那么咱们就不担忧架构的变动、技术框架的落后。

《SEO艺术》

当你有一篇好的文章,还有一个好的产品,你还须要什么?SEO就是其中一个。

enter image description here

让我意识到一点:事物间的关联性——也就是Page Rank。当时对论文这种东西没啥概念,后来发现这是很是有趣的一个算法。

enter image description here

这个原则不只仅适用于SEO领域,还适用于社交领域、大V经济领域。PR高的网站连接PR高的网站可能没有啥明显的做用,可是对提交PR低的网站特别有用。

《重来》

《重来》彷佛是一本常常被说起的书,好在我也是看过的,还写了几篇相关的文章。

enter image description here

这本书有三点说得很不错,换句话来讲,这三点和我产生了共鸣:

  1. 卖掉代码的副产品。事物间存在的链接属性。
  2. 招聘笔杆子。这个就不用多说了,我写了那么多文章。
  3. 音乐应在你的指尖流淌。好的装备确实能带来一些帮助,但事实是,你的演奏水平是由你本身的手指决定的。

ThoughtWorks面试与实习

大四的时候就开始找工做了,而后我就遇到了ThoughtWorks。面试的时候醒悟到了《重构》能够到《设计模式》,可是光醒悟并无啥卵用,下面这本书是我后来的后来才遇到的。

《重构与模式》

不知道在多少的场合里,我一直在吐槽这本书应该是叫《重构到设计模式》。

enter image description here

虽然并无学到太多的实质性的东西——不少东西都在实习的时候已经学到了。重构和设计模式同样,光一每天作一些智力练习并无啥用。从重构代码到抽象出设计模式,是一种很迷人的体验。

《重构》

这本书虽然看得很早,可是提得很晚的缘由是:主角老是最后才出场的。

enter image description here

在当时我也花了不少时间去识别书中的一些Code Smell,而后去重构。亲手把本身的代码从一坨x变得更易读是一种很棒的体验,你说呢?

《敏捷软件开发》

这又是一本Jolt效率大奖的书,这彷佛也是进入咱们公司应该读的一本书。

enter image description here

这本书结合了敏捷方法、模式和面向对象的一些思想,并提出了SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)这五个基本原则。

工做

《持续交付 发布可靠软件的系统方法》

这倒不是一本对我启发很是大的书,主要是由于这已是咱们的平常工做流程。

enter image description here

若是你先实践了,而后再去看一本书,那么你就不会以为一本是多么的棒。软件自己是一种持续的过程,特别是Web开发来讲。在这一点上来看,几乎全部的互联网公司均可以持续交付软件。可是国内的大部分互联网公司的代码都是没有测试的,而且呈现的是一种几乎有问题的持续交付模式。

《面向模式的软件架构 卷1:模式系统》

做为另一本Jolt效率大奖的书,这本书名副其实。

enter image description here

能从混乱到有序就能够抽象成一种架构模式,书中向咱们展现了各个层面的模式是如何发挥做用的。这本书让我意识到了模式不只仅存在于代码之间,又存在于架构之间,更是能够存在于咱们的平常生活之中。

《实现领域驱动设计》

尽管这本书提到的不少东西我都很了解,我仍是不很是懂这本书。或许只是由于没有链接概念到代码上,让我在有空的时候再细细理解这本书。

enter image description here

虽是如此,可是这本书中提到的六边形架构让我映象深入,又能够称之为“端口和适配器架构”。

enter image description here[+]查看原图

还有CQRS(命令和查询责任分离)架构,这种风格和咱们现有系统的架构是相似的。在咱们系统的架构中,读和写是两个不一样的数据源,我相信这种结构也存在于不少的系统中。

enter image description here

还有我以前提到过的编辑-发布-开发分离也是相似于这种风格的架构。

enter image description here[+]查看原图

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

最后出现的这本书,让我从新理解了软件开发的演进。

enter image description here

浮现式设计这个概念很棒,软件不是一开始就产生的,面向Web开发的软件更是如此。因为业务发现的须要,咱们不可能在一开始想到一切的可能性,咱们只能在业务演进的同时发展咱们的架构。

更多欢迎内容容许关注个人微信公众号:

enter image description here

相关文章
相关标签/搜索