你的香蕉怎样剥?

15 years ago

我第一次吃香蕉的时候,顺手把蕉把(也就是互相连结的那一头)一揪,就开始剥皮。父亲看了说:怎么能这样剥香蕉呢,一定要从另外一头开始剥的。在父母面前,小孩子当然不敢当面顶撞,而且,我并没有尝试过从另一头开始剥。可是比较两种方法之后,我觉得还是自己的方法更好,于是去找父亲理论。父亲又试了试,说:“真怪,从这一头来剥,果然是要省事一些,可是我们从小到大,都是从那头开始剥皮的呀。” 这件事过去已经有二十多年了,我却时常想起它,开始只是告诉自己“不要迷信权威”,到后来,我逐渐发现,在生活中,一些看似简单的事情,似乎有“想当然(甚至都不用‘想’)”的做法,可是这做法未必好,许多时候,我们甚至需要意识到“我这是在想当然”、“想当然其实并不是好的办法”,于是或者另辟蹊径别出心裁,或者放下身段重新学习,结果要么遇见别样洞天,要么由此再上层楼;这样的事情,在我的生活中,一次又一次地被验证。 最近一次的经验,来自读书。 我最开始读书,主要看重的就是故事情节,哪几个人,发生了一回怎样的事情,了解了这些,就差不多够了。那时候,除了情节,学校语文课顶多教教“拿个小本子,把优美词句、名人名言记录下来”。这种做法,我从来没有尝试过,所以它有什么效果,我也不得而知。“读书这样简单的事情,还有什么道理可言吗?”许多年里,这就是我“想当然”的观点。 印象里,第一次启蒙来自在大学学到姚斯的“接受美学理论”:审美经验原来分为三个层次!原来普通的“愉悦”只停留在最表面的层次!这可以算“歪打正着”吧,姚斯说的本是对于文艺作品的接受,可是我却想到了自己读书的方法原来那么“原始”,并一下子明白了,为什么同样读一本书,不同的人能谈出来的内容完全不一样。 原来,这道理就和剥香蕉一样,即便是“读书”这样“再简单不过”、“人人都会”的事情,居然也可以有门道可言,居然也有规矩可讲。在这些门道和规矩面前,我这个“读”了许多年书的人,似乎根本“没有上道”!于是我开始有意识地学习和锻炼读书的方法:记住作者的名字,了解作品的背景,寻找文字的特点,并且,要针对不同的文本,选择不同的方法和侧重点……这样下来,成效大增(去年有位朋友与我谈及读书,最后问我:你这样的阅读境界,是怎样来的呢?) 读书这样简单的事情,自己探索和反思都可以收到这样的成果,那么已经成型的“门道”和“规矩”,岂不是帮助更大?可是,这些“门道”和“规矩”,究竟在哪里呢,是不是只能自己反省、参悟?这个问题我一直不很清楚,直到最近接触了《如何阅读一本书》才想到,所谓“门道”和“规矩”,大概就存在于这样的书里头罢。 《如何阅读一本书》,就是一本关于“读书”的书(是的,它就好像一口咬住自己尾巴的蛇)。这本初版六十多年来不断重印、再版的书,就是要教会读者读书的方法。大致来说,整本书分为三个部分:第一部分可以视作纵向探究,主要向读者介绍阅读层次的概念,由下而上依次介绍了基础阅读(也就是初步的,毫无结构的阅读)和检视阅读(带有结构意识,能够抓住主题的阅读)。第二部分则着重讲解阅读的第三层次,也就是分析阅读,即如何“通透”——紧紧抓住这本书,做到“我注六经”,读到这本书“真正属于自己”为止。有过亲身经历的人都知道,这并非易事,大学里的一些课程,老师会带领学生,把大量的精力倾注到少数的经典上——可惜,许多人即便花了大量的时间精力,因为没有掌握合理的阅读方法和技巧,也无法达到“通透”的境界;我想,作者之所以愿意花三分之一的篇幅来讲分析阅读,原因也部分在于分析阅读是如此重要,而它本身又需要大量的技巧和锻炼。全书的第三部分则可以视为横向解剖,在这一部分,作者分门别类地讲解了各类书籍的阅读方法:实用型的书籍要如何阅读,想象文学要如何阅读,历史、科学、数学、哲学类书籍,又应当怎样阅读……虽然我们未必要完全遵照其中的方法去阅读各类文本,但是相比自己从头开始积累,书中提到的各种办法,无疑是具有相当价值的,不容错过。 另外,这本书也有一些总览性建议,我觉得很受用,譬如阅读书籍时,要仔细观察目录,要读一读作者的前言,要仔细想想每一部分的标题……这些都是我之前读书不太重视,其实又非常重要的技巧(当然,这也可能与我国特色的前言、序言有关,不信,看看《中华人民共和国宪法》),以后应当努力改进。 也许有人会说:读书就是读书,要那么多条条框框干什么,太累了。 没错,一千个读者就有一千个汉姆雷特,极端地说,作品的意义完全存在于“接受”的过程之中。可是,我又分明看到,同样的一本书,同样的时间,有人还在刀耕火种,也有人读书却已经开上了联合收割机——虽说都是“接受”,可是接受的深度和广度,却有如此的差别。造成这种差别的,恐怕并非悟性,而是清晰的思维,和长期有意识的锻炼。 朋友,你的香蕉是怎样剥的?你的书,又是怎样读的呢?

《精通正则表达式》第四次重印

15 years ago

出版两年之后,《精通正则表达式》马上要第四次重印了,这个消息很是让我兴奋。 我读大学的时候,有幸接触到侯捷老师的许多文章,尤其是他谈关于选择技术书籍的言论,感觉受益匪浅——正是从此,我深刻认识到,“学习”的宾语不应该是“教材”,而是“知识”。认识到这一点,就豁然开朗了;当然,也无比真切地知道了好的书籍是多么重要。 另一方面,我也深信,总的来说,知识的价值是在传播中实现的。我经历过“有了新的收获自己保密,一人独享”,也经历过众人把自己的心得拿出来分享、彼此协作的环境,两厢对比,后者提供的满足感远远超越前者。因此,有更多的人迅速学会“卑之无甚高论”的正则表达式,不需要重走我自己当初学习的弯路,对我来说,也是一种不小的满足(相比之下,帮人写各种表达式所得到的满足,实在是“很小很小”)。 在这里还要感谢博文视点的编辑许莹,她细心地把目前勘误列表列出的所有错误都做了订正。因为《精通》一书中存在的错误,始终是我的一块心病。 另外,要兑现我年初的计划,今年要写一本关于正则表达式的书,正好在这里征集大家的意见:你们是期望它更加“下里巴人”,包括Word, EditPlus等等常用软件的应用例子,以应付更广泛的工作呢;还是希望更加“阳春白雪”,与狭义的“IT行业”(也就是开发)靠的更近呢? 或者有什么别的想法,还请不吝赐教。

6月26日看片会:人工智能如何改变世界

15 years ago

虽然医生嘱咐要静养,可谁让“小姬看片会”那么好玩呢?周六下午两点钟,我顶着大太阳来到微软亚洲研究院地下一层的会议厅,加入了第9期小姬看片会。 本次看片会的主题是“人工智能如何改变世界”,选的影片是BBC的VISIONS OF THE FUTURE。这样“科技含量高”(用松鼠的行话说,就是“高级”),又比较偏IT的主题,放在这里举办(尤其还有免费饮料提供),真是再合适也没有了。 参加的人很多,看来大家热情都比较高,我首先找了个僻静地方“潜伏”下来,过会儿居然有人来打招呼,一看居然是刘未鹏,不久又遇到图灵的刘江老师。寒暄一阵,眼看影片要开始了,我提议搬三把椅子坐到中间的过道里,这样比较靠前,大家一致同意,于是搬了三把椅子,在过道里前后排成一列,影片正好开始。 影片分好几个方面,介绍了广义上的“人工智能”:模拟人类行为、虚拟现实、机器与生物的结合等等。关于狭义的“人工智能”,也就是与“智慧”相关的内容,并没有占太多的比重。我觉得,作为科普影片,这样的安排,是没有错的。 影片结束之后,照例是嘉宾与观众的互动环节,这次的嘉宾都很“高级”,几乎都是IT专业人士,即便有研究科幻非IT人士,来头也相当大。难能可贵的是,他们回答起问题来,丝毫没有普通人想象中的“死板”,而是妙趣横生,许多时候台上台下笑成一片,这正好应了松鼠会的口号:让科学变得有趣。另一方面,它也说明,活动办得非常成功。 我不是研究人工智能的,只是以前稍微看过一点点资料,参加完这次活动,也有两点想法,可惜小姬没给我当场提问的机会(观众实在是太热情了),写在自己blog上吧。 关于“人工智能”,我想大概可以分为好几个方面,之一就是“仿真”(也就是模拟生物体的机能),在片中我们可以看到,现在已经有机器人可以惟妙惟肖地模仿人类的许多行为,譬如会走路的机器人Asimo;换句话说,神秘而简单的生物行为,可以通过物理模型、数学公式来分解,加以实现。人类“潜意识”里的某些“感性”动作,譬如“向前走五步”,可以转化为一系列精妙的指令,以另一种方式来“理性”实现。当然,这个方面也存在困难,譬如王启宁博士所说,用电气元件模拟生物行为,总是存在若干困难,因而有时候,“电气元件--生物”混合的方式,反而效率更高。这一点在影片中也有提及,研究人员记录了小白鼠脑内的海马区(与短期记忆相关的区域)在不同情况下的电流脉冲,再照这些规则制造出芯片,植入小白鼠体内,据称“反应速度提高了40%左右”。我对这个例子很有兴趣,可惜,它在影片中只是一带而过。 另一个方面,也是大家非常感兴趣的方面,就是“机器能否具有智慧”,或者说“机器能否像人一样思维”。这个问题,关于这个问题,前面有过著名的图灵检验,后来塞尔教授又提出过“中文屋子”问题,于是产生了“强人工智能/弱人工智能”的分野。按照程序的逻辑,我们关心的是“接口”,而不是“实现”。也就是说,不管我们面对的“其实”是机器,还是人,只要我们无法做出区分,就可以认定,对方“就是”人,虽然就其“本质”上来说仍然是机器。我之所以对那个小白鼠的例子感兴趣,原因也在这里:如果我们不去关心这些脉冲所“承载”的意义,而只是在“黑屋子”外,模拟我们观察到的一切,能产生完全相同的结果,那么或许可以说,电脑模拟的这些信号,本身也“承载”了同样的意义? 关于这个问题,现场的毛老师也提到,关于“什么是人(智慧)”,我们目前可能很难给出一个确定的定义,而只能通过多个特征加以描述和归纳,如果机器实现了这些特征,我们仍然“愿意”觉得,这还是与人有区别的,或者说,大家心中,其实多少还有一点对“人类本质”的偏执。在我看来,这有点类似波普尔所说的“本质论”和“标签论”的关系,通过“贴标签”而不是“追求本质”的方式(譬如把某种现象定义为“重力”而不是研究“重力的本质是什么”),科学已经取得了长足的进展,未来有一天,如果我们彻底无法区分面对的是人还是机器,我们是认定“这就是人”,还是心智紊乱,或者苦心积虑地找到另一种“定义”,把对方排除出“人”的范畴?这是个有意思的问题。 另说一点,在看片的时候,我忽然想到象棋与围棋,机器“深蓝”已经可以在国际象棋上打败人类世界冠军,但是对于围棋,目前人工智能却束手无策,最好的围棋程序,也敌不过一般的围棋爱好者。大家认为,主要原因是围棋的可能性太多,决策树太过复杂,超过了目前计算机的计算能力。如果人类的大脑能够处理这样两类计算量迥然不同的任务,这到底说明,我们理解棋类游戏的算法思路有问题(也就是说,大脑的运算能力是一定的,只是我们还没找到围棋的高效算法),还是人类大脑的运算(思维)能力,其实是不能以单一维度衡量的(从某个维度上来说,在解决围棋的问题上,大脑可以展现出远远高于象棋的计算能力)? 好了,闲话这么多,就此打住。最后给松鼠会提两点意见: 1.我看片的时候,听讲解的同时看了看字幕,发现字幕有一些翻译错误,所幸不是很严重。因为字幕是合成在影片一起的,所以,这样的问题也不能怪罪松鼠会。不过以后准备材料时,多注意一些这样的细节(如果同一部片子有多个字幕,不妨选择质量最好的那个版本),另外互动环节如果出现问题应该当时纠正(比如有人说“吃转基因食品,我们的基因就会随之变化”,应当有人马上澄清),可能更好点。 2.如果能够在影片结束后,做一些入门性的背景介绍(譬如这一次的,可以介绍图灵检验,中文屋,图灵完备性等概念),这样可以真正“以科普为中心”,而不会“以影片为中心”,对主题起到辅助和补充的作用(而不限于影片所介绍的知识),在专业的嘉宾和热情的观众之间夯实基础的沟通桥梁,效果可能更好。

身份证掉了怎么办?捡起来

16 years ago

大概是1992年左右,我第一次见到“脑筋急转弯”,马上就被这种新鲜玩意迷住了。可惜,当年那些稀奇古怪的问题,如今都忘得差不多了,记得的只有一道题——身份证掉了怎么办?捡起来。 记得这道题,并不是因为它很难,而是因为,这些年来的许多经历,事后细细咀嚼起来,答案就象“身份证掉了怎么办?捡起来”一样简单、直白,又荒诞、无奈——或者怨天尤人,或者凭空慨叹,或者沉溺空想;总之,薄薄的一张身份证,就是没法捡起来。 2006年末我着手翻译《精通正则表达式(第三版)》的经历,就是如此。 试译的时候,我一晚上就交出了六页译稿。接下来约定全书的交稿时间,我不假思索地说,最多六个月。可书拿到手的那一瞬间,整个人就傻了——五百页,整整五百页,以前是轻松畅快的阅读体验,现在是堆积如山的任务列表! 照计划,我每天应该翻译四到五页,然而我只坚持了两天就中止了——每天下班累的要死,还得做这劳什子翻译,五百页何时能结束啊? 于是干脆自我放纵,过了一周“轻松加愉快”的生活,到周末,我甚至在想,原来生活这么美妙,干脆取消合同,交违约金算了吧。 然而,就在这一瞬间,我忽然又想到了那个脑筋急转弯——“身份证掉了怎么办?捡起来”。现在的这张身份证,无非就是在六个月内完成这本书的翻译嘛。而捡起来的方式,就是坚持每天翻译而已。答案简单到完全不存在其它的可能,简单到毫无风险。 于是我开始忍住内心的厌倦,慢慢捡起这张掉落的身份证。五页,十页;一章,两章……每做一点点,我都安慰自己说,对了,我在一点点地捡起那张身份证。 说来也奇怪,日子一天天地过去,我反倒习惯了这样的生活,厌倦的感觉也渐渐消失了。 全书翻译就要结束的时候,一次误操作弄丢了上万字的译稿,怎样也无法恢复。痛惜了半小时之后,我忽地又一次想到了“身份证掉了怎么办”这个问题。好吧,既然无法挽回,重新来过就是了。 这一回,为什么恢复得这么快?是习惯使然吗? 这个问题,一直保持到去年翻译温伯格的《技术领导之路》:在第四章,温伯格用现身说法讲解了,我们在成长过程中必然会遭遇“峡谷”,而且总结说: 高原-峡谷模型描述了一个轮回周期,也描述了一个元周期——也就是周期的周期,这是个螺旋,就好像鹦鹉螺上一圈圈的纹路。走出低谷,不仅仅是登上另一个高原,同时也是在另一个高原上前进,这就是学习如何成长的高原。我的确是在学习新的语言,但更重要的是,我在学习“如何学习计算机语言”。这种元学习(meta-learning) ,清楚地说明了我对学习新语言的情绪。我不再焦虑,不再抵触,不再觉得毫无价值,而是感到激动,充满创造活力,能够处理几乎任何事情。 译到这里,我豁然开朗了:是了,我能更快地接受现实的解决办法,直接开始“捡身份证”,原因就在这里;我也发现,自己开始翻译《技术领导之路》的时候,已经没有了当初的煎熬:划分好进度,每日执行就是了。 《技术领导之路》一路翻译下来,我越来越赞同序言的说法:温伯格的这本书“卑之无甚高论”,并没有太多稀奇。如果“成为技术领导”是掉落的那张身份证,这本书不是传说中的《九阴真经》:温伯格只是告诉你,怎样才能把它“捡”起来——你仍然需要弯腰,仍然需要伸手。如此说来,更大的问题或许在于,你是否愿意(是否能)按部就班地去做。 譬如在第七章,温伯格介绍了一种加深自我认识的“不起眼”的办法,写日记:每天五分钟就可以,写下自己想写的内容,过一个月再回顾;第十章介绍了一种办法,照它一步步地分析,我们发现“小小的”误会背后,原来有长长的逻辑链条;第十三章给出了协调“自己跟自己过不去”的那些“做人原则”与现实的途径……凡此种种,不胜枚举。许多做法普通到不可思议,然而根据我的亲身实践,它们的确有效——退一万步说,至少能作为颇具价值的参考。 类似的例子,在这本书中还有许多。我也逐渐发现,许多时候我们希望“取其精华、去其糟粕”,然而这世界上的许多问题的答案,并没有“精华”那般完美,反而就像“捡起来”那样直接、平凡,这时候,困扰我们的,已经不再是一个智力的问题,而是自制力、毅力和决心的问题了。 读温伯格的《技术领导之路》,会看到那张掉落的身份证。那么,让我们一起捡起它吧。

爱做菜,爱生活

16 years ago

凡事皆有学问,好恶与否,基本取决于兴趣。若没有兴趣(也就是“趣味感”),便成了负担,相反,则乐在其中。我以为,做菜就是很有意思的事情,尤其是,每每在外面饭馆尝到好吃的菜,就有兴趣做“逆向工程”,回来悉心揣摩,竭力仿制,“仿到位”的一瞬间,成就感是无与伦比的。 可是自己埋头尝试,苦闷太多,终究不如“仙人点拨”。所以做菜本事了得的曹哥答应带我去餐馆后厨转转,就非常让我高兴。清明假期,去后厨看了半天,羡慕人家通明透亮的环境,琳琅满目的辅料,得心应手的工具;除了知道一些菜的详细做法,最重要的收获,还是悟道一些做菜的原则。道术相比,还是“道”更为重要,下面就列出我认为重要的几条原则吧: 做菜应当有想法。 做菜不是条件反射,要做好,心里必须有想法。好的摄影家在按下快门之前,必得有构思:这是一张怎样的照片,要表达怎样的含义。好的厨师也是如此,一道菜,在做之前,必须能想象,这道菜出锅之后的样子,是何种色泽,何种质感,何种香味——一句话,这道菜“到底是个什么意思”。把这一点想明白了,菜做起来就有了大的方向,其它各步、各细节,都以此为标准,为这个方向服务。 譬如,湖南菜里有一道“剁椒蒸芋头”,蒸出来,小小的芋头应当是晶莹粉嫩,具备独特的清香,配上剁椒,主要是为了冲淡颜色的单调,剁椒的味道其实不很重要。 做菜应当了解物性。 食料五花八门,各有各的物性。厨师要能够驾驭各味食料,实现自己内心的想法,就必须充分了解食料的物性,然后才能选择、搭配。举个简单的例子吧:同是常用的加香料,葱、姜、蒜却各有不同,若不了解它们的特质,它们对菜品的影响,不管三七二十一,都拿来直接下锅,就会破坏菜品本身的感觉(主要是味觉和嗅觉)。再举个例子:萝卜丝多见炖汤而少见清炒,土豆丝多见清炒而少见炖汤,这是由菜品的物性所决定的。更细致一点说,同是茄子,南方茄子软,北方茄子硬,大棚茄子水分多,所以有的适合煎,有的适合炒,有的适合蒸。如果对此毫无了解,不问出处,以不变应万变,结果必然就是败坏了菜品的口味。 做菜的火候很重要。 如今我国已经成为“食品添加剂大国”,超市里,各种调味料玲琅满目,让人目不暇接。然而要把菜真正做好,依靠调味料是绝对不行的——调味料确实能“提鲜”,但各种菜品都“提”出同一种“鲜味”,更不用说令人担心的健康问题了。相反,菜品本身是复杂的综合体,包括味觉、色觉、嗅觉、触觉等多方面的因素,要把握好这些,重要的就是火候。 所谓火候,主要指两个方面,一是火力的大小,还有就是加工的时间。两者互相关联,但不可互相代替。大体来说,火力决定菜的质感、形状,加工时间决定菜的生熟。 餐馆的肉菜做得鲜嫩可口,除了事先腌制的因素之外,也与火候有关:餐馆的灶台,火力大多很猛,下锅之后就可以让肉表面的蛋白质凝固,既能保持肉片的形状,又可以锁紧内部的结构和水分,翻炒几下便可出锅。而家里做菜火力大多不够猛烈,即便放了很多调味料,鲜美可口,终究缺乏质感,原因就在于此。要在家解决这个问题,切肉的时候就得有讲究,而且,一次绝不可下锅太多——这样,才能真正把握住火候。 还是那句话,凡事皆有学问,做菜也不例外。虽然它只是日常生活的一部分,但讲究也很多:我们去不同的人家吃饭,会觉得有些人家的饭菜很可口,有些人家的饭菜就很乏味,其实,这也是一种生活态度的表现。对此,曹哥有句名言:喜欢做菜的,都是热爱生活的人。 P.S. 曹哥跟人合伙开的新店,名叫“痴心不改”,英文注解是:Once & Always,我在厨房研习的时候,忽然想到另一条:Flavor, Forever,大家觉得如何?:)

老高之野望

16 years ago

本期beta技术沙龙的主题是“手机之家新系统介绍及架构分享 ”。手机之家是老高(高春辉)一手创办的网站,在我的印象里,上一次记得高春晖还是他的“高春辉的个人主页”,之后,好像就一直在折腾手机之家。现在的手机之家,每天PV超过700万,作为一个手机专业网站,相当了得(从我看到的数据,远远超过友人网)。 因为堵车的缘故,我赶到活动现场,演讲已经过去了大半,只抓住个尾巴。不过,手机之家有7年的发展经验,浓缩到这小小的讲座,即便只窥到一鳞半爪,也是很有启发的。 印象比较深刻的一点是Cache的结构。通常,Cache都被“扁平化”为单层的key-value对,这样的好处是,Cache的用户都可以方便地使用,没有太多的限制;而坏处在于,数据的结构被完全拆散了,同一个对象可能会按照不同的key来存储,而且各个对象之间的关联完全不存在了。 对这个问题,手机之家的解决办法是,在Cache和应用程序之间增加一个管理层,将程序员与Cache隔离开来,程序员可以不关心Cache的机制,只需要按照namespace(也就是划分层级的规范)来开发就可以。这个管理层,可以实现对Cache中对象的批量操作,也可以在某个对象发生变化之后,更新相关联的对象(直接更新父节点)。 这种办法的效果不错,而且演讲结束之后,还有朋友专门提出关于namespace的问题,看来,大家都觉得这思路很巧妙。 另一点印象就是老高他们重点介绍的DAL,也就是Data Access Layer,它把存储和缓存整个装到一起,与业务逻辑层完全隔离——业务逻辑单元完全只需要按照DAL设定的“增、删、改、查”四个接口操作数据就可以了。虽然普通的DBMS(譬如最常见的MySQL)也提供了这四种操作的接口,但相比DAL,一方面缺乏高效的缓存管理,另一方面,在大负载量、大容量下应用,还需要做许多工作;而有了DAL,前端程序不但不需要关心表的设计和结构,甚至连表的切分都不需要关心,相当省心。目前的DAL可以应付手机之家的现状,但PPT中也介绍了DAL 2.0的若干构想,包括提供类似Lucene(也就是全文检索)的查询功能,以及拆分核心功能、兼容插件的架构。 看得出来,DAL好像要从一个为手机之家打造的模块,变成“通吃(兼容)各家网站”的工具,在过去,有手机之家的经验做积累,对于未来的走向,也有明确的规划。我觉得,这是一条有风险、也有前途的路:一方面,对于通用组件的开发,我时常感到头痛,也许是经验不够的缘故,事先定义好的接口,往往(必然)被新冒出的需求所困扰,或者修改接口,或者眼睁睁把新需求踢出自己的“一亩三分地”,承认自己干不了;另一方面,之前固然有LiveJournal造出memcached的例子,但这样的几率实在是不高,况且,国内开源软件的氛围也与国外大不相同。 不过,无论如何,我都很佩服老高的这种“野心”:敢想才能敢干,而且,如果DAL真的能成功,成为“现成”的解决方案,就能省下大量的资源,投入到更有意义更有价值的地方,这绝对是一件功德无量的事情。 有兴趣的朋友,可以参考活动的PPT:) 手机之家的架构分享 beta沙龙-手机之家架构的发展和变化 与"手机之家新系统介绍及架构分享"有关 P.S.手机之家还在招聘 PHP/Java 人手,有意者给老高发邮件: gaochunhui…

上帝的归上帝,程序的归程序

16 years ago

程序员,就是整天与机器打交道的那群人。 在计算机并不普及的年代,这样的描述毫无疑问;然而,这些年来,得益于计算机成本的不断下降,软件使用门槛的不断降低,如今,昔日昂贵而又神秘不可莫测电脑,已经成了随处可见、人人能用的办公器材。一句话:人机交互不再是程序员的专利。大家都可以用电脑干活,只不过,程序员用电脑写程序,其他人用电脑干其它事。 结果,普通人抱怨的问题,程序员也在抱怨:电脑不够聪明,不够智能,效率太低…… 可是,电脑真的进化到了对程序员和普通用户“一视同仁”的地步吗? 我不由得想起,上个世纪80年代,温伯格在《技术领导之路》中提出的疑问: (开办技术领导力学习班)也让我们产生怀疑,技术在当今社会扮演了重要的角色,我们的学习班,是否赋予了某些人太多的力量? 细细想来,那个时候IT是高深的技术,只有少数人能够接触,因而程序员“理所当然”地借助了IT的东风,具有超常的力量。可是如今呢?与常人无异的程序员(或者说,IT技术人员),他们身上让人担心的“太大的”力量,到底是被淘汰了,还是没有发挥出来? 对这个问题,不同的人或许有不同的看法。不过,读过The Productive Programmer(中文版《卓有成效的程序员》)的人,多半会选择后一个答案。 The Productive Programmer是一本奇特的书,它的Productive(也就是“生产力”),与新的语言、新的框架、新的系统完全无关,而是另辟蹊径:它只是提醒读者,作为程序员,你与普通用户是不同的:其它人只是简单地“启动”程序,而你完全可以动用自己的专业知识,“驱使/调度”那些程序。这样的机会,普通用户想不到,也不愿意抓住,但是抓住它们,你的生产率就会成倍上升。所以,这本书叫做The Productive Programmer,而不是The Productive Computer-User。 薄薄的一本书(英文版224页,中文版215页),共分16章,兼顾概念和实践两个方面,既介绍了加速、专注、自动化等等提高生产率的“先进”思维观念(譬如“多用键盘少用鼠标”,“消除干扰集中精力”),也给出了在设计、分析、构造、元编程、多语言编程等等多种任务中贯彻前述思想的若干实例(譬如“用全面测试保证质量”,“选用最省事的方式/语言完成任务”),可以说是“麻雀虽小,五脏俱全”了。 不过,看完整本书,我最深刻的印象还是贯彻全书的思想。说白了,就是尽量让机器做机器该做的事情,让程序和程序打交道,发挥程序员在这方面的先天优势——他人眼中的普通工具,是程序员手里的有利武器。 不信你可以想想,虽然如今人机交互的难度已经大大下降,然而程序终究是程序,“程序跟人打交道”与“程序跟程序打交道”,效率差的不是一星半点:…

Gmail的故事:Founders at Work节译【续完】

16 years ago

欢迎转载,转载请注明出处。 Founders at Work, Chapter 12 Yurii 翻译 Livingston:你提到,Gmail最开始是“有争议的”,能接着说下去吗? Buchheit:我觉得,一般来说,人们会不太适应不一样的东西。即使是现在,我谈到给Gmail增加新特性,除非是很小的改动,或是不改变现状,只做些调整,否则大家都不会喜欢。人们对“可能”的理解非常狭隘,相比真正的可能性,对于“可能”,我们的思维有许多局限。所以他们会不适应,他们有点喜欢想尽办法来反对。 但是我个人更钟爱新的东西,所以我总是非常愿意看看会发生的事情。这是我加入Google的最大理由。这理由足够强,强到我确信这是一桩好事:我只是觉得这很有意思,看到将要发生的事情,我很激动。 就这样,Gmail之所以让我激动,也是因为想看看大家会是什么反应。我喜欢某些不确定,因为这有点悬念、有点激动,好像是冒险,对吧?即便没有做成,你也可以从中学到很多。但不是每个人都喜欢冒险。许多人好像就是讨厌不确定。在生活的每个方面都讨厌不确定。 我忽然想起来,某段时间我问大家,如果他们在玩俄罗斯轮盘赌,有一把枪,枪有10亿个弹筒(或者非常多的,也就是说,他们被杀的可能性微乎其微),他们愿意花多少钱玩一盘?许多人都觉得这个问题很不礼貌,他们回答,“给我多少钱我也不玩”。但我们其实每天都在玩这个游戏。他们开车来上班,挣工资,其实一路都是在冒险,但是他们不希望知道自己其实在冒险。他们希望自欺欺人,假装一切都与风险无关。 (more…)

Gmail的故事:Founders at Work节译【续三】

16 years ago

欢迎转载,转载请注明出处。 Founders at Work, Chapter 12 Yurii 翻译 Livingston: 那时候Google一门心思关注搜索,你有没有担心过自己的项目被抛弃? Buchheit:一直都是。我还得说,现在看来Gmail很不错,但我们开发是很早时候的事了。Gmail是第一个真正偏离单纯“web搜索”的产品。Groups其实也依赖搜索——只不过它搜索新闻组里公开的帖子。 Livingston:Gmail还必须要邀请才能加入吗? Buchheit:不用,你可以用手机申请。 Livingston:也可以通过Blogger,对吗? Buchheit:我们已经向许多不同的方面开放了。大学生可以申请,我们希望开放给学生。 Livingston:为什么要邀请加入,这背后是怎么想的? Buchheit:理由有好几个。我又得说一遍,邮件的问题很麻烦,不只是在数据规模那些方面。有个问题很重要,那就是,我不希望数据有任何损失,因为没人愿意弄丢邮件。如果web搜索出了问题,你可以退回去,重抓一遍网页,但是邮件不同,一旦丢了就不可挽回。 我非常关心系统的稳定性。策略之一就是控制用户的规模,这样就不会超出限制。你必须时刻确保当前用户享受到优质的服务。同样,这做法也约束了某些滥用email的行为,举例来说,这样发垃圾邮件的人就很难获得1000万个帐户——那样的后果很糟糕。 (more…)

Gmail的故事:Founders at Work节译【续二】

16 years ago

欢迎转载,转载请注明出处。 Founders at Work, Chapter 12 Yurii 翻译 Livingston:还有哪些新特性是独创的? Buchheit:对话视图——你打开某个对话,其中的所有邮件会像卡片一样列出来,而不是单独出现。 Livingston:这是你想出来的? Buchheit:其实有好几个原因。其中之一是,我曾做过Groups,那里同样有归类(threading)。另一个是,我们内部有太多的邮件。 如果没有会话,就会出现这种情况:有人发出了一封邮件,有四个人回复了,五个小时之后还有人在回复,其他人会觉得,“这已经重复谈论过五次了,你还要回复。” 据我们观察,人们费那么大力气管理邮件的原因之一在于,他们尝试把对话归拢到一起。他们把邮件放到同一个文件夹——否则就会忘记,或是放错文件夹,对话就完蛋了,再也没法回复。 大家用各种工具和诀窍来管理会话。为什么不把它们直接归拢到一起呢?后来我们又想到,“我们来把引用他人的邮件内容隐藏起来吧”。因为这样阅读速度更快,而不需要浪费精力。我们同样希望集成IM聊天。做第一版的时候,我们没时间集成那个功能,但是很早的原型中就有聊天功能的,因为我们希望把聊天和email做到一起,这两者是一体的。所以,我们会从聊天的角度来看待email,所以我们给聊天加入email功能,而不是走其他的路。显然,聊天是为谈话服务的——没有人受得了分割成一条条的聊天纪录。所以,谈话视图也是从此而来——有段时间我们甚至把email的格式设定得更像聊天。 (more…)