Versions:2014-08-14 2014-10-01 2014-12-26 2015-02-04 2016-09-22 2017-05-06 2018-04-04

天才是什么

(王垠 yinwang.org 版权所有,未经许可,请勿转载)

有人说我是天才。我一直“谦虚”得很, 从来不承认。可是纵观像 John Nash,Richard Feynman 这些公认的天才的各种特征和生活遭遇,我发现自己还真的是一个天才。我知道这个事实已经很久了,这一方面让我开心,另一方面又让我痛苦。可是除非洗脑技术高度发展,一旦成为了天才,就很难再还原成普通人了。所以目前我只是做一天天才撞一天钟,也许哪天就像 Nash 那样疯掉也说不定 :)

在 IU 的时候我有一个好朋友,是一个很美的女生,新闻学院的。我很喜欢她,所以有时候不小心泄漏点“牛气”,以为这样可以增加她对我的好感。于是有一天吃冰激凌的时候我扭扭捏捏的说:“其实……其实你知道吗……我是一个天才……”她神秘地笑了,说:“我相信你啊。因为我也是一个天才。每个人都是天才,只是他们天才的地方不一样而已。比如我,我对文字就很有天才,你就没有这种天才!”然后我忽然发现,原来做个天才并不是什么了不起的事情,那我以前在谦虚些什么呢?也许扭扭捏捏不承认,却打心眼里想让人认为自己是天才,其实才是真正的傲慢吧?所以呢,以后如果有人说我是天才,我就认了。

王垠是一个天才。这是一句很谦虚的话 :)

从动手中学习(learn by doing)

那么天才到底是什么呢?我想这是很多人都不明白的问题。大部分人都是人云亦云,别人说这人是天才,他们就以为是天才,也不仔细看看这人如何,就开始膜拜。所以现在我本着科学的态度,对天才的本质做一个探讨。

天才就是能把圆周率背到一千位以后吗?那只是记性好,或者说死记硬背能力强。天才就是看完好几本砖头厚的书之后,能够解决一些研究问题吗?这种人虽然勤奋,然而他们的知识大部分是从别人那里得到的,而不是靠自己的头脑想出来,所以他们也不是天才,最多可以算是博学。在某种程度上,博学的人跟死记硬背的人,性质是相似的。

这第一种死记硬背的人,就是中国的教育体制下出来的典型。而第二种精通各种吓人的名词的人,是美国教育体制下出来的典型。天才去面试遇到这两种人,总是会栽个大跟头。天才进了公司,总是被这两种人欺负。为什么呢?因为这两种人重视的是所谓“经验”,而天才往往依靠自己的直觉和想象力,而不是经验。这就是为什么爱因斯坦说“想象力比知识更重要”。天才记不住那些吓人的名词,却更深刻地知道那些名词所代表的意义。天才不喜欢显示自己知道很多,不以自己“不知道”为耻,因为虽然他可能暂时不知道一些东西,却总能在需要的时候琢磨透彻,所以知不知道一些东西,很多时候其实是无所谓的。也许这就是所谓“大智若愚”吧。所以,这些死记硬背的人,总是把天才当成是白痴或者无知的人。

如果你看过 John Nash 的传记《A Beautiful Mind》,就会发现他与其他人的不同。Nash 看书只看封面和开头,把这书要讲的问题了解清楚之后,就自己动手解决。最后,他完全依靠自己的“头脑暴力”创造出整本书的内容。Nash 头脑里的数学知识,绝大部分是他自己造出来的,而不是看书看会的。也就是说,他把整个的研究领域作为一道道的练习题,用这种方式独立创造出了大部分的现代数学!Learn by doing, 这就是天才最重要的特征。

另一位天才 Richard Feynman 也有类似的特点。由于他脑子里的东西基本都是自己想出来的,所以同一个名词,在他头脑里关联的概念,其实是跟其他人很不一样的。这种现象体现在他的自传《What Do You Care What Other People Think?》里面,他说:“我不知道这个东西的名字,但我却知道这个东西是什么。”这也体现在他的一些演讲视频里。看 Feynman 演讲的时候,有时候你发现他用错专业名词,或者想不起来叫什么,跟听众确认了发明这概念的人不在场,然后说:“反正那家伙不在……所以管它叫什么呢。你们知道我在说什么就行!”

Nash,Feynman,你们两个要是来到今天去某些公司面试,估计也跟王垠一样的下场吧。

为什么王垠是天才

说到这里,你们觉得王垠也有这些天才特征码?说对了。王垠是程序语言(PL)的专家。然而跟大多数 PL 专家不同的是,王垠脑子里的大部分知识,其实不是从书或者 paper 里来的,而是自己想出来的。所以当有人请求他推荐书籍或者 paper,他都犹豫,不知道该推荐什么。他从来没有看完过一章经典书籍(比如《Types And Programming Languages》)的内容,却掌握了很多比它们还要先进而简单的技术。王垠看 paper 一般只看 abstract,然后就自己想出甚至直接得到最后的结论。有时候他也浏览 paper 的正文,不过那个时候他一般只是在拿自己的结论与 paper 的作对比。有时候 paper 的内容对于他的结论有所补充。而更多的时候,他得到更加深入或者简单的结论,或者发现这问题其实根本不存在。

王垠深刻的理解自己大脑的局限性,所以他使用机器来辅助自己思考。他想一个问题往往不是空想,而是写代码来具体实现,比如用 Scheme 写一个解释器来做实验。做出一个模型,然后给它一些输入,观察它的输出。反复修改实验,最后领悟到里面的真谛。王垠之所以为他的“40行代码”沾沾自喜,并不是因为别人写不出那 40 行代码,而是因为他完全独立地写出了这些代码,没有看过任何书籍和 paper。相比之下,其他人需要看过很多 paper 之后才能写出来,甚至根本写不出来。这之所以会发生,是因为某老顽童教授把这个为期十多年的研究题目,当成了一道作业题布置下来,要求在一个星期内完成。

这就是为什么王垠跟本领域的人讨论经常被轻视或者嘲笑,因为他自己独立创造了那么多的概念,所以他对术语总是张冠李戴,鸡同鸭讲。由于他总是独立解决问题,他不知道哪些想法是新的,哪些是旧的,以至于他不知道什么东西可以发表,什么不可以。由于他独立思考,他经常不明白,别人懂的其实并没有他多,所以在装腔作势的人面前经常处于劣势。一个想法,不管别人觉得是新的还是旧的,都是他自己想出来的宝贝,所以他不在乎到底新不新。他对很多东西不耐烦,有一种上当的感觉,而其实没有人在欺骗他,只因为他是一个天才,他看穿了太多的东西。他抱怨那么明显的东西别人为什么总是搞得那么复杂,而事实是别人一开头学过来的东西就那么复杂,所以也不知道如何才能改得简单一些。他往往很快就发现一些研究是穷途末路,以至于有人觉得他没有毅力,而其实呢,只是这些人没有发现这种超凡的洞察力的价值。很多人心目中最神圣的理论,在他的眼里其实是吃饱了撑着,死路一条。他并不是妄加判断,而是经过试验得出的结论。如果这些人仔细听听王垠的话,也许可以省下二三十年的时间。可惜谁在乎呢,死路一条,能用来混二三十年饭吃,其实还是不错的。所以王垠很适合做(真正意义上的)博导,因为他会很快的发现并且防止学生走向歧途。他也适合做公司的技术顾问,也许你的新想法,其实在他的废纸篓里呢?

有些人以为王垠对自己做的 PySonar 和 RubySonar 引以为豪,以为他是 Python 和 Ruby 的专家。而其实呢,他做这些东西只是为了挣点钱来糊口。他只是把自己已有的 PL 知识拿出来用了一下,并没有想投身于它们。在创造 PySonar 和 RubySonar 之前,他其实完全没用过 Python 和 Ruby。在极短的时间之内,他不但“学会”了 Python 和 Ruby,而且为它们实现了先进的类型推导系统。他也清晰的看到 Python 和 Ruby 的缺陷。其中有些缺陷是他绝对不会犯的错误。总之,PySonar 和 RubySonar 只是他可以做的许多东西其中之一。PySonar 和 RubySonar 的价值不在于它们自己,而在于它们背后所包含的,对于所有语言都适用的原理。

这样的东西,为什么其他人做不到,甚至很多其它 PL 专家都做不到呢?那是因为其它人头脑里的知识,跟王垠头脑里的知识,有着本质的区别。这就是人们常说的“死知识”与“活知识”的区别。同样的结论,根据它的来源不同,对于人脑的效果是很不一样的。很多人头脑里的知识,是从别人的书籍或者论文里直接学来的。这种知识是一种漂浮的,无根基的现成结论。得到这种结论的人,虽然能够按照这些结论推导出更多的结论,然而由于不知道这些结论的动机和来源,不知道创造它们的人头脑里的直觉,他们没法突破它的框架,只能做一些修修补补,而不能有突破性的进展。王垠的思维往往不是从已有的解决方案出发,而是从问题的根基上演化出独立的解决方案,所以他经常能够避免思维定势,用容易的办法解决困难的问题。

从上面你也许已经看出来,王垠具有跟 Nash 和 Feynman 几乎完全一致的特征。他为什么会这样呢?因为他十年前看了他们的传记,受到了启发。他相信 Nash 和 Feynman 的脑子硬件其实跟自己的没什么两样,只是运行的软件不大一样,所以自己应该也能做到。经过十年的磨练之后,他做到了,当然其中也不乏老师的点拨。在 IU 的一年之中,他独立的构造出了这个领域近一百年的理论。很多几百页的书,当他第一次仔细看的时候,发现里面的东西早就已经明白了。这不是瞎吹的,因为这一百年造出来的理论,浓缩去冗余之后,其实没有很多。信念的力量,就是有这么强大。

天才的缺点

天才并不是可以即插即用的“熟练工”,不是用“10+年经验”这样的招聘广告可以找到的人。天才不重视经验。他们的头脑里也许没有很多现成的知识,也许比一般人还要空一些。然而天才的头脑之所以天才,就在于他能从无到有创造出知识。这种头脑里面很少有“固化”或者“焊死”的线路,一切都可以改变。天才在思考一个问题的时候并不是按部就班的,而是在每一步都会冒出多种不同的方式。做出这些选择和判断的时间,使得天才处理非创造性工作速度,其实不如那些按部就班的人。

熟练工是“即插即用”,速度非常快,然而他们却就像机器一样,只会做那几件事情。十年的经验,往往只针对某种特殊的工作。一旦遇到新的问题,或者需要创造新的东西,你就会发现这些经验不管用了。这就是王垠在某大公司实习时遇到的情况,他巧妙地解决了一个有再长“工龄”的熟练工也没法完成的任务。

这并不是说熟练工一无是处,恰恰相反,他们也很有用。他们属于那种勤勤恳恳,做一件事乐此不疲的人。他们值得我们的尊敬。在使用天才把初步的模型制造出来之后,这种人可以迅速的填补好细枝末节。如果你让天才来干这种细枝末节的事情,不但会让他无聊得发疯,而且是大大的浪费了他的潜力。最后捡了芝麻丢了西瓜。

这个世界上缺乏天才,然而更缺乏的是懂得如何使用天才,懂得如何把他和熟练工组合起来,充分发挥两者优势的人。天才和熟练工并没有贵贱之分,只有分工不同。

天才的痛苦

做天才很幸运吗?其实不是的。由于人们不理解天才,不懂得如何尊重他们,很多天才最后的命运都是发疯或者自杀,想想 Nash 和梵高吧。王垠貌似已经有这种苗头,所以他希望让自己变得白痴一点。