刘未鹏 Mind Hacks(2)
发布时间:2019-08-04 发布者:文案编辑 来源:原创/投稿/转载

  过去的一年我在微软亚洲研究院做输入法,我们的产品叫“英库拼音输入法” (下载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博客独立了出来,便是现在的。自从独立博客了之后我就没有再写过C++相关的文章(不过仍然一直对C++的发展保持了一定的关注),一方面我喜欢关注前沿的进展,写完了Boost源码剖析系列和C++0x漫谈系列之后我觉得这一波的前沿进展从大方面来说也都写得差不多了,所以不想再费时间。另一方面的原因也是我虽然对C++关注较深,但实践经验却始终绝大多数都是“替代经验”,即从别人那儿看来的,并非自己第一手的。而过去一年来深度参与的英库输入法项目弥补了这个缺憾,所以我就决定重新开始写一点C++11的实践经验。算是对努力一年的项目发布第一版的一个小结。

  著名科幻作家阿瑟·克拉克有一句名言(这句话是如此有名以至于被人尊称为“克拉克第一定律”):“如果一位有名望的老科学家告诉你某件事情是可能的,那么他很可能是对的。然而如果他说某件事情是不可能的,那么他极有可能是错的。” 所谓成也萧何败萧何,“知识是一把双刃剑”这个道理在心理学领域其实并不新鲜,《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,例如:所有植物都需要水,玫瑰需要水,所以玫瑰是植物。这个逻辑咋听起来非常正确,但却是完全错误的。这是我们的“直觉逻辑”常犯的错误之一,由于所有人脑袋里都知道“玫瑰是植物”这个“知识”是正确的,所以爱屋及乌地也认可了它的“伪前提”(也就是说“结论是对的”意味着“逻辑是对的”)。如果把这里的结论换成错误的,你就摆脱了“知识的诅咒”,例如:所有植物都需要水,人需要水,所以人是植物。 以上只是两个简单的例子,实际上,知识的诅咒只是我们思维的众多牢笼之一。

相关内容