2017关键词:技术、专注、深入思考、有效积累。2017年1月1号,花了一整天时间,读了一本很薄的书《程序员的数学》。这本书,是一次偶然的机会,在google上面看到的,扫了一眼目录,觉得可以一读,于是,就读完了。
回顾2016年,读了一些书,各式各样的,《明朝那些事儿》、《失控》、《自私的基因》、《少有人走的路》、《自卑与超越》、《金融的解释》、《上帝掷骰子吗》、《乌合之众》、《国富论》,这几本是全部读完的,还有一些没有读完,我读书有一个习惯,想到什么,有什么疑问了,就去找一些书籍去读,可能是对多线程编程的喜欢,读书中,我也是几本书一起读,想读哪本就看哪本,没有什么能比自己的感受更了解自己的了,做自己的朋友,一定没有坏处。kindle是我2016的陪伴,它将和编程长期与我为伴。
在2016年的最后3个月,很清晰的意识到,我目前最需要的东西,是对技术深刻的了解,知其然并且知其所以然。我此生最大的梦想就是当一个杰出的系统架构师,这虽然离我还很遥远,但这个路,是我坚信的,我一定会坚持,找到对的方法,持之以恒,保持专注。
《程序员的数学》这本书,对于一个经历过正规的本科教育的读者,理解起来是相对容易的,虽然说的是数学知识,但,描述的方式非常生动,图文并茂,借助一些经典的问题,讲述一些观念。书中,给我留下最深印象的是,那些我们理所当然认为是对的东西,其本质是严密的数学推理。比如说一个简单的求a[n]和的C语言代码,这段简单的代码,实际上包含了一个完整的数学归纳法思想。这样的for循环写多了,我会在思维中,理所当然的认为,就该这么写,而忘记了为什么应该是这样,这为什么是对的。就像为什么9后面一个正整数是10呢?
int getSum(int a[], int n){
int sun = 0;
for(int i = 0; i < n; i++)
sum = sum + a[i];
}
写了大概有6年多的代码,对工程实现的模块划分,松散耦合,有了一定的深入思考,读了这本书,结合了知乎、CSDN、GitHub等优秀的代码,及牛人总结。我意识到,隐藏在代码后面的,并不是编程的方式,不是使用了哪门语言,不是重构迭代实现的优美,而其本质上是思考问题的方式,我们如何从一个问题出发,如何通过有效的思维,得到解决方法,而解决这些东西的本质,是抽象,是数学,是架构。对我们编程影响很大的,是对数据结构的思考,不管是系统架构,还是模块实现,甚至是一个小规模的函数,其本质是一个数据结构,这和我们遇到的数组、链表、树、图这些常用的编程中的结构有些不同,它更加趋向于宏观,趋向于整体。
小时候电视剧上,张三丰教张无忌太极之道时,讲究个“忘“字,实际上,这不正好是,隐藏在深处的哲学吗。我们要想在思维上超越普通,需要把那些普通的,自以为理所当然的东西,真正理解,才能达到乔峰施展的太祖长拳依然有降龙十八掌的威力(这里借用工作中,同事经常讲起的一句话)。
读了这本书,让我明白了,基础的重要性,比如10的0次方等于1,它要怎么理解,知道答案有时很容易,理解答案后面的道理才显得格外重要。比如刷leetcode,看到答案很容易理解,但是答案后面的思维方式才是我们真正应该去深思的东西。
2017,《TCP/IP》重读,《计算机网络基础》重读,《算法与应用》重读...
2017要给代码穿上严密的思维外衣。带有批判意思的独立思考,2017程序员加油!