春夏秋冬又一年
春夏秋冬,一年又一年。可总有那些岁月,可能是几个月,几天甚至一瞬间,让人刻骨铭心难以忘怀的。2016就是我生命中最难忘的一年,不是几个月、几天或者一瞬间,而是满满的一年。到国外求学,学到自己想要的东西,还度过了三十岁的生日,辛苦忙碌却又非常充实而欣慰的一年。
1.春:飘洋过海去求学
2016最重要的一件事就是:工作了六七年后,又重新回到了校园。本科学习时的种种遗憾,终于有了机会弥补。一整年都在学习拼搏,想要紧紧抓住这弥足珍贵的机会。因为这应该是最后一次在校园学习了。
第一学期是非常艰苦的一学期,初来乍到,生活上一切都要重新适应。而学习上又要与各国同学竞争。每天上课,去图书馆找资料打印论文,回家吃饭写作业,周而复始,有时真想快点过去。每次从图书馆出来,吹吹冷风,呼吸下新鲜空气,放松下心情。回到家,又继续开工。
这样辛苦到底值不值呢?做热爱的事就值。想象中的热爱,就像灌篮高手里,一群热血少年,在最好的年华里为了一个目标而拼搏,这是多么令人向往的一段经历。关于热爱,是一件很私人的事,不是别人来告诉你的。有时做什么事都会有附带的你不喜欢的部分,比如工作有出差、加班、领导开会以及其他编程不相关的事,学习又有竞争和成绩的压力。如果能苦中作乐,我想这就是热爱吧。
2.夏:人到三十古来稀
在这炎炎夏日的悠长假期里,鄙人度过了三十岁的生日。很简单普通的一天,没有什么特别的事情。但心理上还是有了些微妙的变化,虽然不算年龄很大,但在周围同学里还是非常稀少的。想起刚毕业那会,组里的老大哥们总会跟别人这么说:我们组新来了个小伙子。当时青涩的我看着他们,的确就像在看前辈一样,但他们当时也不过二十七八,最大的也就三十。没想到当年的小伙子现在都比当时年龄最大的老大哥还老了,这样想想,感觉周围同学看我可能也是当年我的那种心情。而我看着他们,也回忆起那时的自己。这种感觉很奇妙!
因为不能合法实习,所以整个假期都只能在家做题了。不做不知道,一做吓一跳,差距还是挺大的。周围不少同学的基础都很扎实,也接触过ACM等算法比赛。相比之下,我的基础就太薄弱了,于是就埋头苦练。虽然到现在也不一定能比过谁,但跟最初的自己相比,看到了进步就非常开心。从一开始只会基础的数据结构,到终于了解了一些一直想学的Dynamic Programming,到后来第二学期的巩固又从侧面让我加深了理解,对State Machine、Graph、Logic、Recursion都有了新的认识。不知不觉,回头一望,发现自己已经走了很远~
周围人很多背景都不错,有的能力也非常强,让我相形见绌。但其实这种压力是非常好的,周围的强人牛人就是你的催化剂,如果你能摆好自己的位置,这种环境就能使你破茧重生。毕竟这个年纪来学习,其实已经是种成就,前方参照物很少,唯一要对比的就是自己。杨绛先生的这段百年感言说的非常好:
一个人经过不同程度的锻炼,就获得不同程度的修养、不同程度的效益。好比香料,捣得愈碎,磨得愈细,香得愈浓烈。
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……
我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。
看似很普通的一段话,但细思极恐的触动我的是最后一句:世界是自己的,与他人毫无关系。想象一下在你最后临终闭眼之后,这个世界就不存在了,其实一切都是你想象的或谁制造的幻象,这样想再看这一句话是不是很震撼。即便这个世界很可能还在,只是你不存在了,但你已经不存在了,这个世界又有什么意义。所以对你来说,不管唯物唯心,这世界的的确确只是你自己的,与别人无关。
3.秋:五年弹指一挥间
2016也是笔者开博的第五年。从2011年初开始考虑开始写Blog,最开始用过Google的App Engine(GAE),可以在上面免费建站。于是就学着部署了一套Wordpress,从此就走上了博客之路。渐渐GAE变得不太好用,于是在2011年秋天开始整理迁移,11月就迁移到了CSDN平台。一开始也没当回事,就是整理整理自己备用。没想到这之后,一写就写了五年,期间基本每月都坚持发原创文章。从乱七八糟到用Markdown做漂亮的排版,从浅尝辄止到严谨求证,自己在一点点进步。做一件事养成习惯后就有惯性推着你走,好习惯受益终生!
关于习惯,也思考了一下研究生阶段的收获,在此列举个人觉得最重要的几点,推荐每一位读者进行尝试,尤其是刚开启职业生涯的或遇到了瓶颈的,希望有帮助:
- 读“书”:读书太普通不过了,网上买回来就看呗。但这里要说的是最前沿的书——论文。想要不断获得最好的知识,有这么一个过程:先是国产书,再外文翻译,再影印版。之前笔者就停留在了影印版+国产精品原创书这一阶段。现在则是原版+论文,收获颇多,要想学到最新的知识、把握这一领域的风向,这是一条途径。
- 理论能力:工业与学术的差异很大,但学术中的一些研究方法如果能习得一二那绝对会让你功力大增。具体方法就是:抽象思考建模、像读代码一样读公式、像调试代码一样证明你的理论(从Lemma到Theorem到Collorary)。有句话说的很多:为什么数学公式比代码难度那么多?因为它太精炼了,就像是最高级编程语言写成的一样。读代码以行、段、页甚至文件为单位,但读公式时要以厘米为单位。
还有个重要的老习惯了,就是整理和写作。只有用自己的语言整理了写出来了,才算是真正的理解了。格式排版都是次要的,甚至整理出的文章也是次要的,就像设计时画UML图一样,其实最重要的是通过这个过程帮助你思考,相比之下最终产物有时都可以丢掉了。回首这五年来写过的文章,感觉时间花的很值,一直在坚持着自己制定的路线,由浅入深的学习计算机科学的方方面面。
4.冬:朝闻道,夕死可矣
转眼一年的学习生活就快结束了,真的好快!窗口那棵不知什么树,从枯枝到郁郁葱葱到色彩分明又到枯枝,就这样看着它过了一年。研究生的生活挺艰苦的,学习压力很大,但最快乐的就是悟到了一些东西、甚至醍醐灌顶的感觉,那种畅快难以言喻!收获最大的就是学习到了一些真正的内功:
- 操作系统内核是如何运转的
- 算法的前沿热门知识——随机算法、外存算法和并发算法等
- 图灵机是什么样子,P和NP是怎么回事
- 代码背后的逻辑基础是什么
于是现在看到像CLRS、《Algorithm》里写到XXX with (very) high probability(.whp)、NP和NP-complete时,终于知道是怎么回事了。就从这一点上来说,难道还不够满足吗?
有天偶然看到了一个帖子,说少活几十年让你一下子得到全宇宙背后的知识和奥秘你是否愿意?最好的回答当然就是这句话:朝闻道,夕死可矣。真的太精辟了,人活一世能够学到点东西,明白点道理,如果每天都能这样,随时结束终止都不会可惜。出此言者让人敬佩得五体投地!
5.结束语:一切皆空又如何
最后也来谈谈人生观、世界观。表面上,作为程序员,坐在电脑前,敲敲打打。可你不想知道你在编码时究竟是在做什么吗?活着就是要探究世界背后的“真相”。可能许多人并不认同这种人生观,细想一下,这种差异背后的可能有两个大观念在影响着:人生如梦,到头来都是一场空;还有下面这段话说的太对了。
这很正常,每个人都有自己的选择。谁都会有累的那一天,梦碎的那一天,放弃的那一天。而且是非成败转头空。那尽力而为的意义何在?今年暑假时读完了《三体》和《上帝掷色子吗》两本书,非常震撼。当人类想要留下一些东西时却发现:在永恒的时间面前,一切方法都显得苍白无力。硬盘?CD?书籍?在几乎永无尽头的时间面前,可能刻在石头上这种最原始的方法却成了最长久的。如此想来,不免悲观。我想,尽力而为的意义就是体验活着的快感,哪怕多少年后无人知晓,哪怕其实整个宇宙只是高等文明的培养皿,哪怕我们只是骇客帝国里那样的人体电池。但感受到了做成一件事的满足感,一切皆空又如何!
忘记在哪看到的一段话,以此来勉励自己,认识你自己,然后继续努力:
世上绝大部分人都是平庸的,都承载不了年少时疯狂壮阔的梦想,都在世界面前渺小而无助。很多人能认清,但很少有人认清之后,以正确的方式,继续追逐。