博客注册有一段时间了,但是一直没开张。冒着虽然写东西也还是会长草的危险,我还是先贴几个字吧,一方面是好歹给自己一个开始,一方面也是有人想看。其实后者更重要,这个跟我们写代码很像,很多时候你关注一些问题的主要原因并不是解决这个问题能帮帮你挣多少钱,而是除了你之外还有很多人关注这个问题并且愿意跟你讨论这些个问题。也就是说,在这里写东西也是因为除了自己之外还有别人挂住类似的问题, 人毕竟是群居的动物,拿出来点有意思的事情大家讨论讨论生活才显得美好。不过,貌似莫言同志认为:作家应当只为自己的灵魂歌唱。既然我距离作家还有不止十万八千里的距离,以别人愿意看为理由来写点东西,应该还是说的过去的。
既然写是为了读,那就先说说读书。现在读书的人真心已经不多了,且不说当年那些人人语文快九十分的同学们,单单是到了大学就很少有人看到有人在图书馆捧着书看.( 大多数人是去蹭空调和座位的 )。到了办公室之后就更别提了,同事的桌子上除了技术手册就是技术手册,连类似于<linux编程艺术>这样的书都见不到。所以想在办公室充当文学青年那真是要多简单有多简单,且不说拿着红楼梦或者百年孤独,随便带一本《明朝那些事儿》就能让身边的人注意到"你在看书"这件事情的存在。感谢互联网和手机的不懈努力,各种浅层次阅读已经占据了身边人的大多数闲散时间。不过我这会儿不太想扯什么好或者什么不好,我想谈谈我在读书过程中犯的一些错误,以及从错误走出得到的提高,想必对很多人还是很有帮助。
我读的书可以简单的分成两种,技术类和非技术类。后者的阅读相对简单,只要有时间,有精力,一个一个字读就好了。在体验作者的感情和经历中,自己的心会在不知不觉中,被触动甚至是被治愈。关于这一种阅读,我想说的是它比看上去重要的多。 很多人不理解这个事情。觉得要做优秀的程序员要看c++ primer,要看数据结构,要了解操作系统和软件架构。但是如果只了解这些,那最后只能做平庸的程序员。因为程序员说到底实用计算机语言表达自己对于问题解的理解。而文学作品是用人类语言表达自己对于生活的理解。说白了都是用语言表达理解,所谓的高质量程序无非就是对于问题的表达更优美更准确,而优美和准确也同样文学作品的目标。他们在很多时候做的完全是同样的事情。对于文学作品的深入思考,感受和理解与程序设计并没有看上去那么大的距离。文学作品中需要给每个人一个合适的名字,程序设计中不也要想想每个变量到底应该叫什么比较合适么?读书的时候我们看到命运都不是平白无故的走到最后的那个结局的,我们从伪代码开始构造程序的时候,不也是一步一步算出来程序有几个部分,然后给每个部分分一份他自己的职责么?优秀的书和优秀的程序有太多的共通点。垃圾的程序长得也很像垃圾的书,就是看着不仅恶心而且不知道他到底说的是什么意思。所以推荐所有的程序猿们多翻一翻非技术类的书,文学也好,历史也罢,哪怕是中学生必读书目。只要能读进去,收获绝不仅仅是看上去的那么一点点。
对于技术类来说,我更想说说怎么读,先把之前的自己摆出来跟大家看看。往常我要是拿着一本《c programming language》,旁边一定要摆一台电脑。每每在书中看到哪个自己不了解的知识点,就努力在电脑里把它试出来, 然后认认真真的形成一条笔记。抽象的说就是,看两行书,写一段代码,然后做一句笔记。之前这么搞了一段时间,发现效率不是一般的低,虽然看着长长的笔记和满屏的实验代码,非常的有成就感,但是总感觉以这种方式继续下去,我就是再过半年也翻不完那本这本并不是很厚的书。( 毕竟,c++比它厚太多了 )。后来在一本牛书的指导下,我发现自己犯了一个本质性错误( 这本牛书叫做:超级快速阅读,德国人写的 ),看技术类书籍的目的不是做一份优秀的笔记, 也不是写满屏的实验程序。而是搞清楚:这书里说的到底是啥? 做实验和写笔记当然是非常好的手段,但是当把手段当成目的时候。整个过程就变味儿了。因为我发现自己忙于让自己的笔记看上去准确和自己的实验更有说服力上。这么做当然有错,因为在学习的初期自己的理解根本不可能准确,而所谓更有说服力的实验也不是自己在实践过程中体会到的,而是搜索引擎给的结果。所以这么搞半年才读完一本书也是理所应当的。正确的思路是,用最快的方法搞清楚这么本书讲的是什么,总共分几个部分,每个部分之间最基本的关系是什么?人很多人这么做会没有安全感,因为都觉得技术是很细节的事情,不了解每个部分的细节很难对整体有一个很好地把握。其实并且不是如此,之所以会很没有安全感是因为我们从小到大接受到的都是为了考试而准备的学习,而考试最关心的就是你对于细节的记忆和掌握,而在真正面对问题的时候,细节问题由编译器和测试帮你把关,实在什么东西想不起来了也有免费的谷歌做后盾。所以细节是什么样的在最开始一点都不重要。就好像你带一千个人去旅游,每个人早上起床的时候是不是喝水这种问题其实你压根都不会考虑。而是会想把一千个人带到目的地,需要多少车,到了之后需要多少住的地方,以及在整个过程中你能搜刮多少油水。这些才是关键,比如我最近读《linux system programming》,发现那么厚的书分析分析也就是讲三部分东西,进程是嘛?I/O是嘛?剩下的零碎是嘛?然后就没了....所以读所以第一遍我只读整书的简介和每个部分的简介,只要搞清楚了这他们是嘛,书里剩下的部分无非就是讲他们和底层的恩怨情仇而已,而这部分说白了也不过是在什么情况下应该怎么做。于是乎,一个读书的过程就变成了拆书的过程。所以最能读书人一定的是庖丁,让他把书像拆牛一样都拆拆,估计问鼎个图灵奖,压力不大。反过来看我之前方法就很容易发现其的弊端,本来应当先把牛拆成几大快,然后分别处理之。 我是这里撕一块皮,然后哪里抽一根筋,且不说慢,最后好好的一只整牛被我弄得不成样子。
自己最近的感受是:方法和思路还是很重要的。而且生活中也还是有很多可以改进的地方。比方我现在用vim写程序,比方说大黄开始用Less弄他的css。这些看上去很简单,很平淡,而这些最简单的地方往往是最要命的地方,也是我们最容易忽略的地方。
先扯这么多吧,已经半夜了,希望blog不要长草。。。不要长草。。。下次简单的写一写vim除了帮助人们提高效率之外还有那些优点,因为vim以提速著称。同事看我用vim写代码就好比是在砸键盘。但是讲vim技巧的文章似乎都快被写烂了。。。