2013简单回顾

海鸥

马年就这么悄悄地到来了,回家总是满满的幸福,各种好吃的马上补上,虽然有些事情是遗憾的,但是我相信未来是美好的,心怀乐观,总会将自己引入光明之道。

2013年对我来说是重要的一年,经历了很多艰难的事,越发感觉自己能力有限,回首过去5年自己无所作为,无比的懊悔,有些事情总是明白太晚。但是痛楚让自己醒悟了,现在终于知道自己该坚持什么,该放弃什么。我得承认自己能力有限,不要想象自己可以扭转乾坤,需要更脚踏实地的一步步前行。

2013有哪些收获?

说到收获的话可以是从工作中获取的,这里侧重将业余时间自己看了的东西

  • 学习正则表达式
  • 简约之美:软件设计之道
  • HTTP权威指南
  • 测试驱动开发的艺术
  • 你就是极客!软件开发人员生存指南
  • NumPy攻略: Python科学计算与数据分析
  • Scala程序设计:Java虚拟机多核编程实战
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)
  • 智能Web算法
  • Coursrea 上的 Functional Programming Principles in Scala
  • Java多线程设计模式详解
  • Language Implementation Patterns
  • A Little Java, A Few Patterns
  • The Art of Readable Code
  • Programming in scala
  • 自制编程语言
  • 黑客与画家
  • 写给程序员的Web设计书
  • 秩序之美:网页中的网格设计
  • 写给大家看的设计书
  • 产品经理修炼之道
  • 极简欧洲史
  • 你应该懂点投资学
  • 我是个算命先生
  • 大秦帝国

这些书中大部分是在上班的地铁中看完的,爽是很爽,但是发现在摇摆的地铁中看书很影响视力。2014再接再厉,多看书,多扩展见识。

2013做了哪些有成就感的事?

说到最有成就感的事,其一是我开始跑步了,减了5公斤,但是过完春节估计又悲剧了。其二是调整了自己的作息事件,10点半睡、5点半起,原来容易起溃疡的问题也渐渐没了,同时收获了早晨宝贵的学习时间。

2013有哪些重要感悟?

放下小我,拥抱不同

很多时候能让自己坚持做一件事的原因,往往是一个简单的理由,或者说是突然间的领悟或开悟。有时候能够体验到生命中那种思想上微妙的转变,我觉得这是生命的眷顾。能够转变思维,意味着可以用不同的角度看世界,不再拘泥于自己固有井底的世界。

之前可能是觉得世界上的人大多价值观可能不会差太多,但是实际上不是,你和世界上很多人很可能就站在世界的两端。

之前可能觉得别人能够站在自己的角度替自己考虑,但是实际上除了家人,几乎没有人会。

之前可能觉得希望别人能够完全接受自己的砍翻,但是实际上完全没必要,也不可能,因为每个人的历史状态决定了现在的心理状态,几乎不可能让经历不同的人理解自己。

很多时候只要照顾好自己就好,要让每个自己碰到的每个人都开心,几乎不可能。为人处事不要保持善念,不要打破自己的底线就好。

承认自己能力有限没什么不好,这样反而可以让自己放下包袱,尽情体验脑袋里吹起的清风。同样没有必要一定要想方设法让别人完全站在自己这边,保持好平衡就好。

方法论很重要,但不是全部

优秀的木匠,通常有自己称手的工具。对于一个经验丰富的木匠来说,他知道如何雕琢木材可以达到最好的效果,这些“知道”就是他的方法论,来源于长时间的经验总结。而对于程序员来说,虽然从事的是抽象工作,但是和其他行业一样,也是存在一些“经验”可以用来指导日常工作,以便写出更好的程序,更好的完成业务需求。我想,从这个意义上来说,设计模式可以算是一种方法论,它是过去几十年中这个地球上的程序员对开发过程中程序在某些场景下呈现出的固定形态的总结。

方法论固然很好,但是情况变了,就不一定有用了。比如设计模式中的visitor 模式,对于像Java这样没有高阶函数的语言,这个模式有其存在的意义,但是对于具备高阶函数的编程语言来说就不是必要的,我们可以将不同实体的处理逻辑作为参数传入到公用的方法中,这样避免了visitor模式中两次分发。

可见所谓的方法论仍是基于特定的物理条件下的产物,不可迷信。

只缘身在此山中

技术的学习和探索,更像是驾着小舟,在森林中顺流而下。但是由于坐在小舟,眼见之极,只能是河流千转万折的一小段,没有办法预见在下一个弯道后面隐藏的是礁石,或者是一个大瀑布。想象有一只鹰盘旋在我们的上方,它能够看到弯拐后的我们将碰到的险情,这样我们就能在遭到毁灭性的翻船之前提前上岸。用一句简练的诗句来说就是:

不识庐山真面目,只缘身在此山中

因此,眼界很重要。在探索的时候我们需要知道自己所处的位置,避免陷入死胡同,避免再去做别人已经证明的毫无意义的事。

技术无疑是充满诱惑力的,因为发展是如此的迅速,每一年无论是耳边听到的还是眼里看到的,多得数不清。即便新的东西如此之多,但是仍然需要一双慧眼识别有价值的技术,被乱花迷惑了眼睛,反而又会迷失方向。就拿数据库来说,即便现在有如此众多的数据库产品,但是数据库的基石那么多年来革新很少,仍然是新瓶装旧酒。

开阔眼界,同时要学会识别糟粕。

语言不再是极限

人会执着于固有的小世界,往往是因为接触的不够多。在接触Scala之前(这里用Scala作为函数式的代表),我以为世界上的编程语言就是类C一样的风格,无非不就是个别语句的写法不同。但是自从Coursera 上看了 Functional Programming Principles in Scala, 立马否定了之前的认知。学完了课程,我知道了: 哦, 原来程序是可以推导的, 可以证明不同写法的两个程序是等价的。然后我就知道了,编程语言也可以分为不同的范式:命令式和函数式。
也就是从这个时候开始,才知道了Java是一门多么繁杂的语言,真的可以称为“流水线语言”,是的,称为流水线是因为适合大规模生产,就如同工厂的流水线一样。如果想拥有高效的单兵作战能力,Java效率来说还是低了些,现在的话我更喜欢Scala。

2014年要做些什么?

H2数据库源码

2013开了两个事情的头:一是看H2数据库源码, 二是实现简单的JVM编程语言。因此2014希望更加的深入了解数据库和编程语言实现原理。

2013年尝试读完H2数据库的源码,但是到现在还没看完,一方面对数据库原理不熟,另一方面自己急于求成,心气浮躁。H2数据库应该是比较小巧的了,而且是Java写的,这样的话就语言方面来讲门槛又下降些。2014争取把H2数据库的索引和查询部分看完。

自制编程语言

由于自己对于自制编程语言很感兴趣,年底的时候也入手了《自制编程语言》一书,算是迈出第一步,不过我并没有完全按照上面的流程自己去实现,因为书中采用C语言描述,虽然可以了解虚拟机如何实现,不过我还是对实现JVM上的语言更感兴趣,所以也就只将书中的大体思路看了一下,然后就看《Language Implementaion Patterns》 一书了,书中从最简单的词法分析开始,介绍了实现一个语言的过程中会碰到的内容,比如词法分析,语法分析,语义分析(目前也只看到语义分析),这些东西大学时候都学过,不过当时都打酱油了,现在只能惭愧的重来一遍了。 我对自制语言的规划是:

  1. 具备函数功能
  2. 具备变量
  3. 基于JVM

其实更类似脚本语言。研究编程语言是为了更好的理解编程语言的原理,知道自己手上工具的极限。

好了,2014再接再励。


题图: 2014年春节到海埂喂海鸥