引言
第一次知道刘未鹏这个人,是在读了他博客的一篇文章《数学之美番外篇:平凡而又神奇的贝叶斯方法》。当时只是觉得这篇文章写的很好,作者将一个本身比较晦涩的问题写得深入浅出,对于问题的把控有自己相当独到的理解,而在我看了下作者后,却发现是一个并不知名的人物。直到偶然的机会看到他出的一本书叫《暗时间》,本着评价还不错的情况下就买下来了。书中的每一篇文章都是从作者的博客中原封不动的拿过来的,因此就从书的内容来说并不具备连贯性,甚至在阅读的过程中发现很多相同的例子用了三四次。如果你对这本书比较感兴趣,其实完全可以去作者的个人博客http://mindhacks.cn/上去看。作者更新博客的速度很慢,但是能看出每一篇博文都是花了不少心思去写的。作者虽然程序员出身,却对心理学、思维方法、时间管理方面都有相当深入的研究。书中提到了很多不错的思维方式,但个人认为都太过强调人的主观能动性,作者的确是一个相当勤奋之人,就像有人评价:"84年出生的刘未鹏比很多48年出生人心智都要成熟",可惜,对于绝大多数人来说不现实,但不可否认这本书还是让我感到受益匪浅。
暗时间
什么是暗时间?你走路、买菜、洗脸洗手、坐公交、旅游、逛街、持有、吃饭、睡觉,所有这些时间都是"暗时间",你可以充分利用这些时间进行思考,消化平时看和读的东西。善于利用暗时间的人,可以无形中比别人多出更多更多时间,从而实际意义上比别人多活很多年。衡量一个人活了多少年,应该用思维时间来计算。。就像本书的封面是一个沙漏一样,作者在开篇写道:
我们每个人的生命比作了一个沙漏,里面装的沙子总量是相当的,
不同的是,有些人的沙漏颈部较细,有些人的沙漏颈部较粗。
那些颈部较细的沙漏能够抓住每一粒时间之沙,虽然沙子总量一样,但相对却拥有更长的生命。
如何有效地记忆和学习
我们在解决难题的时候,经常会有这样的感受:有些问题解决不了并不是因为脑海中缺乏某个知识点,而是因为自己偏偏就想不到。因此你所拥有的知识并不取决于你记得多少,而在于它们能否在恰当的时候被回忆起来。正所谓“学以致用,活学活用”就是这个道理。如果我们在记忆的时候将许多线索(例如当时的场景、问题的背景,甚至所处的语言环境、空间位置)一并编码进了记忆,这为以后的回忆提供了更多的提取线索,任何一个线索被触发都可能顺藤摸瓜地拎出整条记忆来。缺乏线索的记忆就像记忆海洋中的孤岛,虽然在那里,但是难以访问。而富含线索的记忆则是罗马,条条大路通罗马。下文是一些具体的实践方法:
1. 养成习惯,经常主动回顾一段时间学到的东西。
2. 创造回忆的机会。
(1) 经常与别人讨论或者讲给别人听
(2) 整理笔记
(3) 书写
3. 设身处地地"虚拟经历"别人经历过的事情。
4. 抽象推广。所谓抽象,抓住问题的本质,剔除无关紧要的细节。
5. 联系/比较自身的经历。
学习习惯
我将一些书中提到的,自身印象比较深刻的做了点总结。
看书挑剔,只看经典。对于我来说,我在买书的时候,都会先去豆瓣、知乎上看评价,事前做足了功夫以后再决定买哪一本,这就跟平时买衣服 一个道理。另外,对于买书的钱不需要心疼。在知识上的投资,带来的回报总是无限大的。---富兰克林
做读书笔记。我以前看过很多书,但是看过基本就忘了,直到后来养成做读书笔记的习惯。很多时候,仅仅是用自己的语言重新表述一下就能够极大地加深印象和理解。二来,也让自己的收获沉淀下来,方便日后翻阅。
重视提前积累的强大力量。就拿编程来说,我发现很多计算机大牛其实从高中就开始接触编程了。你比别人往后多看一年,你就比别人领先一年的时间来准备,这个差距是巨大的。
抓住不变量。还是以计算机专业来说,我见过很多人看到ios热门就去学ios,看到前端热门就去学前端,一旦自己手中的技术过时了,又重新去学新的。很多人感叹跟不上新技术。应对这个问题的办法只能是:抓住不变量。大量的新技术其实只是一层皮,背后的支撑技术其实都是十年来不变的东西。底层只是永远都不过时;算法数据结构永远都不过时;基本的程序设计理论永远都不过时;分析问题和解决问题的能力永远都不过时;强大的学习能力和旺盛的求知欲永远都不过时;大脑的思维方式永远都不过时。
Y Combinator
最后谈一下Y Combinator吧。之前有个同事跟我说可以去关注一下这个东西。在百度上搜了一下,发现是一个国外的创业孵化器,就没在意。上个月,我看了一篇王垠写的文章《怎样写一个解释器》(由于篇幅太长,这里我直接给出链接了,要我写应该也没人家写的好)。看明白之后,自己动手用java语言写了一个schema的解释器。文中也有提到这只是一个相当初级的解释器,针对一些像错误处理、递归都不支持。后来我一直在考虑如何去实现递归,我们知道递归就是调用自身,而lambda表达式本身是没有名字的,就没法在表达式中引用自身。有人说可以像在schema中define一个函数,函数是有名称的,但是要知道函数不过是lambda的一个语法糖,解释器在执行函数的时候还是会将其转化为lambda表达式。
最终这个问题的答案是:根据不动点原理,铸造一个Y Combinator,就得到了我们想要的递归函数。哈哈,是不是没听懂?没关系,至于这个问题详细是怎么解决的,不是我这篇文章要关注的。那为什么要提这个?因为从来没有一个数学问题能像Y Combinator一样对我带来如此大的震撼和反思。除了Y Combinator,还有哥德尔的不完备性定理,图灵的停机问题,乃至著名的罗素悖论,这些深奥的理论都是由一个至为简单而又深刻的数学方法得到的,你将会看到最纯粹的数学之美。有兴趣的读者可以去看原文(康托尔、哥德尔、图灵——永恒的金色对角线),强烈推荐。