按:许久没更新,有些生疏。周三去录节目,炳叔说,最近几篇写的太长了。细看之下确实如此,所以把最新的一篇改头换面,重发一遍。
朋友天资聪颖,成绩优异,现在美国攻读第二个Ph.D,是他人艳羡的佼佼者。不过,私下里,他说过这么一件事:
这位老兄从小忙于学习,经常用功到很晚,然后匆匆歇息——万籁俱静,倦意绵绵,这时候刷牙再睡觉,简直成了一大难题,而他也就屡屡败下阵来,给自己找个理由,径自睡去。直到大学念完,仍然没有养成睡前刷牙的习惯。终于有一天痛下决心,每天临睡,哪怕再困再累,也要督促自己一定要刷牙。如此坚持了数月,无意间发现,刷牙已经成了习惯,也就是每天必做的事情,不刷牙,就会觉得别扭,“刷不刷牙”的挣扎,一去不复返了。
这个故事告诉我们,第一,习惯是养成的,从“习惯不刷牙”到“习惯刷牙”,前后几个月的时间而已;第二,习惯一旦形成,就生出一种惯性,拥有巨大的力量,你完全可以不必思考再行事——纵有挣扎,也是为“打破惯性”的挣扎,依照惯性生活,是不需要理由的。
最近有好几个朋友抱怨,生活无聊:公司压力不大,似乎无所事事,下班又觉一身疲惫,加上自己本没有太多兴趣爱好,空虚从四面八方蔓延过来,颇为苦恼。
我想,这也可算“惯性”的表现之一:或许习惯之前紧张的工作,或许习惯没什么兴趣爱好的生活……总之,环境一变,之前的习惯不再适用,惯性带来的,就是苦恼——无聊、空虚、寂寞,都是它的形式。
当然,惯性也分很多种。我非常喜欢的专栏作家连岳,在一次访谈中说过,“最不能忍受的,就是求知欲的下降”。我相信,以“保持求知欲”为生活惯性的人,根本不用想“知道那么多有什么用?”,今天没多了解一点新知识,多学习一点新东西,就会觉得别扭。“写不坏的连岳”,应当是这样造就的吧。
因此,如果让我来回答,如何摆脱空虚、无聊,我没法给出完满的哲学答案,也没法描绘美好的图景,我只能建议,培养生活的惯性——正如再困也要刷牙一样;再累,习惯做的事情,还是得做——然后,这些感觉自会离你而去。
生活由许多细节构筑而成,我们不可能在每个细节上思考、挣扎,往往只能依靠潜意识完成(我们管这个叫“顺其自然”)。所谓生活轨迹,很大程度上,就是这些惯性的复合体。
“无聊!”,这是最近听得比较多的抱怨——上班累的半死,回来好像精疲力尽,又没什么爱好,尽管想干点什么,总也不知道该干什么,无从下手……
其实,这算不上个人的问题,看看一百多年前波德莱尔淋漓尽致的描述,你就知道,这其实是一种普遍的状态:
(大意)
上帝一年三百六十五次赐给他沉重的一天
……
魔鬼在他身后驱赶:生活!继续生活!
要想摆脱这种状态,光靠哲学是不行的,思辨往往失之空洞,缺乏坚实的内容;依靠外界压力也不行,如果没有真正内化为自己的动力,压力只能带来更深重的虚无和枯燥;依靠等待更不行,等待太过消极,如果我们“等待”的事件(尽管很多时候不明白它是什么)迟迟不发生,等待就只能突然浪费时间,一无所获。
对抗虚无,我的经验是:习惯。这里说的“习惯”,不是habit(习性),也不是custom(风俗),而是routine(常规)。
先来讲个小故事吧。我的一位朋友,天资聪颖,成绩优异,现在美国攻读Ph.D。一次聊天,他很高兴地说起,自己最近终于做成了一件事。我很好奇,“到底是什么哪?”
原来,是睡觉前刷牙。
这位老兄从小忙于学习,经常用功到很晚,然后匆匆歇息——万籁俱静,倦意绵绵,这时候刷牙再睡觉,简直成了一大难题,而他也就屡屡败下阵来,给自己找个理由,径自睡去。直到大学念完,仍然没有养成睡前刷牙的习惯。终于有一天下决心,痛改前非,每天临睡,哪怕再困再累,也要督促自己一定要刷牙。如此坚持了数月,无意间发现,刷牙已经成了习惯,也就是每天必做的事情,不刷牙,就会觉得别扭,再也不用挣扎、辩论,说服自己去刷牙了。
回到虚无感的问题。几十年前,胡适先生就开过药方:1.总得时时寻一两个值得研究的问题;2.总得多发展一点非职业的兴趣;3.你总得有一点信心。
胡适先生说的非常好,非常有道理,但仍有朋友觉得做起来很难——我有兴趣,但确实太累了,确实没时间……
我相信,累是自然且当然的,大家都很累。累的时候,是否还有精力去干点别的——譬如胡适先生所说的,有意义的事情——并不完全取决于你的疲劳程度,和这些事情需要的精力,在这之外,还有一个因素,就是自己的意愿程度,或者说,意志。
而意志,很多时候不是兴趣能够支撑的:“我很有兴趣,但实在是心有余而力不足”。我不知道如何把兴趣提升到能支撑意志的程度,但我知道,培养习惯,能够支撑意志——如果“干点别的有意思的事情”成为生活的必须,成为老一套的日常事务,做与不做,其实是不需要太多考虑,也不需要太多理由的。
李笑来老师在《为什么大家都努力,最终却有更多的人不成功?》里提到:
实际上,学习永远是无本万利、稳赚不赔的活动(也许有人不同意,这事儿实在难以争论)。很多人习惯于在行动之前一定要问一个“做这事情有什么用?”尽管这本身通常是没有错的,但是,在学习的时候问这个问题就很可能是不明智的了。最终有成就的人有一个共性,就是他们永远保持旺盛的“好奇心”,对学习“永不厌倦”,在求知的路上一向懒得问“学它有什么用?”
如果我没有理解错,“永远保持旺盛的‘好奇心’”,其实也是一种习惯:求知已成为生活的惯性,你甚至可以不用反思,不用怀疑,也不用去想太多意义,只要循着这惯性,一路前行,就足够了。
努力培养些好的习惯,某一天,你就会发现,自己已经远离虚无,也不再需要理由,不再需要挣扎。就好象那位老兄,一旦刷牙成为习惯,根本找不到,也不会想到要找不刷牙的借口了。
经济学告诉我们,世界上的资源是有限的,而人的欲望是无穷的,所以,获取资源必须付出代价,越重要的资源,需要付出的代价也越高。
而人,会根据代价的不同,挑选适合自己的资源,同一样资源,对不同个人的重要性是不同的,因而不同的人所需要的资源,甚至是“必需品”,也是不同的。看过一个对美国人的调查,大家虽然都觉得油价高是个问题,全球气候变暖是个问题,但是,“我实在无法想象没有汽车的生活”、“汽车难道不是生活的必需品吗?”。是的,美国人均收入高,汽车又便宜,消费的代价低,汽车理所当然成了美国生活的“必需品”。
看到这,可能有人要说了:照你这么说,无需代价的资源,就对人类基本没什么价值吗?阳光、空气和水,对人类没有价值吗?怎么没见到付出代价?这个反驳看似有理,其实大谬不然:盖房子,要小心不要干涉到人家的“采光权”;污染空气,要收取你的“排污费”;水就更不必说,“水(电)是商品”的宣传语,相信各位还没有忘记吧。
更何况,在当今中国不少地方,明亮的阳光已属罕见,清洁的空气和水更是难得。想要新鲜阳光、新鲜空气、洁净的水?你可以选择移民,也可以选择搬迁到没什么环境污染的地区(尽管在中国,这样的地区大都经济不够发达)。然而,真正愿意这样干的人,寥寥无几。因此,逻辑的结论就是:至少,我们能够承受低质量的“必需品”,或者说,质量不错(其实不过是自然,无污染而已)的阳光、空气和水,其实还不是我们生活的必需品。说得绕一点就是,所谓“必需品”,往往还没有那么“必需”。
这些天,大家又讨论起盗版问题来,比较有影响的一种观点是:软件已经成了生活的必需品,还要垄断,收取那么高的费用,用盗版,不但理所应当,而且理直气壮!
然而,这种论调是经不起分析的:
没错,软件可算是生活的必需品,软件深入了生活的方方面面。但“必需品”论者往往对“开源之风日盛,免费软件多多”的世界潮流不屑一顾,原因何在?玄机在于,他们嘴里的“软件”,其实指的是“以微软产品为代表的商业软件”,只是不好意思明说罢了。
价格本应高高在上的商业软件成了“必需品”?而同样功能的免费软件,却不入某些人士的法眼?这一切,全拜盗版所赐。试想,如果当今中国的汽车卖到一百块钱一辆,甚至不要钱,过不了多久,我们也会觉得,“汽车是生活的必需品”了,有朝一日发生变故(车价上涨),理直气壮地“维护”自己用车的权利,也不足为怪。
而且,汽车成为“必需品”,会催生出一系列后果:除去汽车制造企业,还有汽车养护、汽车美容、汽车回收、汽车交……,更远一点,交通规划也以汽车作为标准,自行车市场明显萎缩(至少相比没有汽车的年代是如此)……。盗版也是如此,功能强大的商业软件成泛滥的“必需品”,也会带来一系列后果:用商用软件已经成为习惯,操作系统要用最牛的版本(看看盗版Windows XP,显然是Professional最多吧),做个图片缩放也要最新版本的Photoshop,打几个字也要用最新版本的Word,这还不算,更糟糕的是,思维/行为习惯逐渐被盗版商用软件所统治:Word之类商用软件的文件格式,已经成为中国的通行必备的规则,垄断地位不断自我强化——许多学校都要求,提交论文,必须使用Word格式。无怪乎,许多人去了国外以后,才发现开放标准的PDF“原来这么流行”,Office“份额这么少”,排版“居然可以用Tex”,“Vi/Emacs比记事本好用多了”。原来,大家义愤填膺要反对的“垄断”,很大程度上乃是来自于咱们自己的贡献呀!
写到最后,我倒想问问那些说软件是“必需品”的人:你们必需的,到底是“软件”,还是“以微软产品为首的商业软件”?而且,每次反盗版就拿Windows当出头鸟,可是简单弄个图片也需要Photoshop CS3,打几个字也要用到Word 2007,这用屠龙刀杀鸡一般的“必需”,到底“必需“在什么地方呢?
王小波写过一篇杂文,说的是他和另一位华人老兄,在美国给人干活的故事。开始小波和这位老兄包下了整个装饰工程,颇有点“让老美见识见识咱中国人手艺”的想法——备齐各种木工工具,精工细作,哼哧哼哧干了好多天,看到老外怪异的表情,他们觉得,多半是没见过中国人干活这么仔细的。可是,精细归精细,终究不是拖延工期的理由。最后,小波他们终于败下阵来,要看看老美是怎么干活的——只见人家全套自动化的工具,一顿忙乎,几下就彻底搞定。
当年我看了这个故事,最大的感叹就是,天壤之别,真是天壤之别。徐宥同学曾作文《工具的强是无敌的》,有兴趣的读者不妨参考。
后来我再看这个故事,又有了新的想法——见鬼,这真不公平,凭什么人家老美的基本配置就都是自动化的工具?我们的工具顶多是改变力矩、力臂之类,要做功,还得凭自己!
然而,我去市场上溜达一圈,又没了脾气:乖乖,自动的工具就是贵呀,一个电动起子,最便宜的也要三四百,这要是整套工具都备齐,还不得四位数?囊中羞涩,无奈,也只能无奈了,我又没有鼓上蚤时迁的绝技,还是乖乖用我的人力工具好了。
当然,今天我要说的是另一个故事。电动工具以前都是免费的,当然会成为“标准配备”,有朝一日要收费了,一定有很多人,群起而攻之:这是最最基本的工具,是必需品,现在居然要想法收费,这还有天理吗?还有人权吗?我们生活在这个文明阶段,难道还要退回去用手动工具?
是的,电动工具(况且还是不要钱的)用惯了,理所当然会觉得这是基本的配备,不能失去的。不但如此,别的工具,任你再好用,也懒得瞧一眼:学习总是需要成本的,大家时间都宝贵嘛。
最近微软以“抹黑自己产品”的方式来打击盗版,激起一片义愤——看哪,垄断企业多么缺德,居然对我们时代的必需品,收取这么高的费用!
问题是,我们的“必需品”,真的是Windows吗?我们必需的,到底是Windows,还是一个操作系统?
三年前,我写过《盗版真的是打击垄断的利器吗?》,今天,我的观点仍然不变,而且更强——盗版的Windows,不但培养了用户对微软产品的依赖,养大了Windows版本应用程序的市场,而且打击了其它操作系统提高易用性的积极性(若Windows价格高高在上一成不变,用户需要这种易用性,又买不起,当然会有其它厂商迎合这种需求,此乃市场竞争之必然),这一切,反过来又强化了Windows的垄断地位。如此循环,周而复始,结果,Windows在全世界的市场占有率不断下降的今天(何况它的占有率本来就没那么高,许多同学朋友出国以后才发现“原来这里不用Windows!!”),在中国却能保持地位岿然不动,盗版的贡献,着实不可小视。所谓“垄断”,板子不能全打在微软身上,盗版、用盗版的人,都在为“垄断”添砖加瓦。
买不起电动工具,只能用手动,效率确实低点;但相比Windows,linux/unix之类的操作系统的效率可不见得低,你所要付出的,只是一些学习的努力而已——拜托,如今人们都讲究“终生学习”。比照这位母亲的经历,我倾向于认为,张口闭口“(Windows)是必需品”,还理直气壮的人,懒筋确实够粗。
最后要说的是,学过一点经济学就会明白,在价值错乱的环境中,容易出现各种光怪陆离的“必需品”,这不奇怪。
最早接触《自由选择:个人声明》(Free to Choose : a Personal Statement),还是在读大学的时候,偶然知道了弗里德曼的这本书,便去图书馆找了来。
一眼就能看出,这是80年代的书,从装订,到字体,再到上面厚厚的灰尘——质朴、古拙、借书卡上留下了不少名字,而今天,这样的书,似乎早已过时,久久无人问津。发黄的借书卡,好像一扇穿越时空的窗户,让你望见、想象曾经的80年代。
平心而论,这本书改编自米尔顿·弗里德曼的同名系列电视片的解说词(这一点很像当年的《河殇》),虽然观点也很鲜明,但相比电视剧,冲击力到底小了很多。而电视片,是拍给普通观众看的,意在宣传和普及自由概念:工会不一定能保障工人的利益,通货膨胀完全是因为货币发行太多……如果我没记错,大名鼎鼎的“教育券”制度,也是在这里提出来的(所谓教育券,指的是政府对教育的投入,不是补贴给学校,而是以“教育券”的形式补贴给家长,由家长自己选择学校。前些年浙江长兴似乎就在实践教育券制度,还引起了周其仁先生的“重点关注”,至今情况如何,不得而知。)
这样的做法,或许失之通俗,但通俗也有通俗的好处,《个人声明》这个副标题,掷地有声,每次见到,我都会想起撒切尔夫人的故事:当年撒切尔夫人任英国首相,面对议员的责难,她掏出《自由秩序原理》往桌上一摔,“我们就信这套”。哈耶克的《自由秩序原理》固然深刻而雄辩,毕竟太过艰深宏大了(当年我看得精疲力尽),一般人要想真正理解“自由”这概念,学会从自由的角度看待身边的问题,《自由选择》显然更为合适。
前一段,铅笔经济社的朋友拿到了《自由选择》电视剧的版权,邀我翻译其中三集的字幕。盛情难却,只好勉力为之。中秋节日夜操劳,终见眉目,一方面重温旧日初读的欣喜;另一方面也是对自己的挑战——毕竟,电视剧字幕不像书本,有些用法过于口语化,用语过于随意,有些地方需要反复听辨,才敢确认。当然,另一大的收获是,从唇枪舌剑的辩论间,见到了弗里德曼刀子一般锋利的思维,和学者的担当。
辩论中,弗里德曼表示自己决不赞成福利制度,于是人家问,你是要取消福利制度吗?他的回答是:“不,我绝没有想过立刻取消福利制度,尽管我不赞成福利制度,也必须承担应尽的责任”,类似的许多问题,尽管他不赞成,但都给出了渐进的道路,你可以明显感觉到,他要努力在“应然”和“实然”之间架起一座桥梁。相比之下,我们的某些“自由主义者”,观点鲜明,态度也很鲜明,冷血的鲜明——快刀斩乱麻,恨不得一下跨入自由的完美世界,这一点,恐怕还是要多向弗老学习呀。
P.S. 感谢李笑来老师在翻译过程中所给予的大力协助:)
感谢各位朋友的喜爱,《精通正则表达式》上市一年,已是第三次印刷。
本次除修正目前收集到的所有勘误之外,另附《重印牟言》一篇,不日即将上市。
“语法糖”与“有机方法”?别奇怪,这两个词虽然不容易理解,翻译文章中却很常见。
语法糖,直译自“syntactic sugar”,原指“语法中的糖分”。Beginning Regular Expression的译者李松峰先生有专文讨论:
含糖语法,是由Peter J. Landin创造的一个术语,指的是为一门计算机语言的语法中添加的附加物或附加成分,它不会影响语言的功能,但却能使人类使用起该语言来”更甜美”一些。含糖语法为编程人员(对计算机规范语言来说,是设计人员)提供了一种编写程序(编写规范)的替代方式,这种方式更具有实用性、更有助于形成较好的程序设计风格,或者使代码读起来更自然。但是,它不会影响形式上的可表达性,也不会让语言拥有某种新功能。
Syntactic sugar is a term coined by Peter J. Landin for additions to the syntax of a computer language that do not affect its functionality but make it “sweeter” for humans to use. Syntactic sugar gives the programmer (designer, in the case of specification computer languages) an alternative way of coding (specifying) that is often more practical, more conducive to a better programming style, or more natural to read. However, it does not typically affect the expressiveness of the formalism or permit the language to do something new.
仁兄的认真精神,我非常钦佩,不过“Syntactic sugar”是否要翻译为“语法糖”,我却有不同看法。
在我看来,sugar固然可以翻译为“糖”,但英文语境中的sugar和中文语境的“糖”是否能对等,恐怕值得商榷——“糖”在英语世界是种普遍讨人喜爱的东西,甚至饭后都喜欢用甜点,而大多数中国人好像没有这种习惯。在中文语境中,让人喜欢的“糖”,更多是与小孩联系在一起的,在成人世界,倒是有一个类似的说法,叫“甜头”。所以,如果直译,不妨翻译为“语法甜头”,比“语法糖”,更容易理解,更自然。
既然把握了原文要传达的意义,我们甚至可以再进一步,突破形式的樊篱,直抵问题的核心——Syntactic sugar翻译为“语法诀窍(窍门、捷径)”,虽然与“糖”相差十万八千里,却更贴近原文的意思。有人或许会问,那“sweeter”怎么翻译呢?将计就计,直接翻译为“更顺手”就好了嘛——当然,一般情况下能这么用,如果是专文讨论“糖”,加上什么desugar, sugar-righ之类的概念,或许还得老老实实地“糖”来“糖”去。
“有机方法”则是今天早上看到的标题——成为领导的有机方法。这翻译,真让人没脾气,organic approach,不就是“有机方法”嘛。横竖想想,总觉得有些不对劲,“有机”总让人想到化学、食品,“有机”方法,到底是个什么方法呢?
索性查查Collins Cobuild,Organic,它的解释包括:
- Something that is organic that is produced by or found in plants or animals,这个是“有机”,没错;
- …
- Organic describes change, development or progress that happens naturally or gradually rather than a sudden or force way,“渐进”的,“自然”的,而不是“突然”的,“强迫”的;
- …
看到这里,“有机方法”就站不住脚了。这东西,说轻一点,是“硬译”,说重一点,根本没搞懂意思嘛。不过,这种例子还真多,比如sensitive,就被硬生生翻译为“敏感”,于是大家都“敏感”起来,只会说“大小写敏感”,而不会说“区分大小写”了。
按:这是三年多以前写的一篇文章,今天重贴在自家园地。
盗版是打破垄断的利器么?
盗版,顾名思义,就是未经许可偷盗版权的产品。虽然限于国情,大家几乎都在使用盗版软件,不过谁心里都明白,这玩意儿不够光明,用起来多少有点儿名不正言不顺的味道。当然,凡事都有例外,反其道而行之,大肆鼓吹“盗版有理”的,也不乏其人,其中不少还颇有几分名望,例如以那本《起来,挑战微软霸权》扬名天下的方兴东先生,以及不少所谓“同情人民疾苦”,或者打着各种后现代旗号,反抗各种不公正和压迫的斗士。在他们看来,不管用什么手段,只要能够打击处于“霸权”地位的微软,就是“反垄断”。因此,使用盗版软件,尤其是现阶段在中国用盗版,是一件理直气壮的事情——因为盗版是“打破(不只是微软,或者还包括一切处于 “霸权”地位的软件厂商)垄断的利器”。往小了说,这是破除市场中的垄断,往大了说还联系到国家、民族大义云云。可惜,稍懂一点经济学,就知道这类言论纯粹是胡扯。
我们知道,在现实的经济环境中,任何行为、任何选择都是要付出成本,而不考虑成本的选择恐怕是极其罕见的(即使有“不考虑成本”的行为,多半也是因为“考虑成本”这种行为的成本太高所致),我们常说“三思而后行”,“物有所值”,“不买贵的,只选对的”,就是这个道理。
来看这个问题:“给”你一辆车,你会要奔驰还是要夏利呢?我想大多数人不假思索就会选择前者。但是,如果问题变成让你付钱“买”一辆车,你是否还不假思索就选奔驰车呢?恐怕大多数人都会做出不同的选择。
看似相同的问题,为什么有不一样的答案?关键就在于,第一个问题暗含的信息是选择奔驰和夏利具有相同的成本——都是“给”,结果无疑是收益最大的选择。而回答第二个问题时,则必须考虑价格因素——两个选项收益固然悬殊,成本也迥然不同,这时候自然要掂量掂量再做决定了。
回到软件的问题,盗版软件的一个特点就在于,它缺乏正常市场所具有的价格机制。也就是说,盗版市场完全没有定价差别,也谈不上什么“定价策略”,所有的软件——无论是精简版还是豪华版,也无论是过时的版本还是最新的版本——获得的成本几乎是一样低廉的,而且是对大多数人来说绝对可以承受的。既然不需要考虑成本的差别,这时候用户的选择自然是最新、最好、功能最全最多的软件。实际情况也是如此——不少朋友连做个最基本的图片缩放都要用最新版本的Photoshop,打几个字也要使用最新版本的Office。追求版本最新、功能最全的软件,似乎成为大多数用户的习惯了。可是这样一来,软件市场上的“夏利”、“富康”就面临被“斩尽杀绝”的命运,而它们本来可以依靠合理的价格策略占领一部分市场的——试想,如果软件的价格不是千差万别,你会为了一个并不需要,或者并不那么迫切需要的功能多花几百上千元购买更新更全的版本么——可是因为盗版软件没有价格差异,所有产品都直接面对着最强大的竞争对手。可以说,因为盗版消除了定价差异,所有的软件从开始就是在不公正的环境下较量,盗版市场奉行的是赤裸裸的“赢家通吃”的法则,只有最强最优秀最新版的产品能够“生存”下来(当然,这些软件的开发商也没有获得利益,只不过大公司承担盗版损失的能力更强一些而已)。如此一来,不但最优秀软件的开发商没有获得回报,独辟蹊径,慢慢成长之类的道路也已经被盗版生生扼杀,盗版已经成了 “垄断”的帮凶,帮助“垄断者”攻城拔寨、横扫天下,又谈何“打破垄断”、“维护竞争”呢?进一步说,在助长“垄断地位”的同时,垄断厂商却没有获得相应的利益,利益都被盗版者攫走了。“盗版有理”论者希望造就的,难道就是这样一个弱者被剥夺成长机会,强者被剥夺现实利益的畸形市场?
也恰恰因为如此,我们可以发现,对盗版叫苦连天的,并非是微软之类的“垄断者”,因为他们有国外市场的保障,承担盗版损失的能力比较强;相反更多的是金山等等并非处于“垄断”地位,却有一定实力的软件公司,道理很简单:本来也许WPS比Office有差距,但价格优势明摆着呢,现在可好,硬生生把WPS拉上Office的擂台,轻量级选手和重量级选手同台竞技,不输才怪呢——本来就没有这样比的么!
上个世纪那场关于社会主义的经济学大论战中,奥地利经济学派的掌门人米塞斯教授一再强调价格的重要性,他斩钉截铁地指出,脱离了价格的市场必定是畸形的市场,计划经济必然导致无穷的混乱。今天以盗版的问题观之,诚哉斯言!
“一艘轮船横渡大洋需要七天,七艘轮船横渡大洋就只需要一天吗?”我第一次听到这个段子,是在湖南经视的某档娱乐节目(抨击的是某些专家的“唯数字论”),接下来又听到了那个著名的“吃狗屎与GDP”的例子,“所以,很多时候光靠数字是不能说明问题的”,主持人俨然一脸严肃。
一艘轮船横渡大洋需要七天,七艘轮船横渡大洋就只需要一天吗?面对这个问题,许多人的第一反应就是,“不对”。不对在哪里呢?仔细想想就会明白,“横渡大洋”的工作,没法分拆给七艘轮船来同时完成。
是了,这就是问题的核心(Nature)所在——无法拆分完成的任务,投入更多的劳动力,不见得会有成效。这道理看似简单,变换了情境,就不是如此了。
芯片制造工艺不断发展,在同样方寸内集中更多晶体管的做法已经遇到了瓶颈,人们对计算速度的渴望却永无满足,于是“多核(共享内存的多处理器)”应运而生。多核能给我们的编程带来多大好处?双核真的能比传统的单核快上一倍吗?Amdahl定律(Amdahl’s Law)告诉我们,这是不可能的:
设加速比(完成同样的任务,单处理器所需的时间与n个处理器所需的时间)为S,任务中能并行完成的部分为p。如果单处理器的完成时间为1个时间单位,则理想状态下n个处理器所需时间(不考虑多处理器间的协调成本)是
(1-p)+p/n
那么加速比S的上限就是它的倒数:
1/((1-p) + p/n)
具体到“横渡大洋”的问题,其中的p等于0,所以,7艘轮船的加速比为1,当然还是需要7天。
Morgan Kaufmann的这本书(The Art of Multiprocessor Programming),就以“加速比”和类似“轮船横渡”的例子开头,来介绍多核编程的。全书内容分为两大部分:理论与实践。理论部分关注可计算性——什么样的问题是能够在异步并发环境中完成的,读过这部分,你会明白,为什么有些共享对象无法以任何并发算法来实现,以后不必再白费工夫(It is therefore important to understand what not to try, before proceeding to write multiprocessor programs);实践部分关注并发程序的性能——单核编程依赖的是基础完备的成型抽象,许多东西已经是“约定俗成”;而多核则需要以另一种视角看待,有时程序甚至必须“欺骗(outwit)”内存系统,这样的程序,不熟悉多核结构的程序员可能很难读懂。
传统讲解多核、并发编程的书,大都偏重实践部分,而忽略了理论部分。结果就是,读完虽然知道一堆多线程编程的技巧,也能保证程序的正确性,总是一头雾水,不能有效分析、拆解问题(不过是复杂些的“横渡大洋”问题:)),也难以真正提升程序的效率。相比之下,这本书在Amazon拿到五星,确实不难理解。
如今多核已是大势所趋,有兴趣的朋友,不妨都来读读这本“高年级研究生教材”。