• 过去的一年我在微软亚洲研究院做输入法,我们的产品叫“英库拼音输入法” (下载Beta版),如果你用过“英库词典”(现已更名为必应词典),应该知道“英库”这个名字(实际上我们的核心开发团队也有很大一部分来源于英库团队的老成员)。整个项目是微软亚洲研究院的自然语言处理组、互联网搜索与挖掘组和我们创新工程中心,以及微软中国Office商务软件部(MODC)多组合作的结果。至于我们的输入法有哪些创新的feature,以及这些feature背后的种种有趣故事… 本文暂不讨论。虽然整个过程中我也参与了很多feature的设想和设计,但90%的职责还是开发,所以作为client端的核心开发人员之一,我想跟大家分享这一年来在项目中全面使用C++11以及现代C++风格(Elements of Modern C++ Style)来做开发的种种经验。

我们用的开发环境是VS2010 SP1,该版本已经支持了相当多的C++11的特性:lambda表达式,右值引用,auto类型推导,static_assert,decltype,nullptr,exception_ptr等等。C++曾经饱受“学院派”标签的困扰,不过这个标签着实被贴得挺冤,C++11的新feature没有一个是从学院派角度出发来设计的,以上提到的所有这些feature都在我们的项目中得到了适得其所的运用,并且带来了很大的收益。尤其是lambda表达式。

说起来我跟C++也算是有相当大的缘分,03年还在读本科的时候,第一篇发表在程序员上面的文章就是Boost库的源码剖析,那个时候Boost库在国内还真是相当的阳春白雪,至今已经快十年了,Boost库如今已经是写C++代码不可或缺的库,被誉为“准标准库”,C++的TR1基本就脱胎于Boost的一系列子库,而TR2同样也大量从Boost库中取材。之后有好几年,我在CSDN上的博客几乎纯粹是C++的前沿技术文章,包括从06年就开始写的“C++0x漫谈”系列。(后来写技术文章写得少了,也就把博客从CSDN博客独立了出来,便是现在的mindhacks.cn)。自从独立博客了之后我就没有再写过C++相关的文章(不过仍然一直对C++的发展保持了一定的关注),一方面我喜欢关注前沿的进展,写完了Boost源码剖析系列和C++0x漫谈系列之后我觉得这一波的前沿进展从大方面来说也都写得差不多了,所以不想再费时间。另一方面的原因也是我虽然对C++关注较深,但实践经验却始终绝大多数都是“替代经验”,即从别人那儿看来的,并非自己第一手的。而过去一年来深度参与的英库输入法项目弥补了这个缺憾,所以我就决定重新开始写一点C++11的实践经验。算是对努力一年的项目发布第一版的一个小结。

    C++11(及现代C++风格)和快速迭代式开发

    过去的一年我在微软亚洲研究院做输入法,我们的产品叫“英库拼音输入法” (下载Beta版),如果你用过“英库词典”(现已更名为必应词典),应该知道“英库”这个名字(实际上我们的核心开发团队也有很大一部分来源于英库团队的老成员)。整个项目是微软亚洲研究院的自然语言处理组、互联网搜索与挖掘组和我们创新工程中心,以及微软中国Office商务软件部(MODC)多组合作的结果。至于我们的输入法有哪些创新的feature,以及这些feature背后的种种有趣故事… 本文暂不讨论。虽然整个过程中我也参与了很多feature的设想和设计,但90%的职责还是开发,所以作为client端的核心开发人员之一,我想跟大家分享这一年来在项目中全面使用C++11以及现代C++风格(Elements of Modern C++ Style)来做开发的种种经验。 我们用的开发环境是VS2010 SP1,该版本已经支持了相当多的C++11的特性:lambda表达式,右值引用,auto类型推导,static_assert,decltype,nullptr,exception_ptr等等。C++曾经饱受“学院派”标签的困扰,不过这个标签着实被贴得挺冤,C++11的新feature没有一个是从学院派角度出发来设计的,以上提到的所有这些feature都在我们的项目中得到了适得其所的运用,并且带来了很大的收益。尤其是lambda表达式。 说起来我跟C++也算是有相当大的缘分,03年还在读本科的时候,第一篇发表在程序员上面的文章就是Boost库的源码剖析,那个时候Boost库在国内还真是相当的阳春白雪,至今已经快十年了,Boost库如今已经是写C++代码不可或缺的库,被誉为“准标准库”,C++的TR1基本就脱胎于Boost的一系列子库,而TR2同样也大量从Boost库中取材。之后有好几年,我在CSDN上的博客几乎纯粹是C++的前沿技术文章,包括从06年就开始写的“C++0x漫谈”系列。(后来写技术文章写得少了,也就把博客从CSDN博客独立了出来,便是现在的mindhacks.cn)。自从独立博客了之后我就没有再写过C++相关的文章(不过仍然一直对C++的发展保持了一定的关注),一方面我喜欢关注前沿的进展,写完了Boost源码剖析系列和C++0x漫谈系列之后我觉得这一波的前沿进展从大方面来说也都写得差不多了,所以不想再费时间。另一方面的原因也是我虽然对C++关注较深,但实践经验却始终绝大多数都是“替代经验”,即从别人那儿看来的,并非自己第一手的。而过去一年来深度参与的英库输入法项目弥补了这个缺憾,所以我就决定重新开始写一点C++11的实践经验。算是对努力一年的项目发布第一版的一个小结。

    Continue Reading...

  • 著名科幻作家阿瑟·克拉克有一句名言(这句话是如此有名以至于被人尊称为“克拉克第一定律”):“如果一位有名望的老科学家告诉你某件事情是可能的,那么他很可能是对的。然而如果他说某件事情是不可能的,那么他极有可能是错的。” 

所谓成也萧何败萧何,“知识是一把双刃剑”这个道理在心理学领域其实并不新鲜,《Made To Stick》上面就提到这样一个经典的实验:A心里想一首曲子,然后用打拍子的方式打出来,B听着A的拍子要去猜测A打的实际是哪个曲子。参与者选的是一些非常简单的曲子,如“世上只有妈妈好”(此处根据中国国情稍加演绎)。这个实验的亮点在于,往往A认为“那么简单的曲子”怎么可能听不出来呢?而实际上B听了却就是猜不出来。A对B能否猜中的概率估计,与B实际猜中的概率之间,有一个巨大的落差(A以为50%的人能猜出来,而实际上只有可怜的2.5%)。 

原因?因为A心里本来就知道答案(曲子本来就是A定的),所以对于A来说这是“显然”的,但B只听到拍子,对B来说再简单的拍子也并不是“显然”的。关键在于,由于A心里明知答案,就无法去设想不知道答案的B听到那样的拍子时是什么感觉,也就无法真正准确地推测出B猜中的概率了。 

实验者把这个现象称为“知识的诅咒”:由于知道某个知识,反而影响了判断。在以上的实验当中,如果A自己并不知道曲子,(曲子是实验者选的,拍子也是实验者打的),那么A就能够体会到B的感觉了。 

以上这个例子,只要稍加引申一下,就不难类推到一个日常现象:为什么说大多数时候换位思考只是个陷阱。因为真正的换位思考,意味着你必须知道对方大脑中所有真正影响他决策和行为的因素,这包含太多的东西:对方的价值系统,习惯,观念,道德观,甚至对方那一刻的情绪。一个人的行为由众多因素来决定,其中绝大多数因素常常隐藏在我们根本觉察不到的潜意识层面(《Strangers to Ourselves》),连当事人自己都未必知道其自己行为的真正原因,更不用说要别人还能够真正的“换位”了。不仅如此,你还必须摆脱自己大脑中的价值系统、习惯、观念、道德观、情绪的影响。这两者本身都极其困难,乘起来更是难于登天。所以说现实当中的大多所谓换位思考一不小心就沦为以己度人。 

有时候,当事情所涉及到的是人之常情,的确是可以以己度人(因为有些事情大家都差不多),例如说每个人都不希望自己的隐私被侵犯,那么当侵犯别人隐私的时候只要想想自己愿不愿意成为对方就可以了,“己所不欲勿施于人”。但当涉及到的是人与人之间不同的观念的时候,例如价值观,那么就会落入以己度人的陷阱,最典型的例子就是当代家庭中父母对子女的人生规划,往往抱着好心,办着坏事,因为当父母“换位思考”什么是“为子女好”的时候,无法摆脱自己价值观的影响,因为价值观是一个人内心非常强大而又隐蔽的东西,我们很难摆脱自己的价值观而真正从另外一个人的价值观角度去考虑(要是真的能够在内心那么容易地“切换”价值观的话,价值观就不叫价值观了),于是父母将“己所欲”施于“子女”。这里父母们自己的价值观,就仿佛前面那个实验当中被试A心里所想的曲子。因此,原则上不仅己所不欲勿施于人,还要己所欲勿施于人。 

如果你对于Critical Thinking有所了解,你应该知道这样一个有名的谬误(Fallacy),叫Affirming the consequent,例如:所有植物都需要水,玫瑰需要水,所以玫瑰是植物。这个逻辑咋听起来非常正确,但却是完全错误的。这是我们的“直觉逻辑”常犯的错误之一,由于所有人脑袋里都知道“玫瑰是植物”这个“知识”是正确的,所以爱屋及乌地也认可了它的“伪前提”(也就是说“结论是对的”意味着“逻辑是对的”)。如果把这里的结论换成错误的,你就摆脱了“知识的诅咒”,例如:所有植物都需要水,人需要水,所以人是植物。 

以上只是两个简单的例子,实际上,知识的诅咒只是我们思维的众多牢笼之一。

    逃出你的肖申克(五):看不见的牢笼(上)

    著名科幻作家阿瑟·克拉克有一句名言(这句话是如此有名以至于被人尊称为“克拉克第一定律”):“如果一位有名望的老科学家告诉你某件事情是可能的,那么他很可能是对的。然而如果他说某件事情是不可能的,那么他极有可能是错的。” 所谓成也萧何败萧何,“知识是一把双刃剑”这个道理在心理学领域其实并不新鲜,《Made To Stick》上面就提到这样一个经典的实验:A心里想一首曲子,然后用打拍子的方式打出来,B听着A的拍子要去猜测A打的实际是哪个曲子。参与者选的是一些非常简单的曲子,如“世上只有妈妈好”(此处根据中国国情稍加演绎)。这个实验的亮点在于,往往A认为“那么简单的曲子”怎么可能听不出来呢?而实际上B听了却就是猜不出来。A对B能否猜中的概率估计,与B实际猜中的概率之间,有一个巨大的落差(A以为50%的人能猜出来,而实际上只有可怜的2.5%)。 原因?因为A心里本来就知道答案(曲子本来就是A定的),所以对于A来说这是“显然”的,但B只听到拍子,对B来说再简单的拍子也并不是“显然”的。关键在于,由于A心里明知答案,就无法去设想不知道答案的B听到那样的拍子时是什么感觉,也就无法真正准确地推测出B猜中的概率了。 实验者把这个现象称为“知识的诅咒”:由于知道某个知识,反而影响了判断。在以上的实验当中,如果A自己并不知道曲子,(曲子是实验者选的,拍子也是实验者打的),那么A就能够体会到B的感觉了。 以上这个例子,只要稍加引申一下,就不难类推到一个日常现象:为什么说大多数时候换位思考只是个陷阱。因为真正的换位思考,意味着你必须知道对方大脑中所有真正影响他决策和行为的因素,这包含太多的东西:对方的价值系统,习惯,观念,道德观,甚至对方那一刻的情绪。一个人的行为由众多因素来决定,其中绝大多数因素常常隐藏在我们根本觉察不到的潜意识层面(《Strangers to Ourselves》),连当事人自己都未必知道其自己行为的真正原因,更不用说要别人还能够真正的“换位”了。不仅如此,你还必须摆脱自己大脑中的价值系统、习惯、观念、道德观、情绪的影响。这两者本身都极其困难,乘起来更是难于登天。所以说现实当中的大多所谓换位思考一不小心就沦为以己度人。 有时候,当事情所涉及到的是人之常情,的确是可以以己度人(因为有些事情大家都差不多),例如说每个人都不希望自己的隐私被侵犯,那么当侵犯别人隐私的时候只要想想自己愿不愿意成为对方就可以了,“己所不欲勿施于人”。但当涉及到的是人与人之间不同的观念的时候,例如价值观,那么就会落入以己度人的陷阱,最典型的例子就是当代家庭中父母对子女的人生规划,往往抱着好心,办着坏事,因为当父母“换位思考”什么是“为子女好”的时候,无法摆脱自己价值观的影响,因为价值观是一个人内心非常强大而又隐蔽的东西,我们很难摆脱自己的价值观而真正从另外一个人的价值观角度去考虑(要是真的能够在内心那么容易地“切换”价值观的话,价值观就不叫价值观了),于是父母将“己所欲”施于“子女”。这里父母们自己的价值观,就仿佛前面那个实验当中被试A心里所想的曲子。因此,原则上不仅己所不欲勿施于人,还要己所欲勿施于人。 如果你对于Critical Thinking有所了解,你应该知道这样一个有名的谬误(Fallacy),叫Affirming the consequent,例如:所有植物都需要水,玫瑰需要水,所以玫瑰是植物。这个逻辑咋听起来非常正确,但却是完全错误的。这是我们的“直觉逻辑”常犯的错误之一,由于所有人脑袋里都知道“玫瑰是植物”这个“知识”是正确的,所以爱屋及乌地也认可了它的“伪前提”(也就是说“结论是对的”意味着“逻辑是对的”)。如果把这里的结论换成错误的,你就摆脱了“知识的诅咒”,例如:所有植物都需要水,人需要水,所以人是植物。 以上只是两个简单的例子,实际上,知识的诅咒只是我们思维的众多牢笼之一。

    Continue Reading...

  • Joel Spolsky曾经感叹:招聘难,难于上青天(此处笔者稍加演绎:))。他有两个辛辣但不乏洞察力的断言:真正的牛人也许一辈子就投大概4次简历,这些家伙一毕业就被好公司抢走了,并且他们的雇主会给他们不赖的待遇,所以他们也不想挪窝。(刚刚去世的Dennis Ritchie就是这样一个人)而“人才”市场上能找到的大多都不是什么人才。招到这帮人轻则费钱重则把你公司搞挂。

诚然,也许没有哪个行业像IT行业这样,无形资产占据公司的绝大多数资产。拒坊间传言比尔·盖茨就曾经说过类似这样的话:只要允许我带走100个人我可以再造一个微软。这话没搜到原版出处,但是从一个侧面反映了IT公司当中智力资产所占的比例之重。

所以一个自然的推论就是,招聘也许是一个公司决策当中最最重要的一个环节。Joel Spolsky把他在这方面的观察,体会和洞见集结成了一本小册子《Smart and Gets Things Done》,开篇就挑战“产品是公司成败的关键”这个传统观念,他认为创造最适合工程师生活的环境,留下最优秀的人才才是最先最重要的一步,接下来好的产品是水到渠成的事情。国内iapp4me.com创始人郝培强正是这个理念,所以他在微博上说:

我们是小公司,工资开的不高,也不招太多的人,但是电脑都是iMac27,iMac21,Macbook pro15,基本上比很多大公司都好多了。软件没盗版,刚才photoshop的正版我也收了。中午管饭,公司备伞。哈哈。节日假正常放,从不加班,早晨11点上班,下午6点下班。我是有资格说某些大公司的员工苦逼的。

事实上,米国找个人尚且难成这样,搞得Joel还费心费力写本书语重心长地劝企业们要善待好工程师,国内找个人更是难上加难,国内高质量问答社区知乎创始人周源就曾经在知乎上分享他呕心沥血的招人历程,看完真是让人慨叹这年头找个靠谱的人多不容易(这条知乎问答还有很多精彩的跟帖)

    怎样花两年时间去面试一个人

    Joel Spolsky曾经感叹:招聘难,难于上青天(此处笔者稍加演绎:))。他有两个辛辣但不乏洞察力的断言:真正的牛人也许一辈子就投大概4次简历,这些家伙一毕业就被好公司抢走了,并且他们的雇主会给他们不赖的待遇,所以他们也不想挪窝。(刚刚去世的Dennis Ritchie就是这样一个人)而“人才”市场上能找到的大多都不是什么人才。招到这帮人轻则费钱重则把你公司搞挂。 诚然,也许没有哪个行业像IT行业这样,无形资产占据公司的绝大多数资产。拒坊间传言比尔·盖茨就曾经说过类似这样的话:只要允许我带走100个人我可以再造一个微软。这话没搜到原版出处,但是从一个侧面反映了IT公司当中智力资产所占的比例之重。 所以一个自然的推论就是,招聘也许是一个公司决策当中最最重要的一个环节。Joel Spolsky把他在这方面的观察,体会和洞见集结成了一本小册子《Smart and Gets Things Done》,开篇就挑战“产品是公司成败的关键”这个传统观念,他认为创造最适合工程师生活的环境,留下最优秀的人才才是最先最重要的一步,接下来好的产品是水到渠成的事情。国内iapp4me.com创始人郝培强正是这个理念,所以他在微博上说: 我们是小公司,工资开的不高,也不招太多的人,但是电脑都是iMac27,iMac21,Macbook pro15,基本上比很多大公司都好多了。软件没盗版,刚才photoshop的正版我也收了。中午管饭,公司备伞。哈哈。节日假正常放,从不加班,早晨11点上班,下午6点下班。我是有资格说某些大公司的员工苦逼的。 事实上,米国找个人尚且难成这样,搞得Joel还费心费力写本书语重心长地劝企业们要善待好工程师,国内找个人更是难上加难,国内高质量问答社区知乎创始人周源就曾经在知乎上分享他呕心沥血的招人历程,看完真是让人慨叹这年头找个靠谱的人多不容易(这条知乎问答还有很多精彩的跟帖)

    Continue Reading...

  • 广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。

不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算法大多数都是那些即便用到也是直接拿模块用的,但不幸的是,我们这群搬砖头的有时候还非得做些发明家的事情:要么是得把算法当白盒加以改进以满足手头的特定需求;要么干脆就是要发明轮子。所以,虽说面试的算法本身未必用得到,但熟悉各种算法的人通常更可能熟悉算法的思想,从而更可能具备这里说的两种能力。

那么,为什么说算法很难呢?这个问题只有两种可能的原因:

算法本身就很难。也就是说,算法这个东西对于人类的大脑来说本身就是个困难的事儿。 
讲得太烂。 
下面会说明,算法之所以被绝大多数人认为很难,以上两个原因兼具。

我们说算法难的时候,有两种情况:一种是学算法难。第二种是设计算法难。对于前者,大多数人(至少我当年如此)学习算法几乎是在背算法,就跟背菜谱似的(“Cookbook”是深受广大码农喜爱的一类书),然而算法和菜谱的区别在于,算法包含的细节复杂度是菜谱的无数倍,算法的问题描述千变万化,逻辑过程百转千回,往往看得人愁肠百结,而相较之下任何菜谱涉及到的基本元素也就那么些(所以程序员肯定都具有成为好厨师的潜力:D)注意,即便你看了算法的证明,某种程度上还是“背”(为什么这么说,后面会详述)。我自己遇到新算法基本是会看证明的,但是发现没多久还是会忘掉,这是死记硬背的标准症状。如果你也啃过算法书,我相信很大可能性你会有同感:为什么当时明明懂了,但没多久就忘掉了呢?为什么当时明明非常理解其证明,但没过多久想要自己去证明时却发现怎么都没法补上证明中缺失的一环呢?

    知其所以然(三):为什么算法这么难?

    广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。 不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算法大多数都是那些即便用到也是直接拿模块用的,但不幸的是,我们这群搬砖头的有时候还非得做些发明家的事情:要么是得把算法当白盒加以改进以满足手头的特定需求;要么干脆就是要发明轮子。所以,虽说面试的算法本身未必用得到,但熟悉各种算法的人通常更可能熟悉算法的思想,从而更可能具备这里说的两种能力。 那么,为什么说算法很难呢?这个问题只有两种可能的原因: 算法本身就很难。也就是说,算法这个东西对于人类的大脑来说本身就是个困难的事儿。 讲得太烂。 下面会说明,算法之所以被绝大多数人认为很难,以上两个原因兼具。 我们说算法难的时候,有两种情况:一种是学算法难。第二种是设计算法难。对于前者,大多数人(至少我当年如此)学习算法几乎是在背算法,就跟背菜谱似的(“Cookbook”是深受广大码农喜爱的一类书),然而算法和菜谱的区别在于,算法包含的细节复杂度是菜谱的无数倍,算法的问题描述千变万化,逻辑过程百转千回,往往看得人愁肠百结,而相较之下任何菜谱涉及到的基本元素也就那么些(所以程序员肯定都具有成为好厨师的潜力:D)注意,即便你看了算法的证明,某种程度上还是“背”(为什么这么说,后面会详述)。我自己遇到新算法基本是会看证明的,但是发现没多久还是会忘掉,这是死记硬背的标准症状。如果你也啃过算法书,我相信很大可能性你会有同感:为什么当时明明懂了,但没多久就忘掉了呢?为什么当时明明非常理解其证明,但没过多久想要自己去证明时却发现怎么都没法补上证明中缺失的一环呢?

    Continue Reading...

  • 医学上,对于一些罹患严重癫痫症的病人,一种万不得已但颇为有效的方法是切断其大脑的胼胝体。胼胝体是两个脑半球之间的信息高速通道,含有2亿多条神经纤维,一旦切断之后,两脑半球之间的沟通也就相当于从信息时代回到了石器时代。经过这类手术的不幸的病人被称为“裂脑人”。对裂脑人的研究发现了关于人类大脑的一些非常重要的性质,例如《改变心理学的40项研究》第一章“一个脑还是两个脑”里面提到的研究揭示出左右脑在空间感,视觉触觉,语言方面的一些深刻而有趣的差异。

《How We Know What Isn't So》里面则提到另一则非常有趣的有关裂脑人的研究:我们知道,语言能力主要在左脑。对于裂脑人,我们将两幅不同的图画分别呈现给裂脑人的左脑和右脑,呈现给左脑的图画上面是一只鸡爪,而呈现给右脑的则是覆盖着皑皑白雪的牧场。这之后,让他从一堆图片中寻找能跟他看到的图片相匹配的图片。结果非常耐人寻味:裂脑人的左手(右脑控制)会去选择一把铁锹(铁锹铲除牧场上的白雪),而其右手(左脑控制)则会去选择一只小鸡(小鸡和鸡爪配对)。两个脑半球分别根据自己所掌握的信息选择了最匹配的图片。然而,最有趣的地方在于当实验者询问被试为什么选择这两幅图片的时候。裂脑人会说:“哦,很简单啊,小鸡有鸡爪,而铁锹用来铲鸡屎”。

    逃出你的肖申克(四):理智与情感

    医学上,对于一些罹患严重癫痫症的病人,一种万不得已但颇为有效的方法是切断其大脑的胼胝体。胼胝体是两个脑半球之间的信息高速通道,含有2亿多条神经纤维,一旦切断之后,两脑半球之间的沟通也就相当于从信息时代回到了石器时代。经过这类手术的不幸的病人被称为“裂脑人”。对裂脑人的研究发现了关于人类大脑的一些非常重要的性质,例如《改变心理学的40项研究》第一章“一个脑还是两个脑”里面提到的研究揭示出左右脑在空间感,视觉触觉,语言方面的一些深刻而有趣的差异。 《How We Know What Isn't So》里面则提到另一则非常有趣的有关裂脑人的研究:我们知道,语言能力主要在左脑。对于裂脑人,我们将两幅不同的图画分别呈现给裂脑人的左脑和右脑,呈现给左脑的图画上面是一只鸡爪,而呈现给右脑的则是覆盖着皑皑白雪的牧场。这之后,让他从一堆图片中寻找能跟他看到的图片相匹配的图片。结果非常耐人寻味:裂脑人的左手(右脑控制)会去选择一把铁锹(铁锹铲除牧场上的白雪),而其右手(左脑控制)则会去选择一只小鸡(小鸡和鸡爪配对)。两个脑半球分别根据自己所掌握的信息选择了最匹配的图片。然而,最有趣的地方在于当实验者询问被试为什么选择这两幅图片的时候。裂脑人会说:“哦,很简单啊,小鸡有鸡爪,而铁锹用来铲鸡屎”。

    Continue Reading...

  • 我有一个习惯,看定理必看证明。一个你不明白其证明的定理在我看来比不知道这个定理还要糟糕,因它给你造成一种懂了的错觉。在没有明白背后的证明之前,任何一个定理对你来说都是等价的——等价于背乘法口诀(只不过有的长一点有的短一点)。一个原本美妙的定理,把其证明扔掉就是真正的买椟还珠,暴殄天物。 

从现实意义来说,去理解一个定理的证明会带来巨大的好处,首当其冲的好处就是你很难再忘掉它。这一点其实很容易解释——在理解一个定理的证明之前,定理对你而言是一堆没有内在联系的词句,而在理解了证明之后,定理就归约为证明它所需的条件加上逻辑...这是一个树状的知识结构,越往上层走,需要记忆的节点就越少。

    知其所以然(续)

    我有一个习惯,看定理必看证明。一个你不明白其证明的定理在我看来比不知道这个定理还要糟糕,因它给你造成一种懂了的错觉。在没有明白背后的证明之前,任何一个定理对你来说都是等价的——等价于背乘法口诀(只不过有的长一点有的短一点)。一个原本美妙的定理,把其证明扔掉就是真正的买椟还珠,暴殄天物。 从现实意义来说,去理解一个定理的证明会带来巨大的好处,首当其冲的好处就是你很难再忘掉它。这一点其实很容易解释——在理解一个定理的证明之前,定理对你而言是一堆没有内在联系的词句,而在理解了证明之后,定理就归约为证明它所需的条件加上逻辑...这是一个树状的知识结构,越往上层走,需要记忆的节点就越少。

    Continue Reading...

  • 《Synaptic Self》中曾提出一个发人深省的观点:由于人的大脑是经过漫长的进化年代“堆积”起来的,也就是说,从爬行动物到哺乳动物到高级灵长类这些进化阶段,我们的大脑从只有原始的反射模块,到拥有初步的情感区域,一直到神奇的具有6层结构的“新皮质”所支撑的高级认知能力,一步步走来。这个过程并非上帝预先编程架构好的,而更像是在既有结构上“叠床架屋”,比如,大脑从内到外基本上是按照进化年代来排序的,比如啮齿类等一些小型哺乳动物的新皮质是光滑的,这是新皮质在进化出高级灵长类之前的样子,后来为了解决大脑中空间不够的问题,进化之手发明了大脑皮层沟回,通过这些褶皱,在不增加太多占用体积的前提下使得大脑皮层表面积暴涨,正是这些褶皱使得灵长类进化出独特的高级认知活动,如工作记忆,语言。这种“堆砌式”的进化有它节省和复用的好处(《Kludge》),然而另一方面也带来了奇特的“进化时滞”效应——进化年代较近的大脑模块和较久远的模块之间要达成完美沟通需要一定的时间,在这之前便会造成多个模块之间面对同一个问题决策不一致的问题。

我们的高级认知模块明明知道有些事情很重要,必须提前准备并持之以恒,然而我们内心的另一个小声音却在万般阻挠我们把屁股从床上挪开或者把眼睛从网页上挪开;我们明明知道赌博,烟酒,犯罪是不对的,然而内心的一个小声音却在喋喋不休地催我们动手去做。我们明明知道高糖高脂肪的食物不宜多吃,但内心的一个小声音却总是怂恿着再吃最后一勺(不禁让人想起《傀儡人生》)。令人感到遗憾的是,很多时候在这个争端中败下阵来的却是代表更先进生产力的高级认知模块,更令人感到遗憾的是,在大多数时候我们的高级认知模块似乎根本就没有启用,而是凭借着本能或直觉“自动驾驶”自己的身体(《Gut Feelings》)。

    逃出你的肖申克(三):遇见20万年前的自己

    《Synaptic Self》中曾提出一个发人深省的观点:由于人的大脑是经过漫长的进化年代“堆积”起来的,也就是说,从爬行动物到哺乳动物到高级灵长类这些进化阶段,我们的大脑从只有原始的反射模块,到拥有初步的情感区域,一直到神奇的具有6层结构的“新皮质”所支撑的高级认知能力,一步步走来。这个过程并非上帝预先编程架构好的,而更像是在既有结构上“叠床架屋”,比如,大脑从内到外基本上是按照进化年代来排序的,比如啮齿类等一些小型哺乳动物的新皮质是光滑的,这是新皮质在进化出高级灵长类之前的样子,后来为了解决大脑中空间不够的问题,进化之手发明了大脑皮层沟回,通过这些褶皱,在不增加太多占用体积的前提下使得大脑皮层表面积暴涨,正是这些褶皱使得灵长类进化出独特的高级认知活动,如工作记忆,语言。这种“堆砌式”的进化有它节省和复用的好处(《Kludge》),然而另一方面也带来了奇特的“进化时滞”效应——进化年代较近的大脑模块和较久远的模块之间要达成完美沟通需要一定的时间,在这之前便会造成多个模块之间面对同一个问题决策不一致的问题。 我们的高级认知模块明明知道有些事情很重要,必须提前准备并持之以恒,然而我们内心的另一个小声音却在万般阻挠我们把屁股从床上挪开或者把眼睛从网页上挪开;我们明明知道赌博,烟酒,犯罪是不对的,然而内心的一个小声音却在喋喋不休地催我们动手去做。我们明明知道高糖高脂肪的食物不宜多吃,但内心的一个小声音却总是怂恿着再吃最后一勺(不禁让人想起《傀儡人生》)。令人感到遗憾的是,很多时候在这个争端中败下阵来的却是代表更先进生产力的高级认知模块,更令人感到遗憾的是,在大多数时候我们的高级认知模块似乎根本就没有启用,而是凭借着本能或直觉“自动驾驶”自己的身体(《Gut Feelings》)。

    Continue Reading...

  • 如果你有做总结的习惯,你在度过一段时间之后总结自己在某某领域投入了多少时间,建议千万不要粗略地去计算有多少天下班后拿起书来翻看过,因为这样你也许会发现书倒是常翻,但领悟却不见得多深,表面上花的时间不少,收益却不见得那么大。因为看书并记住书中的东西只是记忆,并没有涉及推理,只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是你的思维时间,也是人一生中占据一个显著比例的“暗时间”,你走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看和读的东西,让你的认识能够脱离照本宣科的层面。这段时间看起来微不足道,但日积月累将会产生庞大的效应。能够充分利用暗时间的人将无形中多出一大块生命。你也许会发现这样的人似乎玩得不比你少,看得不比你多,但不知怎么的就是比你走得更远。比如我就经常发现一些国外的牛人们为什么不仅学习牛逼,连“业余”玩儿的东东也都搞得特牛逼,一点都不业余(上次在《How We Decide》上看到斯坦福的一个牛人,理论物理学博士,同时是世界扑克大赛的前六名保持者,迄今累计奖金拿了六百多万刀),你会奇怪,这些家伙到底哪来的时间,居然可以在不止一个领域做到卓越?

    暗时间

    如果你有做总结的习惯,你在度过一段时间之后总结自己在某某领域投入了多少时间,建议千万不要粗略地去计算有多少天下班后拿起书来翻看过,因为这样你也许会发现书倒是常翻,但领悟却不见得多深,表面上花的时间不少,收益却不见得那么大。因为看书并记住书中的东西只是记忆,并没有涉及推理,只有靠推理才能深入理解一个事物,看到别人看不到的地方,这部分推理的过程就是你的思维时间,也是人一生中占据一个显著比例的“暗时间”,你走路、买菜、洗脸洗手、坐公车、逛街、出游、吃饭、睡觉,所有这些时间都可以成为“暗时间”,你可以充分利用这些时间进行思考,反刍和消化平时看和读的东西,让你的认识能够脱离照本宣科的层面。这段时间看起来微不足道,但日积月累将会产生庞大的效应。能够充分利用暗时间的人将无形中多出一大块生命。你也许会发现这样的人似乎玩得不比你少,看得不比你多,但不知怎么的就是比你走得更远。比如我就经常发现一些国外的牛人们为什么不仅学习牛逼,连“业余”玩儿的东东也都搞得特牛逼,一点都不业余(上次在《How We Decide》上看到斯坦福的一个牛人,理论物理学博士,同时是世界扑克大赛的前六名保持者,迄今累计奖金拿了六百多万刀),你会奇怪,这些家伙到底哪来的时间,居然可以在不止一个领域做到卓越?

    Continue Reading...

  • 设计你自己的进度条

进度条的设计是一个很多人都知道的故事:同样的耗时,如果不给任何进度提示,只是在完成之后才弹出一个完成消息,中间没有任何动态变化,那么整个过程就会让人等得非常焦急,导致一些人干脆把程序关了了事。如果有进度不断更新,那么对整个过程耗时的心理感受就会远低于实际值,用户也不会郁闷到把程序关了。(你有多少次在银行处理手续的时候,看着工作人员把一堆材料不停地倒腾来去,心里多希望他们可以在柜台小窗口上投影一个进度条?)

这里的原因在于,没有进度提示的话,我们无法判断这个等待什么时候才是个尽头。如果有不断增长的进度条,那么我们对于什么时候会达到100%就会有一个粗略的估计,这个估计是一剂定心丸,让我们知道这事情总会并且会在不久的将来完成。

做事情也是同样的道理,善于规划的人,会将目标分割成一个个的里程碑,再将里程碑分割成TODO列表。前阵子流行的GTD方法学,核心的理念就在于,如果你把任务分割了,你就有了进度条,你就知道,事情在不断的进展,你总会完成任务或到达你的目标,你会有一个时间估计。反之如果没有这个分割,整个的任务或目标对你来说就只有两种状态——“完成”和“未完成”,如果不幸是一个比较漫长的目标,那么你会发现你的进度条总是“未完成”,一次又一次的等待未果会耗尽你的耐心,让你下意识的产生“这事什么时候才能完呢?”的疑惑,没有分而治之,你就不知道未来还需要付出多少努力才能达到目的,这就会让你心生怯意,不敢进一步投入时间,免得血本无归。在这样的心理下,不少人就会选择保守策略——退出,以免到头来花了时间还一事无成。

    不是书评 :《我是一只IT小小鸟》

    设计你自己的进度条 进度条的设计是一个很多人都知道的故事:同样的耗时,如果不给任何进度提示,只是在完成之后才弹出一个完成消息,中间没有任何动态变化,那么整个过程就会让人等得非常焦急,导致一些人干脆把程序关了了事。如果有进度不断更新,那么对整个过程耗时的心理感受就会远低于实际值,用户也不会郁闷到把程序关了。(你有多少次在银行处理手续的时候,看着工作人员把一堆材料不停地倒腾来去,心里多希望他们可以在柜台小窗口上投影一个进度条?) 这里的原因在于,没有进度提示的话,我们无法判断这个等待什么时候才是个尽头。如果有不断增长的进度条,那么我们对于什么时候会达到100%就会有一个粗略的估计,这个估计是一剂定心丸,让我们知道这事情总会并且会在不久的将来完成。 做事情也是同样的道理,善于规划的人,会将目标分割成一个个的里程碑,再将里程碑分割成TODO列表。前阵子流行的GTD方法学,核心的理念就在于,如果你把任务分割了,你就有了进度条,你就知道,事情在不断的进展,你总会完成任务或到达你的目标,你会有一个时间估计。反之如果没有这个分割,整个的任务或目标对你来说就只有两种状态——“完成”和“未完成”,如果不幸是一个比较漫长的目标,那么你会发现你的进度条总是“未完成”,一次又一次的等待未果会耗尽你的耐心,让你下意识的产生“这事什么时候才能完呢?”的疑惑,没有分而治之,你就不知道未来还需要付出多少努力才能达到目的,这就会让你心生怯意,不敢进一步投入时间,免得血本无归。在这样的心理下,不少人就会选择保守策略——退出,以免到头来花了时间还一事无成。

    Continue Reading...

  • 我们在生活中总是在不停地试图做最优经济决策,只不过很多时候我们为适应远古社会而进化的大脑未必适用于现代工业社会(《Mean Genes》,《进化心理学》,《How We Decide》),所以很多时候我们可以在超市为选择哪一卷卫生纸斟酌半天(《Predictably Irrational》),却在面对生活中重大抉择的时候轻易就随波逐流(《Paradox Of Choice》)。

我们的很多决策依赖于情绪系统的输出(从进化时间上比较“旧”的大脑部分)(《How We Decide》,《Synaptic Self》),这部分大脑属于典型的经过了漫长进化时间所雕琢过的,决策机制严重适应远古社会的模块(《Mean Genes》),比如在物质贫乏的远古时期,不管什么时候遇到富含热量的食物是必吃无误的,所以我们的情绪大脑只要闻到美食是绝对不去克制诱惑的,长出脂肪又如何?有的是饥寒交迫的时候去燃烧这些脂肪。然而这条规则到了现代这个物质充裕的社会却成了灾难(去查一下美国的肥胖比例?),可谓成也萧何败萧何。这样的例子在《Mean Genes》中还有不少。

我们在学习新东西,遇到困难的时候,为什么会放弃?因为我们下意识中会对所面临的困难以及成功后所得的收益作一个评估(经典的cost/return分析),这里特别重要的是对面临的困难的评估:我们都知道学习任何一门技能,一开始可能还兴趣浓厚,捋袖子上阵,过了一阵子便会遇到一个典型的分水岭,你会发现未知的东西比你想象得要多,困难重重,似乎一眼看过去没法确信什么时候才能掌握,甚至觉得有点Mission Impossible,当觉知到的困难到一定程度之后,我们的大脑便会想:既然很大可能最终失败,甚至看不到成功的可能,为什么要白费力气去学一通呢?还不如省省呢。这是一个聪明的经济决策,去权衡性价比应该是每个经济个体的原则。然而,这个决策笨就笨在,它把困难评估得过高了,因此决策的前提就弄错了。为什么这么说呢?

    [BetterExplained]遇到问题为什么应该自己动手

    我们在生活中总是在不停地试图做最优经济决策,只不过很多时候我们为适应远古社会而进化的大脑未必适用于现代工业社会(《Mean Genes》,《进化心理学》,《How We Decide》),所以很多时候我们可以在超市为选择哪一卷卫生纸斟酌半天(《Predictably Irrational》),却在面对生活中重大抉择的时候轻易就随波逐流(《Paradox Of Choice》)。 我们的很多决策依赖于情绪系统的输出(从进化时间上比较“旧”的大脑部分)(《How We Decide》,《Synaptic Self》),这部分大脑属于典型的经过了漫长进化时间所雕琢过的,决策机制严重适应远古社会的模块(《Mean Genes》),比如在物质贫乏的远古时期,不管什么时候遇到富含热量的食物是必吃无误的,所以我们的情绪大脑只要闻到美食是绝对不去克制诱惑的,长出脂肪又如何?有的是饥寒交迫的时候去燃烧这些脂肪。然而这条规则到了现代这个物质充裕的社会却成了灾难(去查一下美国的肥胖比例?),可谓成也萧何败萧何。这样的例子在《Mean Genes》中还有不少。 我们在学习新东西,遇到困难的时候,为什么会放弃?因为我们下意识中会对所面临的困难以及成功后所得的收益作一个评估(经典的cost/return分析),这里特别重要的是对面临的困难的评估:我们都知道学习任何一门技能,一开始可能还兴趣浓厚,捋袖子上阵,过了一阵子便会遇到一个典型的分水岭,你会发现未知的东西比你想象得要多,困难重重,似乎一眼看过去没法确信什么时候才能掌握,甚至觉得有点Mission Impossible,当觉知到的困难到一定程度之后,我们的大脑便会想:既然很大可能最终失败,甚至看不到成功的可能,为什么要白费力气去学一通呢?还不如省省呢。这是一个聪明的经济决策,去权衡性价比应该是每个经济个体的原则。然而,这个决策笨就笨在,它把困难评估得过高了,因此决策的前提就弄错了。为什么这么说呢?

    Continue Reading...