# Table of Contents
1. [分享最近阅读的书藉清单(三)](#org35c5689)
1. [Category Theory for Programmers](#org871da17)
2. [The Practice of Programming](#orgca75979)
3. [Introduction to Game Programming (C++)](#org733cafe)
4. [Javascript For Impatient Programmers](#org515b9fc)
5. [Deep JavaScript](#org9fd200f)
6. [The Art of PostgreSQL](#org45d4a41)
7. [The Passionate Programmer: Creating a Remarkable Career in Software Development](#org9705293)
8. [Remote: Office Not Required](#orgae3528f)
9. [The Clean Coder:A Code of Conduct for Professional Programmers](#org059bf89)
10. [Learn C++](#org3d26c49)
2. [写在后面](#org06de4ff)
<a id="org35c5689"></a>
# 分享最近阅读的书藉清单(三)
> 一个经常阅读的人在他死之前已经活了上千次了……一个从不阅读的人只活了一次。
>
> –乔治·R·R·马丁
> 一个人与另一个人交流的最佳方式是通过故事。
>
> –唐纳德·高德纳
这些都是在行业中的好书藉或好内容,我想把这些优秀的东西分享出来,并赋上自己的一些主观想法,
能让更多人知道并从中受益。这里只是做一个引荐,精彩需要你自己亲自拜读从中感受。
<a id="org871da17"></a>
## Category Theory for Programmers<sup><a id="fnr.1" class="footref" href="#fn.1">1</a></sup>
写给程序员的范畴论
> 简单并不是先于复杂,而是紧随其后。
>
> –艾伦·佩利斯
- 我的结论
这本书有一个配套课程<sup><a id="fnr.2" class="footref" href="#fn.2">2</a></sup>。范畴论(英语:Category theory )是[数学](
https://zh.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6 )的一门学科,以抽象的方法处理数学概念,将这些概念形式化成一组组的“物件”及[“态射”](
https://zh.wikipedia.org/wiki/%E6%80%81%E5%B0%84 )。<sup><a id="fnr.3" class="footref" href="#fn.3">3</a></sup>
范畴论运用最广是在 Haskell 这个语言中,而 Bartosz Milewski 写了这本书把它推广开来。计算机行业每过几年会出现一些新的概念,例如面向对象编程,函数式编程到
范畴论,总能给自己一些新鲜感,他能如何影响到我,如何影响行业,以至于是否会影响到世界,可能很难得知;我自己之前很看好前端,但当我有一定积累之后,前端的人才
也越来越多了,失去了一定的议价能力。我不清楚范畴论这个概念是否会影响编程界,因为每年都有好多新的概念冒出来,例如这几年的 WebAssamble ,Container ,No-Code,
语言更是数不胜数了,范畴论是否值得去学习认识下,但是不管怎样,接受新事物,认识新事特,学习新事物也是这个行业的一部份。
<a id="orgca75979"></a>
## The Practice of Programming<sup><a id="fnr.4" class="footref" href="#fn.4">4</a></sup>
程序设计实践
> 如果人类能从历史中吸取教训,它会给我们什么教训!但是激情和党派别蒙蔽了我们的双眼,经验所发出的光是茎上的一盏灯,只照亮我们身后的海浪!
>
> –塞缪尔·泰勒·柯勒律治《回忆》
- 我的结论
当我们有一些想法,或者做一些事情的时候,总希望能做的更好;编程也一样:我是否为一个可能错误的算法花了太多时间;我使用的数据结构是否过于复杂了;
测试一个程序但错过了一个明显的问题;花了一天时间找到的 BUG 可能留心点 5 分钟就能找到了;需要一个程序速度提升 3 倍并减少内存的使用…。
跟理论不同的是这些很难从书本中习得,只能通过实践不断积累;而初学者的代码总是充满了僵硬的语法和无全局观,本书从三个准则讲述如何写好一个软件:
1.简单性,保持程序的简短和可管理; 2.清晰性,代码是通俗易懂的; 3.通用性,尽可能让代码能在更多不同环境中运行,这些都是基于多年的实践经验和大型
软件的维护。虽然不管是什么都不可能做到完美,或者说能达到一个标准就可以了,而编程中的完美标准就是那三个准则,本书围绕三个准则具体在语法风格,
算法数据结构,设计,API ,Debug ,测试,性能,移植等中实践,使你尽量能在脱离了特定语言,操作系统和编程范式上实现代码的最大优化。
<a id="org733cafe"></a>
## Introduction to Game Programming (C++)<sup><a id="fnr.5" class="footref" href="#fn.5">5</a></sup>
游戏编程介绍( C++)
> 这就是重点:不是为了卖东西;也不是随潮流;而是因为热爱一些东西;做一些我们创作者喜欢的东西,这是我们在制作游戏时应该有的核心感觉。
>
> –茂る 宮本, 谈及宝可梦的创造
- 我的结论
这是免费的游戏编程公开课。游戏被称为第九艺术,他能让你体验在现实中不可能的完成的事,更是让你沉浸在其中,大有取代其他所有娱乐方式之势。他有美妙的音乐、
有引人入胜的剧情,有切身体验的交互,有志同道合的朋友…。但是如果你想创造自己的乐园,想让更多人体验你创造的世界,那游戏将是你最好的选择;而本公开课就是
游戏编程入门,他主要是实现你的创意,至于是什么创意不是本课的内容。而这门课给我最大的感受是老师的讲课非常标准,让我这个英语初学者都能听的懂,即便内容不
是非常深入,但是听的懂,听的舒服有时候比什么都重要,因为听课原本就是枯燥无味的。本门课用到的编程语言是 C++,而游戏编程运用最普遍的语言也是 C++,但是也
只是介绍了个基础内容,更加具体的学习可以到[Learn C++](
https://www.learncpp.com/ )和[cpp refernce](
https://en.cppreference.com/w/ ),[cplusplus](
http://cplusplus.com )等。
<a id="org515b9fc"></a>
## Javascript For Impatient Programmers<sup><a id="fnr.6" class="footref" href="#fn.6">6</a></sup>
写给不耐烦程序员的 JavaScript
> 要是咱们,得罪了请原谅。
>
> 咱们本来是,一片的好意,
>
> 想要显一显。薄薄的伎俩,
>
> 那才是咱们原来的本意。
>
> –威廉·莎士比亚,仲夏夜之梦
- 我的结论
不知道是因为 JavaScript 过于流行还是因为我自己本身就是从 JavaScript 入行的,目前我的榜单上单是 JavaScript 入门书籍就已经有三本了,
一本是[《权威指南》](
https://book.douban.com/subject/10549733/ ),另一本是[《雄辩的 JavaScript 》](
https://tiglapiles.github.io/article/src/recent_reading.html #org5a9d340),还有就是现在这一本;要我说这三本有什么需别,可能就是权威指南偏向于纯前端的技术,
有涉及前端的方方面面;雄辩的 JS 偏向于基于 JS 的软件设计,而这本聚焦于语言本身,以及之后便于对语言的深挖,选择哪本根据个人需求。至于
为什么是叫写给不耐烦程序员那是因为本书可以让你快速开始 JavaScript 其他更深的章节可以有空再看。
<a id="org9fd200f"></a>
## Deep JavaScript<sup><a id="fnr.7" class="footref" href="#fn.7">7</a></sup>
深入 JavaScript
> 实践并不能成就完美。只有完美的实践才能成就完美。
>
> –文斯·隆巴迪
- 我的结论
本书适合有一定 JavaScript 基础或经验的人,希望更加了解这门语言;例如对象的完全克隆,对象属性保护,元编程等,以及最新的 ECMAScript 标准。
<a id="org45d4a41"></a>
## The Art of PostgreSQL<sup><a id="fnr.8" class="footref" href="#fn.8">8</a></sup>
PostgreSQL 的艺术
> 数据占主导地位。 如果您选择了正确的数据结构并将事物组织得井井有条,那么算法几乎总是不言而喻的。数据结构而不是算法才是编程的核心。
>
> –罗布·派克
- 我的结论
Postgresql 是我很钟意的一个数据库,我自己的理想是小型开发用 SQLite ,中型开发用 mongodb,大型开发,推荐算法,AI 等开发用 Postgresql 。
软件开发数据有多重要数据库就有多重要,而 PostgreSQL 给我的感觉是有点复杂比较难驾驭,或许犹如书名,使用 PostgreSQL 是艺术,需要常年
不断积累与练习。至于 PostgreSQL 的使用官方的文档已经非常好了,也很难做的比文档好了,所以本书重点不在使用,而在更好的使用,
更好的设计你的数据库。
<a id="org9705293"></a>
## The Passionate Programmer: Creating a Remarkable Career in Software Development<sup><a id="fnr.9" class="footref" href="#fn.9">9</a></sup>
我编程,我快乐: 程序员职业规划之道
> 在我们的文化中,听从父母的建议是一件神圣的事情。它被视为孩子的职责,并与履行自己的宗教职责一样被视为正确的事情。
> 书籍、电影和电视情节都以听取父母的智慧作为一种美德。但对于我们这个 IT 行业来说,这种美德是错误的。
>
> –文中摘要
- 我的结论
这本书的灵感来源于[《程序员修炼之道-从小工到专家》](
https://tiglapiles.github.io/article/src/recent_reading.html #orgc607b75)。如果修炼之道是对这个职业的一个总览,那规划之道是对这个职业的具体实施规划。
就像修炼之道提到的:我们构建自己的生活,当你规划好自己的路线之后,后面不管是公司还是职位都应该为自己的路线让道。不管你是打工还是独立开发,
都需要一条正确道路和建议,少一点挫败多一些成功。选择你的技术和商业领域;投资你的产品,仅仅会 Java 已经是不够了,你可能需要其他的技术;
执行力;和市场这是本书的四大重点。我自己也曾经设想:一个好点子加上执行力把产品创造出来应该就能成功,关于这方面有一个专门的公开课(后面会讲到),
但是怱略了市场,因为如果没人知道你的产品,那有好点子也很难成功。当然这里概括的四个重点,很难说明什么,具体的详细实施方法在重点下的章节有说明。
例如第一章:领导还是血亏,根椐目前的市场,列举一份表单,分别是适合在早期,中期,晚期使用的技术,从左到右,左边是最新的技术,
右边是公布的技术;然后标注出哪些是你熟练的技术哪些是你不熟练的,以此定位出自己的位置。
<a id="orgae3528f"></a>
## Remote: Office Not Required<sup><a id="fnr.10" class="footref" href="#fn.10">10</a></sup>
远程工作
> 未来已经到来——只是还没有平均的发散出去。
>
> ——威廉·吉布森
- 我的结论
有时候面对变革并没有那么困难,我们需要做的只是改变自已的观念; 对于工作他并不是你的束缚,相反他是你活着的证明。
工作不是大家聚在一个办公室群策群力解决问题,而是我们在问题面前每个人发挥自已的专业能力去解决他。首先要生活的
有意义,你就要有能力在闲暇之于去做一些事情。而我们做事情不一定要在固定的场所,可以是任何能高效发挥你能力的地方,
这便有了远程工作。你可以在家里,在咖啡厅;或者是正在旅行的酒店里,房车里,野外等。美国从 2005 年至 2011 年远程
工作人数飙升 73%达到 3 百万人,也就是说远程工作已经是一种举手投足间的常态了;或许你已经生活在其中了,或许你早有
所闻了,又或许你可能刚意识到这个现象;这本书就是关于远程工作的一本书,他告诉你远程工作的好处和解决其中的困难,
他让你对工作有重新的认识。
<a id="org059bf89"></a>
## The Clean Coder:A Code of Conduct for Professional Programmers<sup><a id="fnr.11" class="footref" href="#fn.11">11</a></sup>
代码整洁之道: 程序员的职业素养
> “哦笑吧,老男孩科廷。这是主对我们开的一个很好的玩笑,也或者是命运,或者自然开的,由你喜欢吧。但是无论是谁,无论是什么,
> 玩它的人肯定很有幽默感哈!”
>
> –霍华德,《马德雷山脉的宝藏 7 》
- 我的结论
你是否想成为专业的软件开发人员,就像我一样,在没有进入这个行业之前,对程序员充满敬意和想象,想象自己通过技术改变世界;
可在进入这个行业之后各种的挫折和打击,经历过狼性文化,经历过加班,经历过被辞退被降薪被算计,经历过破产…。到最后都没办法
好好坐下来写自己的代码,结果是现在对这个行业非常失望已经对所谓的公司失去了信心。我在想当时如果有个人能指导下或许会不一
样,但是这个社会功利性太强,身边碰不到这样的人,不寄希望于人性,于是寻找经典的书籍和有用的知识指导自己的方向。本书作
者也做过软件开发,也经历过职场,做过 CEO ,他来告诉你如何成为专业的开发人员,如何提升自己的职业素养。他讲了很多故事,都是
程序员会碰到的情况,例如第一章敬业精神:如何让自己更专业首先就是要负起责任,讲了一个自己在 Teradyne 公司的经历;
然后后面章节是要会说不,要会说是,编码中的事项等。都是一些中肯且有意义的建议,能让你迈向专业的路平坦些。
<a id="org3d26c49"></a>
## Learn C++<sup><a id="fnr.12" class="footref" href="#fn.12">12</a></sup>
C++学习
> 请记住,程序老兵永远不死——他们只是超出了作用域。
>
> –Alex
- 我的结论
三人行则必有我师,网络时代有一技之长都可以成为老师;我只恨自己没有在更早时看到这个资源,以至于让我感慨自己在
学校花的如此多的时间和金钱简直就是一种浪费。他是由个人编写,发布在网站上的 C++初学者学习课程,靠着网页浏览量
的广告收入来维持网站的运转,他的授课如此优秀,相比现实中的老师是有过之而无不及:他浅显易懂,在我的印象中 C++
是一门抽象的语言,但是他的讲解简短,一章一个知识点,每一个知识点很有趣,总能让我对下一章充满兴趣;循序渐近,
他的每一章的编排也是互相关联慢慢增加你的知识的,跟现在许多优秀的入门教材一样,特别是在技术行业,你能很快的看
到自己努力的成果;接地气,没有专业的术语,没有深奥的理论,没有故作深沉,有的只是一个朋友侃侃而谈;
免费,无门槛,有解答,他是免费的可全网查看的资源,没有设置任何的门槛,他只希望你不要对他的网站广告拦截,
因为那是维持网站的收入来源,并且他也会解答一些在评论中的问题。或许所谓的网络时代就是只要我们肯努力,
都能找到最好的资源来指导自已前进的方向,这也是这个行业的优势,我们总是乐于毫无保留的分享自己的知识和成果。
<a id="org06de4ff"></a>
# 写在后面
1. [分享最近阅读的书籍清单(一)](
https://tiglapiles.github.io/article/src/recent_reading.html )
2. [分享最近阅读的书籍清单(二)](
https://tiglapiles.github.io/article/src/recent_reading2.zh.html )
3. [本文地址](
https://tiglapiles.github.io/article/src/recent_reading3.zh.html )
4. 更多文章欢迎访问我的[github 仓库](
https://github.com/tiglapiles/article )
5. 捐助我的[游戏](
https://itch.io/profile/tiglapiles ),支持我的创作
6. 转载请注明出处
7. [社区更新地址](
https://www.v2ex.com/t/805027 )
8. 邮箱: tiglapiles@gmail.com
# Footnotes
<sup><a id="fn.1" href="#fnr.1">1</a></sup> <
https://github.com/hmemcpy/milewski-ctfp-pdf >
<sup><a id="fn.2" href="#fnr.2">2</a></sup> <
http://brendanfong.com/programmingcats.html >
<sup><a id="fn.3" href="#fnr.3">3</a></sup> <
https://zh.wikipedia.org/zh-hans/%E8%8C%83%E7%95%B4%E8%AE%BA >
<sup><a id="fn.4" href="#fnr.4">4</a></sup> <
http://brendanfong.com/programmingcats.html >
<sup><a id="fn.5" href="#fnr.5">5</a></sup> <
http://www.cs.mun.ca/ ~dchurchill/teaching.shtml>
<sup><a id="fn.6" href="#fnr.6">6</a></sup> <
https://exploringjs.com/impatient-js/toc.html >
<sup><a id="fn.7" href="#fnr.7">7</a></sup> <
https://exploringjs.com/deep-js/toc.html >
<sup><a id="fn.8" href="#fnr.8">8</a></sup> <
https://theartofpostgresql.com/ >
<sup><a id="fn.9" href="#fnr.9">9</a></sup> <
https://book.douban.com/subject/4923179/ >
<sup><a id="fn.10" href="#fnr.10">10</a></sup> <
https://book.douban.com/subject/21362627/ >
<sup><a id="fn.11" href="#fnr.11">11</a></sup> <
https://book.douban.com/subject/11614538/ >
<sup><a id="fn.12" href="#fnr.12">12</a></sup> <
https://www.learncpp.com/ >