瞎折腾


因为工资是从建行发的,所以我最近开始使用建行的网银。这两天在新的PC(Windows 7 64-bit)上使用,总是出现这样的错误提示:“证书签名错误,参考代码:-10031”。

ccb_10031

上网查询,解决方案都是说插件安装不正确,要求去建行下载“个人客户E路护航网银安全组件”。我反复删除、安装,都无法解决问题。而且我发现,32位版和64位版都可以安装(建行的软件开发人员难道不检查操作系统版本的吗),但结果都是无法使用。在IE里查看证书,CCB的证书状态显示正常。按照网络上其他人的经验,更换其它USB接口,问题仍然无法解决。

最后不得已我尝试使用Firefox浏览器打开网银,此时提示变成了“未安装网银安全组件”,按照指示下载,得到的不是建行网站上能下载的 CCB_E_Setup_Total_20140819_x64.exe 之类,而是名为“中国建设银行二代网银盾E路护航安全组件(大明)”的RAR文件(该文件无法直接通过HTTP下载,但可以通过百度搜索得到)。解压之后得到一个可以直接安装的.exe文件,安装过程与建行网站上下载的安全组件完全一样,但安装完成之后,无论是Firefox还是IE,都可以正常使用建行网银了。

因为看到很多人在网络上询问这个问题,而且有相当多的人一直无法解决这个问题,所以我把自己的经历记在这里,希望对大家有用。

RAR文件
文件名:中国建设银行二代网银盾E路护航安全组件(大明).rar
尺寸:4,997,453 byte
md5sum:6548583e9541c1fb20eef621a6e2eec7

EXE文件
文件名:CCB_E_LCD_ONLY_32bit_2.1.4.3_20130926.exe
尺寸:5,008,800 byte
md5sum:25733348de8d1f6831ba4b14624f5855

太阳底下到底有没有新鲜事?这是一个问题。如果有,为什么会有老话说“太阳底下没有新鲜事”;如果没有,我们每天分明又见到各种新奇的事情和问题。这到底是怎么回事呢?

不妨来看个具体的例子:同样是产生热量,我们可以给电热元件通电,也可以点天然气,还可以依靠摩擦生热,甚至还有很多我们意想不到的方式,每一种方式都其独特之处,这么看来,确实是总有新鲜事;但是从另一方面来看,这些方式可以归类为物理的、化学的等几大类,而其本质,无非是能量的转移,这么看来,说“太阳底下没有新鲜事”,又的确有道理。换句话说,“有没有新鲜事”取决于看问题的层面。通常,从具体细节来看,总是有新鲜事发生,但是分类归纳之后,往往并无新鲜可言。

不过,无可否认的是,面对新鲜事物,一句“太阳底下没有新鲜事”,即便是漫不经心说出来的,也非常有分量,充分体现出极具洞察力的专家的自信——我就知道会是这样;更进一步,不止自然科学领域,在社会科学领域,许多人也在寻找那些恒常不变的规律(或者也可以叫共性、要诀、招式),期望从此收获“太阳底下没有新鲜事”的自信。但是,他们真的能做到这一点吗?

且以近年来受极大追捧的经管类畅销图书为例,这些书之所以畅销,光看名字就已经可知道原因了:《追求卓越》、《基业常青》、《从优秀到卓越》……作者毫无例外地宣称运用科学方法分析得到了伟大(卓越)公司的经营秘诀,并且尽力将书写的生动有趣、引人入胜,旨在让读者闲庭信步间领略到“伟大的公司何以伟大”的秘诀——比如四大要素、六个步骤、八大法则等等,告诉读者成就伟大的公司并不是什么新鲜事。继而,依葫芦画瓢,也可以将自己的事业做到优秀,做到卓越……但是,就我的经验,这么做多半是缘木求鱼,充其量,可以算一厢情愿,只能体现人们对美好图景的幻象,具体原因在下面详述。

首先,经营公司要解决的问题,与自然科学的问题并不一样。自然科学解决的典型问题类似:生产某样产品需要多少原料,经过怎样的物理化学处理等等。但是公司经营要解决的典型问题则类似:根据有限的资源,到底是生产产品甲,还是产品乙,如果选择产品甲,需要按照什么次序,投入多少资源,有多大的市场,预期可以获得多少回报……每一个问题都是新鲜的,都需要具体分析。实际上,畅销的经管书籍也被迫承认这些方面没有多少成文的规律可循,它们大多以“需要有一个清楚而持续的战略”之类的说辞来敷衍。实际上,战略是否清楚,很可能是随着公司的经营而逐渐明晰的,而且很可能需要经常调整战略,所谓“清楚而持续的战略”,更多是事后的总结和包装,并不能在事前确认。

其次,公司经营的成败,很大程度上取决于与竞争对手的互动态势,而经管畅销书往往对此语焉不详,似乎更注重“内功”。实际上,与竞争对手的互动是非常考验脑力的:对这个对手,可能需要采取这种方式,对另一个对手,又需要采取另一种方式;更复杂的是,对手可能会根据你的应对做出调整,于是这一轮应对结束,下一轮应对开始……了解博弈论的人知道,随着双方的互动,形势的复杂程度可能呈指数级增长。同样的策略不可能适用于所有的对手,甚至对同一个对手,在不同的时机,也需要采取不同的策略。某个企业努力将生产效率提高了一倍,同时竞争对手提高了三倍,或者另辟蹊径抢走了市场,这样的例子是屡见不鲜的。

再次是执行,现在流行的说法是“执行至上”、“无缺陷执行”,但是经营过公司的人都知道,不同的人对“执行”的理解并不相同,同一个目标,不同方面的执行力度也是不同的。有时候需要“一鸣惊人”,确保产品在交付时没有任何缺陷,有时候又需要“先开火再瞄准”,一边运营一边改进。在这样复杂的局面下,“执行至上”或者“无缺陷执行”更像是动听的口号,却并不能产生现实的意义。

最后,卓越的公司,很少有始终“追求卓越”,从一而终地贯彻某些恒常不变法则的,它们的“卓越”,更像是一根链条——在每一个时期,在每一种环境下,采取了正确(或者说没太多错误)的策略。Intel在1985年决定全力进入周期较长但利润丰厚的微处理器领域,这是一个冒险的决定,可以肯定的是,当时的Intel并没有刻意追求“卓越”。这些环节前后相继,总的来看才能成就“卓越”,但由结果去倒推,断言甚至要求一直追求长期的“卓越”,则属于本末倒置了。

所以,我的观点是,在社会科学领域,尤其是在公司的经营管理上,很难说“太阳底下没有新鲜事”——每个阶段,每个方面,我们需要解决的问题都是新鲜的,正像之前在《收割庄稼V.S.砍伐大树》里面说的:解决这些问题并不像收割庄稼,而更像砍伐大树,而砍伐每一颗树时,都需要注意到它的形状和方向。如果一定要追求“没有新鲜事”的境界,找到什么恒常不变的法则,很可能只能“到此为止”:这些法则是每个阶段、每个方面、解决每个问题都必须遵循的一定步骤,却不是伟大公司的充分保证。当然,“成就伟大公司并没有什么恒常不变的法则”,倒真不是什么新鲜事。

我的父母都是大学生,但严格说起来,我家并不算“知识分子家庭”:我父亲是学无线电的,母亲是学分析化学的。充其量也只算是“双料理科”家庭,少点人文气息;小时候没读过什么人文经典,不过爸爸妈妈从来都不给我太多的限制,只是根据我的兴趣,讲讲各种有意思现象背后的原理。而且,托“理工科”的福,我很小就在母亲实验室用氢气充过气球,用水银温度计测过温度,用比自然教科书上精密得多的仪器制过蒸馏水;也在父亲实验室的示波器上见过各种无线电波的“样子”,在中秋节用天文望远镜看过月亮上的环形山…当然,为此也弄过不少笑话:小朋友们都喜欢互相吹嘘自己父母的工作,有的说自己爸爸是解放军,有人说自己爸爸是大干部,我说“我爸爸是研究电子枪(电子枪是阴极射线管显示器里的元件)的”,当即引来大家的不服气,而且老师也没听说过什么是“电子枪”,于是宣布我在吹牛……

读大学之后,曾有一段时间我总抱憾小时候缺了“人文经典”的课,但这些年陆陆续续看了些书,看法又有改变:虽然没动多少人文,但大言不惭地说,好歹受了点科学的熏陶。真正的科学,总是能“养住”人的好奇心,把精力引导到大千世界的奥妙中去;即便不从事尖端的科学研究,多了解一点点科学,也能大大丰富自己的认知,看到与之前大不一样的世界,生活也会因此多了不少妙趣。

但是,要保持对科学的兴趣,对我们来说并非易事。现在许多人说起“科学”,想到的要么是不苟言笑、木讷寡言的孤僻,要么是全知全能、四处指点的霸气,所以多少有些“敬而远之”的味道。我有幸从小就接受科学的“浸染”,能够以柔润自然的方式体会到科学的妙趣,欣赏知识之美,并保持至今;另一方面也时常有些惋惜,我们本身就缺乏科学的传统,当今的科普又缺乏“柔润”,所以科学或被奉为神明,或被斥为外夷,总之就是“科普不得法”,许多人抱怨生活无聊乏味,这或许也是原因之一。

不过,科学松鼠会算是科普中的异数。借用革命导师的话说,“让科学流行起来”的口号,给科普增加了中国作风和中国气派;虽然某些人觉得不够严谨,但事实是最有说服力的:以我的经验来说,活动总是妙趣横生,嘉宾也总是和蔼严谨,这正是我所欣赏的“柔润”的方式。尤其是创始人姬十三,我见他之后最高兴的是:如今终于可以正经讨论我看《恐龙特急克塞号》时的奇怪念头——“如果几千万光年外的外星人,看到了恐龙灭绝的情形,用录像机录下来,再传回地球,我们就可以知道恐龙灭绝的原因了”,这样的人作“大当家”,还有什么好说的?后来参加“科学嘉年华”的经历,更是肯定了这一点。

在北京的时候,我参加过松鼠会好几次活动,大感意外的是,有许多年轻的家长带着孩子来参加松鼠会的活动,看到他们,我总是想起自己的童年,继而心生羡慕:他们要更加幸福,因为他们遇到的科普更丰富,更好玩,也更深刻;这样的孩子,一定能从容面对科技更加发达的生活。

今天看到松鼠会“寻科学逃兵”的活动,我立刻答应帮忙吆喝两声:年轻的时候,能做点自己真正喜欢的而又有意思事情才好,哪怕累,也是有意思的累(借用韩寒的话说,等你老了回忆自己的年轻岁月,至少敢说真正做了点有意思的事情);真正对科学有兴趣的同学们,不妨大胆去争当“逃兵”,我相信,科学的逃兵,能在松鼠会“淘”出点意思。

——————————【北京 and 上海】招聘职位分割线—————————–
科学编辑
科普图书编辑
实习编辑
IT实习生
NGO合作官员
媒体品牌主管
会计
公益活动志愿者

http://songshuhui.net/job/

时间在流逝,年龄在增长,我们的生活中,规律、克制的成分越来越多,电脑游戏,已经退化萎缩成偶尔偶尔出现的点缀,但是旧日记忆却终究无法忘却;譬如我,总无法忘记1995年那隔行抽色的动画——散发着神秘气息的绿色WESTWOOD,在水波纹里慢慢浮现,又慢慢漾开消失,记得当年一个叫卫易的专栏作家写过:我曾经无数次地戴着耳机奋战在深夜,只因为无法忍受没有音乐的C&C。

1998年的夏天,我在同学H的家里第一次见到了那个游戏,银光闪闪的战舰,喷出巨大的火舌,顷刻间,强櫓灰飞烟灭。他告诉我说,这是《星际争霸》。然后,就开始无止境的厮杀,我因为家里管得严,自己的电脑玩不了(当时用的486),多数时候只能短暂观摩;班上有几个同学,每天省下午饭钱,去学校后面的电脑房玩《星际》,若干次被学校领导抓住,拍下录像全校公开放映批评也在所不惜;同学X天资聪颖,负责帮老师收奥赛班的学费,每次上缴之前会先“挪用”了叫大家去一起玩,以后再东拼西凑出来交给老师(这就是原始的无息贷款啊);有一次上语文课,易老师说:你看你们这几个同学,肯定又是玩电脑去了,为什么呢?用一个词来行容,就是目光迷离…;当时网络很不发达,于是大家每个月争相去买各类游戏杂志,只为看上面的战报,结果我们第一次知道了有个加拿大小伙子叫GRRR,知道了克隆,如今看来朴实甚至粗陋的文字,总能勾起大家无尽的遐想……
之后上大学,CS兴起了,网络游戏(龙族、万王之王)兴起了,一小撮星际的爱好者只能在学校地理系(现在的城市与环境科学学院)机房里厮杀,我当时总在图书馆,看书累了就去玩两局,ID是1st……

毕业之后,就没玩任何电脑游戏了,即便公司有时为了沟通感情,组织大家玩CS,也只是敷衍敷衍;直到07年数字电视开通的那一天,我发现居然有个频道叫“游戏风云”,播放的是熟悉的星际的画面,于是往日的记忆瞬间就穿越了时间的距离……我清楚地记得,当时的演播环境还很原始,大师(大师是玩家对郁小刚的爱称,他因为对战术的深入把握,赢得了“泛亚太第一流的战术大师”的美誉)出场的时候,我们打趣说这是哪个网吧的老板,Alone(注:Alone是PLU的工作人员,常年坚持解说星际比赛,以插科打诨见长)到现场来,仍然穿着凉鞋,而导播居然没有注意……
2007,2008,2009,2010,这四年来,游戏仍然玩的极少,只是陆陆续续看了些《游戏风云》的节目,眼见节目逐渐有了自己的风格,细节也逐渐完善,有了冠名,有了定制服装,有了宣传动画;看到他们的每一点进步,我心里都很佩服:毕竟,这是没有人涉足过的领域,也是不确定性非常大的工作,但到底有人坚持了下来,难得的是,节目一直在成长。所以,面对2009 PLU星际第一人的决赛的门票,我毫不迟疑地买下了。

2010年4月18日,在上海华山路680号上戏剧院,我目睹了一场老男人的聚会,举目看去,大家的年龄都差不多。星际争霸,是专属于那个年龄段的记忆。

(more…)

从某种意义上说,人的一生,就是不断突破个体经验的局限,解决未知问题、体验未知生活的过程——否则,我们只需要简单重复劳动,就足以应付了。也正因为如此,要避免在未知局面下的束手无策,借鉴前人/他人的经验,就是非常有效而且高效的做法。今天我要谈的这本书,正与他人的经验有关。

97 Things Every Software Architect Should Know,这是一本很“奇怪”的书,书名很“托大”内容很“平实”的书。我与这本书结缘也很奇特:去年博文视点的编辑徐定翔告诉我,正在翻译一本书,请我帮忙看看译稿,提提建议(后来才知道译者还有阿里B2B的章显洲)。我虽然没做过架构师,但恭敬不如从命,就答应了。

开始,我关注更多的只是文字和专业名词/术语方面,从技术本身的考虑比较少。因为一来自己不是架构师,也没有这方面的经验;二来,这种口气的标题,总觉得有点狂妄。不过,跟着译稿一篇篇看下来,我的看法逐渐改变了:虽然这本书更类似97篇随笔,但到底是经过选择和编辑的,即便“随笔”,也是围绕着“软件架构师”的“随笔”,它们大致勾勒了架构师这个职业的方方面面——职责、权力、问题等等,我之前以为架构师更多地偏向技术方面,也就是负责“规划”整个软件系统的结构,但本书各位作者,都认为架构师应当是甲方和乙方之间的桥梁,一方面,负责准确理解客户的意图,另一方面,拿出规划给技术部门实施。也正因为这种定位,软件架构师虽然大都是从技术人员成长而来,却不能继续埋头在技术(技术架构)的道路上走下去,而需要补充多方面的知识,培养多方面的能力——怎样与客户沟通,怎样选择合适的架构(不能仅仅从技术方面考虑),怎样说服(注意不是命令)技术部门采纳自己的方案。书中不仅点出了这些问题,也给出了一些解决的建议;譬如第85章就告诉读者,说服甲方,仅仅依靠技术的术语是远远不够的,必须把整个技术方案包装成有吸引力的商业模型,这样说服力才会大大增加。如果希望成为称职的软件架构师,此类知识还是尽早了解的好,毕竟,都依靠自己去摸索,在挫折中学习,实在很不划算。
另一方面,架构师也脱离不开技术,所以,技术人员阅读本书,又可以从另一个角度(也可以说是更高的层次)来审视自己的工作及其意义,我的感觉是,一些经验,自己之前只有模糊的认识和体会,但书中的文章它们挑出来,表述得更明确、更到位,于是自己心里也更加有数了。譬如第82章指出“你客户的客户才是真正的客户”,这是非常之对的,而许多技术人员因为自身角色和视角的关系,往往很少意识到这一点:假设你给客户开发了一个电子商务网站,该网站的信誉评价功能不够完善,对此,你的客户可能仅仅认为“这个功能需要改进”,而客户的客户,也就是真正使用这个网站的人,他们的反应很可能是“这个网站买不到真货”,选择离开。有句俗话说:聪明人就是能多为别人着想的那种人。如果能够明确且重视这一条经验,甲乙双方的合作很可能就会融洽得多,技术人员的价值也会随之上升许多。类似这样的经验,书中还有很多,作为技术人员,阅读的时候很可能会感觉“于我心有戚戚焉”,至少,我看到“要经常反思自己做过的项目”时,就是这种感觉。

鱼与熊掌不能兼得,随笔专辑性质的书,照顾了“广”,就难以照顾“深”,因此,在亚马逊网站上,指责的意见都是针对这方面的:lack of detail,random accumulation…。但是我想,书有很多种,定位当然也不一样,应当各司其职——满足了自身定位的书,就是“好书”。这本书也是如此,读者权当这是在旁听架构师的茶话会好了——资历尚浅的听一听,开阔开阔自己的眼界,资历深的听一听,整理整理自己的经验,都能收获愉快的阅读体验;况且,还有平时难得听见的“小道消息”——世界上最先进的F22战斗机,对飞行控制的要求极端严格,应当选择怎样的软件;M1A1艾布拉姆斯主战坦克,开炮的时候会产生极强烈的电磁脉冲干扰计算机工作,这情况下要采用什么数据库……

beta技术沙龙越办越有意思了,上次错过了阙宏宇的mod_cache(还有关于线程进程的讨论)就很可惜,这次关于Lucene的演讲,是无论如何不应该错过了。

到目前为止,全文检索已经完全不算高技术门槛了,记得以前看过一本书里面写:“今天,任何程序员,都可以很容易地构造一个全文检索应用”。是的,全文检索的基本原理大家都知道差不多了,剩下的只是实践。我见过纯粹自己开发的,具有AS(Advanced Search)、BS(Basic Search)、DI(Digest)等结构,“像模像样”的全文检索架构,不过应用更多的,却是在开源项目上完善、定制而来的,Apache的Lucene就是众多开源全文检索项目中,名气最大、资格最老、应用也最广泛的一个。本期beta技术沙龙,讲的就是大型网站中lucene的应用,主讲人是手机之家团队的唐福林(“手机之家”总是有些东东来共享,比如上次的DAL,这真是不错)。

众所周知,用Lucene构造一个“索引-查询”的应用是非常简单的,搭好环境,参照(修改)示范代码,很容易就可以成功。但是,要构造一个真正大规模、稳定、可靠的应用,就不说这么简单。程序的编写、模块的分布、架构的设计,都有许多费心思的讲究。按照PPT提供的数据,手机之家目前的Lucene应用,采用的是Lucene 2.4.1 + JDK 1.6(64 bit)的组合,运行在8 CPU, 32G内存的机器上,数据量超过3300万条,原始数据文件超过14G,每天需要支持超过35万次的查询,高峰时期QPS超过20。单看这些数据可能并没有大的亮点,但它的重建和更新都是自动化完成,而且两项任务可以同时运行,另一方面,在不影响服务可靠性的前提下,尽可能快地更新数据(如果两者发生冲突,则优先保证可用性,延迟更新),其中的工作量还是非常大的。

演讲的主要内容都PPT里,非常丰富,我就不再赘述了。要补充的是,这份PPT做得非常清楚,需求-目标-进度-设计-上线-测试-上线,整个流程非常清楚,给出的数据同样非常精当,我想,这也反映了手机之家团队的开发规范。

因为对Lucene的使用稍微有些经验,我在这里补充几句,权当狗尾续貂:

  1. 在大规模的应用中,Lucene更适合用于狭义的“搜索”,而不应当负责数据的存储。我们看看Lucene的源代码也可以知道,Document和Field的存储效率是不够好看的。手机之家的团队也发现了这一点,他们的办法是,用Lucene存放索引,用Memcache + Berkeley DB(Java Edition)负责存储。这样有两个好处,一是减小了Lucene的数据规模,提高了程序的效率;另一方面,这套系统也可以提供某些类似SQL的查询功能。实际上,Lucene Project自己似乎也注意到了这个问题,在Store中新增了一个db选项,其实也是利用的Berkeley DB。如果仅仅用Lucene存放索引,而不存放Document,并且合理配置,一台机器可以支持几十G甚至上百G的索引;如果需要用Lucene存放索引,最好在读取时使用FieldSelector,只读取需要的Field,如果使用恰当,性能会有10%左右的提升。
  2. 在大规模应用中,Cache是非常重要的。PPT中也提到,可以在程序提供服务之前,进行几次”预热“搜索,填充Searcher的Cache。据我们(银杏搜索)的经验,也可以在应用程序中,再提供针对Document的Cache,这样对性能有较大的改善(同一个JVM内部的Cache,速度更快一些)。Lucene自己似乎也注意到了这个问题,在2.4版本中提供了Cache,并提供了一个LRU Cache实现。不过据我们测试,在极端情况下,这个Cache可能会突破大小限制,一路膨胀最后吃光内存,甚至从网络上找的许多LRU Cache实现在极端条件下都有可能出现这样的问题(这也是我们百思不得其解的地方:反复检查程序的逻辑都没有问题),最终自己写了一个LRU Cache,并修改多次,目前来看是稳定的。
  3. 在编写Java服务程序的时候,记得设置退出的钩子函数(RunTime.getRunTime.addShutdownHook)是一个非常好的习惯。许多Java程序员都没有这种意识,或者有,也只是写一个finalize函数,结果程序非正常退出时,可能造成某些外部资源的状态不稳定。拿Lucene来说,之前的IndexWriter是默认autoCommit的,这样每添加一条记录,就提交一次,好处是如果中断,则之前添加的记录都是可用的,坏处则是,索引的速度非常低。在新版本中autoCommit默认为False,速度提升明显(我们测试的结果是,提高了大约8倍),但如果中途异常退出,则前功尽弃。如果我们添加了退出的钩子函数,捕获到退出信号则自动调用writer.close()方法,就可以避免这个问题。
  4. 目前的Lucene是兼容JDK 1.4的,它的binary版本也是JDK1.4编译的,如果对性能要求比较高,可以自行下载Lucene Source Code,用更新版本的JDK编译出.jar文件,据我测试,速度大约有30%的提升。
  5. 如果对并发的要求较高,可以考虑采用多IndexSearcher的技术,也就是在一个应用服务中,开启多个IndexReader(可以对同样的索引开启多个),每个IndexReader再生成一个IndexSearcher,将这些Searcher放在一个“池”里头,给搜索请求调用。这样可以大幅度提高并发的性能,代价是在写程序的时候就要考虑到这一点,进行相应的调整。

P.S. 据我观察,国内公司内部的项目,一般取的名字都中规中矩,以’er’结尾的比较多,多是Indexer, Crawler, Layer之类。好像很少有外国那种“天马行空”的奇特名字,譬如Hadoop(这是一个“没来由”的名字)、Lucene(这是个少见的姓)。国内我接触过不多,以前抓虾有个重要的DB叫tudui(“土堆”),目前银杏有个项目叫LaserTank,都是跟实际用途毫不相关的,印象反而深刻。

虽然医生嘱咐要静养,可谁让“小姬看片会”那么好玩呢?周六下午两点钟,我顶着大太阳来到微软亚洲研究院地下一层的会议厅,加入了第9期小姬看片会。

本次看片会的主题是“人工智能如何改变世界”,选的影片是BBC的VISIONS OF THE FUTURE。这样“科技含量高”(用松鼠的行话说,就是“高级”),又比较偏IT的主题,放在这里举办(尤其还有免费饮料提供),真是再合适也没有了。
参加的人很多,看来大家热情都比较高,我首先找了个僻静地方“潜伏”下来,过会儿居然有人来打招呼,一看居然是刘未鹏,不久又遇到图灵的刘江老师。寒暄一阵,眼看影片要开始了,我提议搬三把椅子坐到中间的过道里,这样比较靠前,大家一致同意,于是搬了三把椅子,在过道里前后排成一列,影片正好开始。

影片分好几个方面,介绍了广义上的“人工智能”:模拟人类行为、虚拟现实、机器与生物的结合等等。关于狭义的“人工智能”,也就是与“智慧”相关的内容,并没有占太多的比重。我觉得,作为科普影片,这样的安排,是没有错的。
影片结束之后,照例是嘉宾与观众的互动环节,这次的嘉宾都很“高级”,几乎都是IT专业人士,即便有研究科幻非IT人士,来头也相当大。难能可贵的是,他们回答起问题来,丝毫没有普通人想象中的“死板”,而是妙趣横生,许多时候台上台下笑成一片,这正好应了松鼠会的口号:让科学变得有趣。另一方面,它也说明,活动办得非常成功。

我不是研究人工智能的,只是以前稍微看过一点点资料,参加完这次活动,也有两点想法,可惜小姬没给我当场提问的机会(观众实在是太热情了),写在自己blog上吧。
关于“人工智能”,我想大概可以分为好几个方面,之一就是“仿真”(也就是模拟生物体的机能),在片中我们可以看到,现在已经有机器人可以惟妙惟肖地模仿人类的许多行为,譬如会走路的机器人Asimo;换句话说,神秘而简单的生物行为,可以通过物理模型、数学公式来分解,加以实现。人类“潜意识”里的某些“感性”动作,譬如“向前走五步”,可以转化为一系列精妙的指令,以另一种方式来“理性”实现。当然,这个方面也存在困难,譬如王启宁博士所说,用电气元件模拟生物行为,总是存在若干困难,因而有时候,“电气元件–生物”混合的方式,反而效率更高。这一点在影片中也有提及,研究人员记录了小白鼠脑内的海马区(与短期记忆相关的区域)在不同情况下的电流脉冲,再照这些规则制造出芯片,植入小白鼠体内,据称“反应速度提高了40%左右”。我对这个例子很有兴趣,可惜,它在影片中只是一带而过。
另一个方面,也是大家非常感兴趣的方面,就是“机器能否具有智慧”,或者说“机器能否像人一样思维”。这个问题,关于这个问题,前面有过著名的图灵检验,后来塞尔教授又提出过“中文屋子”问题,于是产生了“强人工智能/弱人工智能”的分野。按照程序的逻辑,我们关心的是“接口”,而不是“实现”。也就是说,不管我们面对的“其实”是机器,还是人,只要我们无法做出区分,就可以认定,对方“就是”人,虽然就其“本质”上来说仍然是机器。我之所以对那个小白鼠的例子感兴趣,原因也在这里:如果我们不去关心这些脉冲所“承载”的意义,而只是在“黑屋子”外,模拟我们观察到的一切,能产生完全相同的结果,那么或许可以说,电脑模拟的这些信号,本身也“承载”了同样的意义?
关于这个问题,现场的毛老师也提到,关于“什么是人(智慧)”,我们目前可能很难给出一个确定的定义,而只能通过多个特征加以描述和归纳,如果机器实现了这些特征,我们仍然“愿意”觉得,这还是与人有区别的,或者说,大家心中,其实多少还有一点对“人类本质”的偏执。在我看来,这有点类似波普尔所说的“本质论”和“标签论”的关系,通过“贴标签”而不是“追求本质”的方式(譬如把某种现象定义为“重力”而不是研究“重力的本质是什么”),科学已经取得了长足的进展,未来有一天,如果我们彻底无法区分面对的是人还是机器,我们是认定“这就是人”,还是心智紊乱,或者苦心积虑地找到另一种“定义”,把对方排除出“人”的范畴?这是个有意思的问题。
另说一点,在看片的时候,我忽然想到象棋与围棋,机器“深蓝”已经可以在国际象棋上打败人类世界冠军,但是对于围棋,目前人工智能却束手无策,最好的围棋程序,也敌不过一般的围棋爱好者。大家认为,主要原因是围棋的可能性太多,决策树太过复杂,超过了目前计算机的计算能力。如果人类的大脑能够处理这样两类计算量迥然不同的任务,这到底说明,我们理解棋类游戏的算法思路有问题(也就是说,大脑的运算能力是一定的,只是我们还没找到围棋的高效算法),还是人类大脑的运算(思维)能力,其实是不能以单一维度衡量的(从某个维度上来说,在解决围棋的问题上,大脑可以展现出远远高于象棋的计算能力)?

好了,闲话这么多,就此打住。最后给松鼠会提两点意见:
1.我看片的时候,听讲解的同时看了看字幕,发现字幕有一些翻译错误,所幸不是很严重。因为字幕是合成在影片一起的,所以,这样的问题也不能怪罪松鼠会。不过以后准备材料时,多注意一些这样的细节(如果同一部片子有多个字幕,不妨选择质量最好的那个版本),另外互动环节如果出现问题应该当时纠正(比如有人说“吃转基因食品,我们的基因就会随之变化”,应当有人马上澄清),可能更好点。
2.如果能够在影片结束后,做一些入门性的背景介绍(譬如这一次的,可以介绍图灵检验,中文屋,图灵完备性等概念),这样可以真正“以科普为中心”,而不会“以影片为中心”,对主题起到辅助和补充的作用(而不限于影片所介绍的知识),在专业的嘉宾和热情的观众之间夯实基础的沟通桥梁,效果可能更好。

现实的世界这么复杂,上帝到底起了什么作用?
有人说,上帝就是创生世界的第一因,他是这个因果链条的第一环,然后世界就“自顾自”地出现了;
也有人说,其实因果链条上的每一环,表面看来是逻辑联系,其实都是上帝的意志;

这个问题我们不回答,我们能确定的是,在这个高科技的社会,生活中的各种事务,背后都是技术的“意志”;正因为如此,温伯格在《技术领导之路》中说,在这个时代,技术人员拥有强大的力量,只是需要发掘自己技术(技术知识)的价值,所以他还会花专门篇幅讲到力量转换。

今天写上面的话,是因为今天又看到有朋友在不厌其烦地详细介绍wordpress的维护。我想说的是,作为技术人员,不妨多动些脑筋,想想如何依靠技术解决更广泛的问题。譬如Wordpress的维护,我之前也饱受折磨,某天终于发现,PHP可以直接调shell,shell里面又可以直接调mysqldump——这样,只要简单几个Web页面,就可以完成wordpress的升级、文件备份、数据库备份和恢复,再通过Cron,就实现了blog的定期备份和日常维护,从此高枕无忧。

技术的力量,其实无所不在。

俗话说“无巧不成书”,还真是这样。上周末的“巧”,就是RSS:周六跟抓虾的朋友们聚餐,周日下午Beta技术沙龙的主题就是“网易有道RSS阅读器”。

Beta技术沙龙在詹膑老师的“奇遇花园咖啡馆”举行。在车水马龙的西直门,能找到这样一个安静的地方,实属不易(当然也很难找,我们开玩笑说还应该开一家“齐秦菜园餐馆”)。装修也别有味道:明亮的落地窗,颀长的红色窗帘,极高的天花板……第一次去的时候,我瞥见高架上堆放着一排白色的书:“看那样子,应该是川端康成的《雪国》和《伊豆的舞女》吧?”,詹老师微笑颔首。

“有道”这个品牌,最早应该是作为博客搜索引擎出现的,07年末又诞生了有道阅读器。如今RSS在线阅读器日趋流行,有道赶上了好时候,又可借助网易的资源,相对其它一些阅读器,条件好得有点让人嫉妒,但是能在一年多的时间里做到今天这样的程度,也确实下了不少工夫。此次来的三位嘉宾,胡琛、王焱和刘懿,分别从运营、技术和产品三方面介绍了有道阅读器,包括遇到的问题,解决的办法,对未来的思考……看得出来,他们的准备非常认真仔细。
当然,既然名为“技术沙龙”,参与者最关心的,还是技术的方面:系统的架构是怎样的、采取了怎样的策略、出现问题如何解决……看他们的PPT,我最深刻的感觉是“天下大同”:各家的技术,或许细节上有所差异,但总的思路和方向,大抵不会相差太远。当然,最让我羡慕的还是他们可以使用网易的存储系统,轻松备份超过20T的数据,高枕无忧,这太让人嫉妒了(曾经有天晚上,我因为太困误删了极为重要的用户数据。当时已经十一点半,就准备休息了,结果惊出一身冷汗。而且之前没有及时备份,所以只能想法从四处导出数据“拼”回来,折腾到四点才算写完恢复程序,让它正常运行,第二天总算没让用户发现,那次事故印象太深刻了)。

整个沙龙的气氛轻松而随意。主题演讲结束之后,主持人说:“下面大家自由开小会吧”,于是会场瞬间热闹起来。坊间传言:“沙龙的成功程度,取决于小会的热闹程度”,这样看来,沙龙是很成功了。

这次活动还有点小意外——有位素不相识的朋友(原来是Robin)很意外“没想到《精通正则表达式》的译者也在场”。是的,我们都没想到,这倒正合咖啡馆的名字:奇遇花园。

现场图片(如果这是一张世界地图,我就在新西兰的位置:))

认知心理学中有这么个实验:被试面对一红一蓝两盏灯,要求预测每次实验时哪一盏会亮起来;实验要进行许多次,并按照准确率给予一定的报酬。实际上,每轮实验,红灯亮的概率都是70%,蓝灯是30%,但是两种灯的点亮顺序是完全随机的。
在实验中,大多数被试很快就发现了,红灯亮起的频率要远高于蓝灯。尽管如此,大多数人都希望找到一个模式,能够准确地“预测”下一次亮起的是什么颜色的灯。极少有人认识到,如果“两眼一抓瞎”,全部猜红色命中,反而能有70%的准确率——只是这样选择必须克服“明知道会错”的心理障碍。而追求“100%”的准确,即便能够在红灯亮起的70%中命中70%,蓝灯亮起的30%中命中30%,仍然只有(70% * 70%) + (30% * 30%) = 58%的命中率。
这个实验说明,即便需要面对不确定性,人还是偏好“完全准确”的预测,哪怕依据毫无道理,哪怕“愚蠢”的做法本来能够带来更高的收益。

生活中,我们经常可以看到的“赌徒心态”,就是这种心理偏好的表现:赌徒往往希望获得100%的准确率,因此尽管大多数赌博属于“独立事件”(也就是说,前一次赌博和后一次赌博之间是互不影响的),赌徒仍然希望构建出一个模式,实现“更准确”的预测。卖彩票的地方通常会挂一张大图,显示“中奖趋势”,“预测”将来走势,这也是“赌徒心态”的常见形式(这里需要补充一点,有人潜心“分析趋势”,结果“中了大奖”,但“分析趋势”与“中大奖”两个事件之间,其实只有时间上的先后关系,不存在逻辑上的因果关系,这道理就好像“春天在夏天之前,但春天不是夏天的原因”一样)。
别理解错了,我并不是说,赌博的时候不必动脑筋,应该纯粹碰运气。我的意思只是,在不可能有什么“准确”规律的地方,去追求100%的命中率,无异于缘木求鱼,是完全徒劳的。有头脑的赌徒不会做这样的事情,他们能获得较大的胜率,借助的往往是上面红蓝灯测试中“接受错误来减少错误”的原理。有兴趣的读者,不妨去翻翻费曼写的《别闹了,费曼先生》,看看这个通晓统计原理的家伙,是怎样下注的。

我们深入思考就会发现,不信任统计学,否认或者逃避客观存在的偶然性,其实是“赌徒心态”的根源。在现实中,这种“力求百发百中”的心态还有另一种表现:对于没有100%——或者说,非常大——把握的事情,就不愿投入精力。常见的情景就是,不少人既想学(干)这个,又想学(干)那个……但仔细想想,这个也“不一定”会有好结果,那个也“没把握”会有大的收获……。最后的结果往往就是,迟迟不敢选择(借口是“还没想好”、“还没把握”、“要谨慎”),时间就这样白白浪费了。
有人会开脱说:凡事要“想明白”再动手。然而,他们希望的“想明白”,其实还是希望知道一个准确的结果,“这个有50%的成功率,那个有60%的成功率”,是他们不愿意见到也不愿意接受的,“现实那么复杂,这类‘没定数’的事情还是不要白费气力了”——于是就要继续“想明白”,甚至用终生来“想明白”了。
的确,我们的生活由无数的因素构成,充满了偶然性。许多事情的规律,只能用统计概率来描述,尽管我们更偏爱“准确”的结果,但充满“偶然”的客观现实,我们应该有勇气接受。其实我们也能够接受。说明这个道理,我常举的例子就是:动手术,有两种方案,一种的成功率是50%,另一种是70%,尽管这两个数字都是大量采样之后的结果,尽管手术失败对于个体来说就是0%的成功率,但是,大多数人无疑都会选择70%的方案。也就是说,即便面对充满偶然性的概率问题,大家其实是能够接受统计规律,也懂得如何选择的。

这些年来,我见过许多人否定学习的理由就是:“学那玩意干嘛?将来又‘不一定’会用到(或者是,谁知道将来怎么样呢)”。其实它的潜台词是,“不如再等等看看,看明白了、有把握了再说,至于现在,还是放松放松好了”。
是的,许多事情有点“撞大运”的色彩:天上掉下的馅饼,不太可能正好掉到你手上。但是,你手里的盘子越大,一旦馅饼掉下来,还是“更有可能”掉在里头的。所以老话说,“机遇只偏爱有准备的头脑”,而不是“有准备就能遇到机遇”,也不是“没看到机遇之前,别做准备”——所以又有句老话说“所谓幸运,就是你做好了准备之后,机会恰巧来了。”

Next Page »