读读写写


我们阅读历史,往往希望(也确实能够)“把握”到那个时代的“主体”;然而仔细思考自己所处的时代,却未见得能把握到所谓“主体”——所谓“主体”之类,多是把持话语权的人,事后勾勒出来的,所谓“去粗取精”、“去芜存真”,经常放弃了太多的细节,而这些细节,正是置身时代之中众人的切身体会,既亲切,也可信。
李宗仁的回忆录提到,当年蔡锷上马,是先用力一催,待马儿跑出几步,才大步赶上,飞身跳上马鞍,“这才是真正的将军风范”;红军长征的日记,也写到在金沙江边架几大锅鸦片,随意船工吸食,才有大军一夜渡江的奇迹,更记载了大军在贵州畅饮几十缸陈年茅台的豪爽;唐德刚则说起,在美国的中国“小留学生”主办一些“中国文化”的聚会,颇让“老留学生”不满:这些小家伙,四书五经都没读过,在中国都没呆过多久,只是英语讲得好,又怎知道所谓“中国文化”……

我读书,时常能遭遇许多类似的细节。个人感觉,倒是这些细节成就了所谓“时代的感觉”,它们支撑了所谓的“主体”,依靠这些它们,我们的理解和想象才更加丰富而全面。也正因为如此,我手上的这本《红色新闻兵》,就显得尤其珍贵。
红色新闻兵,是“文革”中,新闻战线上一支造反派队伍的名号,也是一本书的名字:原《黑龙江日报》的记者李振盛先生,在文革时期拍摄了十万张照片,从中遴选了一百多张,结集成书。此书一经出版,便在国内外学界引发了巨大影响;然而事实上,在此之前,《新闻兵》中的照片就被广泛使用了,中央党校出版社的《回首文革(中国十年文革分析与反思)》初版封面就是李振胜拍摄的黑龙江省阿城县玉泉公社五万农民坐在山坡上观看中国舞剧团演出的革命芭蕾舞剧《白毛女》的彩色照片,而且,李振盛拍摄的红卫兵批斗黑龙江省省长李范五的照片,也被史景迁教授称赞为是“李最杰出的一组系列照片”。

当然,说这本书珍贵,不仅在于它真实保留了当年的细节,还有两点原因。
其一是,李振胜先生为拍这些照片冒了生命的危险——要知道,许多场面是不容许拍摄的,底片全部需要审查、上缴、销毁(这条规定也反衬了所谓“天真”、“被蒙蔽”说辞的荒谬——若真是热情万丈,干劲冲天,怎会连照片都不敢保留?倒是亚当·斯密在《道德情操论》中讲过,正义的力量就在于,一切不正义者,都不敢照章记录自己的事迹),偷偷保存底片,可算触犯了弥天大罪。
其二是,李振盛先生曾经专门学习过摄影(虽然是电影),许多照片都把握到了“决定性瞬间”(最明显的就是让和尚自我批斗的照片,他拍到了最具表现力的面部表情),既有平凡的真实感,又富于强烈的表现力——所以,张爱萍将军会为这本作品集题字——让历史告诉未来!

P.S. 阮一峰的网络日志: 李振盛《红色新闻兵》李振盛的blog【强烈推荐】。另,《八九点钟的太阳》DVD版花絮中收录了李振盛先生的访谈。

程序员,就是整天与机器打交道的那群人。
在计算机并不普及的年代,这样的描述毫无疑问;然而,这些年来,得益于计算机成本的不断下降,软件使用门槛的不断降低,如今,昔日昂贵而又神秘不可莫测电脑,已经成了随处可见、人人能用的办公器材。一句话:人机交互不再是程序员的专利。大家都可以用电脑干活,只不过,程序员用电脑写程序,其他人用电脑干其它事。
结果,普通人抱怨的问题,程序员也在抱怨:电脑不够聪明,不够智能,效率太低……

可是,电脑真的进化到了对程序员和普通用户“一视同仁”的地步吗?

我不由得想起,上个世纪80年代,温伯格在《技术领导之路》中提出的疑问:

(开办技术领导力学习班)也让我们产生怀疑,技术在当今社会扮演了重要的角色,我们的学习班,是否赋予了某些人太多的力量?

细细想来,那个时候IT是高深的技术,只有少数人能够接触,因而程序员“理所当然”地借助了IT的东风,具有超常的力量。可是如今呢?与常人无异的程序员(或者说,IT技术人员),他们身上让人担心的“太大的”力量,到底是被淘汰了,还是没有发挥出来?

对这个问题,不同的人或许有不同的看法。不过,读过The Productive Programmer(中文版《卓有成效的程序员》)的人,多半会选择后一个答案。

The Productive Programmer是一本奇特的书,它的Productive(也就是“生产力”),与新的语言、新的框架、新的系统完全无关,而是另辟蹊径:它只是提醒读者,作为程序员,你与普通用户是不同的:其它人只是简单地“启动”程序,而你完全可以动用自己的专业知识,“驱使/调度”那些程序。这样的机会,普通用户想不到,也不愿意抓住,但是抓住它们,你的生产率就会成倍上升。所以,这本书叫做The Productive Programmer,而不是The Productive Computer-User

薄薄的一本书(英文版224页,中文版215页),共分16章,兼顾概念和实践两个方面,既介绍了加速、专注、自动化等等提高生产率的“先进”思维观念(譬如“多用键盘少用鼠标”,“消除干扰集中精力”),也给出了在设计、分析、构造、元编程、多语言编程等等多种任务中贯彻前述思想的若干实例(譬如“用全面测试保证质量”,“选用最省事的方式/语言完成任务”),可以说是“麻雀虽小,五脏俱全”了。

不过,看完整本书,我最深刻的印象还是贯彻全书的思想。说白了,就是尽量让机器做机器该做的事情,让程序和程序打交道,发挥程序员在这方面的先天优势——他人眼中的普通工具,是程序员手里的有利武器。

不信你可以想想,虽然如今人机交互的难度已经大大下降,然而程序终究是程序,“程序跟人打交道”与“程序跟程序打交道”,效率差的不是一星半点:

不用宏,你可能需要一次又一次地重复选择、修改、保存;
不用脚本,你可能需要一次又一次地点击、配置、等待;
不用自动化测试,你可能需要一次又一次地运行、调试;
不用管道,你可能需要一次又一次地生成、删除中间文件;
……

The Productive Programmer则会“教导”你:

多用宏吧,启动它,你就可以迅速完成大量重复的工作;
多用脚本吧,你可以提高运行的效率,避免变数和误差;
多用自动化测试吧,你可以迅速定位问题,保证质量;
多用管道吧,这样多个程序就可以“无缝结合”成一条生产线;
……

没错,学习宏、脚本、自动化测试、管道(Shell),不是“容易”的事情。但别忘了,身为技术人员,了解技术,学习技术,运用技术,正是你的职业、你的优势,也是你的责任、你的生产力(所谓productive)所在。随便举个例子吧,在本书中文版的第196页有这么一段话:

……在我刚才提到的例子中,开发人员用了1小时58分建立正确的语法,然后用了不足两分钟运行。在一些未曾培训过的人眼里,他的大多数时间都没有效率(这就是为什么他们反对使用正则表达式的原因),但最后,他节省的是几天的时间!……

我还要补充的是,解决好这样的问题,“现在”能节省几天的时间,将来,更可以节省无穷无尽的时间!就我的开发经历来说,平时多注重这样的细节,做些“没效率”的事情,积累起来,就可以节省大量的时间和精力——最起码,你不再会抱怨,自己终日被一大堆“简单重复劳动”所困扰。

类似的例子,在书中随处可见,譬如作者讲到,“几乎每个*nix用户,都会有自己的shell alias”,真是于我心有戚戚焉:我自己积累了一大堆alias,喜欢用grep –color把要找的内容标成高亮,也喜欢在统计脚本里用不同的颜色标注不同的状态……在Shell下干活,更加简单、利索,一目了然,这种流畅和效率,也可算专属于程序员的宝贵财富。不厚道地炫耀一下,我还有程序定期自动备份我的blog文件和数据,有程序把下载的有声资料“统一”为广播音质mp3(节省空间,同时更新/修正id3信息,调整音量)方便导入随身听……

当然,也有读者会觉得很烦:作者每讲一个很小的例子,几乎都要强调一遍:“简单重复劳动是低效的(程序员不应该这么干)”。不过,我丝毫没有觉得罗嗦,反而因此喜欢上这本一个下午就能看完的“轻量级”小书:阅读它,你并不需要太多的期望,权当一次愉快的思维体操吧——你会发现,专属于自己的高效率,就来自书中提到的点点滴滴。

承蒙各位读者喜爱,《精通正则表达式》2007年出版至今,已经三次印刷了。不少读者在来信提供勘误建议的同时,也反映原有的勘误列表结构不够清晰,勘误没有区分版次,使用起来不够方便。每次收到这样的来信,我都深感惭愧。

所以我制作了Excel版本的《勘误列表》,列出了到目前为止收集的所有勘误,并列出各个版次所对应的勘误,希望能给广大读者提供方便。

《精通正则表达式》(第三版)勘误列表下载:MRE_errata.xls

P.S.

要感谢博文视点的晓菲,她帮我调整了Excel的版式。

我很小的时候,在外出差的父亲给我写信,说“玩也要动脑筋”,这真让我头疼:玩就是玩嘛,动脑筋,那肯定是跟学习有关的,这怎么能扯到一起呢?我百思不得其解,甚至去找外婆评理。
父亲出差回来解释说:玩也要动脑筋,就是不要老停留在一个水平上,要想办法玩得更好,更有意思。
于是我明白了,“动脑筋”不只是跟烦人的学习有关的,各种问题其实都可以“动脑筋”。这些年来,随着经历的增长,我越来越深刻地体会到当年父母的一片苦心,也体会到四处“开动脑筋”的重要性。

去年,我有幸翻译了温伯格的《技术领导之路》,在书中,我遇见了同样的道理:

尽管风格各有不同,解决问题的领导都有一个共同点:他们都相信,总有更好的办法(there’s always a better way)。
这信念源自何处?伯特兰•罗素曾说,信念就是不需要证据的相信。尽管解决问题的领导可能是讲逻辑的,他们也不能用逻辑来证明信念。也许它源于他们之前的成功:聪明孩子能把坏事变成好事。这种成功强化了孩子对于思维的信念。以这种信念为依托,孩子就更可能想到更聪明的办法,解决下一个问题。熟能生巧,成功带来更大的成功,最终成就了解决问题的领导。

看来,“努力把事情做得更好”的重要价值,是大家公认的。然而,努力践行这一点,也是非常有难度的,这一点,我深有体会。
就拿我所从事的软件行业来说吧,工作中,我时常会有这样的想法:软件开发顶着朝阳产业的华盖,然而内部的规范性和秩序性实在不容乐观,甚至到了“粗陋”的地步,远远赶不上传统的工匠:设计随意、文档混乱、沟通缺乏、配合失当、效率低下、维护困难……,许多的所谓“高科技产业”,只是“使用高科技工具胡乱拼凑出来的劣质产品”而已(刘未鹏写过一篇有趣的文章《我们都是信息时代的远古人》,我看不妨借用这个标题:我们都是光鲜行业的蠢苦力)
究其原因,一方面是软件开发本身的问题(须知,软件乃是纯粹依靠人类的智力,“凭空”构造出来的复杂系统);另一方面,也与我们对自己工作的思考深度有关——即便软件开发本身是困难的,我们仍然能够开动脑筋,总结、反省、提高,一点点做得更好。这样的思考和反省,本身就是非常难得也非常可贵的,但正是这样的思考和反省,提醒我们,自己位于向前延伸的时间轴之上,而不是一次次地在起点重复。
更可惜的是,长久以来,关于这些问题的论述,都被外国人所垄断。在中文世界里,“如何做好软件”,或许有许多人在思考,但经验的交流都还局限于口耳相传的方式,在知识的整体性、层次性和交流效率上,都很可惜。所以,当我看到《走出软件作坊》的时候,实在是大为惊喜。

我手上这本书,是在面世签售的前一天晚上,博文视点的周老师赠送的。赶回家已经是夜里两点来钟了,但捧起这本书就很难放下,这是一本包罗万象的书——从程序到架构,从售前到售后,从开发到管理,从销售到维护,完全涵盖了当前国内软件开发的各个方面。我相信,任何IT从业者都能从中见到许多困扰自己的问题,而且许多未曾接触过的问题,也会看得饶有兴致,并且为其中的某些观点、做法叫绝。看技术类的书籍,很久没有这种畅快的体验了,于是我想,这本书一定能吸引很多人的兴趣。

果然,这本书面市之后,引发了大量的关注。无论评价如何,这些关注本身,就证明书已经挠到了软件开发的痒处(正如它的英文名:The Itch of Software Workshop),引发了大家的思考。我以为,针对中国软件行业的现状来说,这就已经是重要的价值了。

《走出软件作坊》或许不是一本圣经,但它无愧于一个起点,为了走出作坊,我们需要这个可贵的起点。

大概是在2002年,阿印从能上网的机房回来,神秘兮兮地说起最近论坛里看到的一部小说,《成都,今夜请将我遗忘》,非常好。彼时网络尚不方便,“上机”和“上网”颇有分别,更不用说自己有电脑了。于是我便托他去拷到U盘上,有上机的机会便偷偷看,然而一看便不可收拾——身处校园十多年,哪见过这么多新鲜热辣的名堂,加上慕容叙事之流畅,无人可敌。可惜论坛转贴,终归杂乱无章,而且更新不够及时。模糊记得看到一处,便没有下文。当时转贴的ID似乎叫“小火柴”,于是我们四处寻觅,终于找到了一个诡异的结局。本以为事情就此中止,不料某天阿印说,不对,这个原文作者应该叫“慕容雪村”,我找到真正的结尾——陈重死了!。正好周末有同学回家,想到其父在当地某局担任领导,我们便托他去父亲单位,把《成都》打印出来(多年以后我才知道,此谓“社会主义墙角人人挖”)。等到周一,见到的是一个塑料袋,装着厚厚一叠纸,《成都,今夜请将我遗忘》的全本,针式打印机打得入木三分。

后来知道,天涯除了“关天”,还有个“舞文弄墨”,慕容雪村乃是斑竹。那时候他正在写《天堂向左,深圳往右》,网络上有连载,便没有买书,后果之一就是,我总是记不清楚,到底是“天堂向左,深圳往右”,还是“天堂往左,深圳向右”。在我看来,《天堂》延续了《成都》的风格,又有不同,主要是技法更加纯熟。如果说《成都》还基本有一条延时间顺序的主线,《天堂》则几乎没有,读来仿佛置身玲珑世界,四面都是镜子,照出各样人形,定睛看去,却又是同一个人。这样娴熟的穿插变换,是当今不多见的。

再后来就是《伊甸樱桃》(又叫《多数人死于贪婪》)了。这是一本争议很大的书,许多人评价相当糟糕,我却觉得,这是作者在进行某种形而上的叩问,不幸的是,他选择了魔幻的叙事风格,这大概是许多人难以接受的主要原因。但形而上毕竟不是玩弄文字,也不是故弄玄虚,要写好,还是需要相当的积累和功力的。这一点,慕容把握的比当下许多写手要好。反复的拷问,弥漫的焦虑,都给人深刻印象。慕容自己也说,尽管评价最糟糕,这却是他最得意的作品。

最后便是刚刚拿到手的《原谅我红尘颠倒》(刚刚在天涯连载时叫《谁的心不曾柔软》)了。这本书仍是写“满城的罪恶”,却换了“局内人”身份(以前的主人公往往都是“找人消灾”,这次是“替人消灾”),更让人看得眼花缭乱。可惜最后几章,查遍互联网也没有丝毫踪迹,最终“自然而然”地抢先买了印刷本,一口气读完,终于不用再吊着胃口了。后面几章,用老话说就是,“意料之外,情理之中”,只是有一段过于写意,有突兀之嫌(不过我后来恍然悟到,这本书的结构很像艾尔·帕西诺的《魔鬼代言人》)。

我读慕容雪村的书,除了悲凉惆怅,总惊叹他的文风独成一格:描写事件,往往没有太多的浓淡之分,总是异常流畅的笔触,一路倾泻下来,然而就在看似不经意之间的两笔,勾出让你印象深刻的细节。譬如《天堂》里,黄芸芸默默流泪,把丈夫书架上的书,按照高矮顺序排好……
《原谅我红尘颠倒》里,有句话我印象异常深刻:

十几年前我是小魏,现在人人叫我老魏。37年了,感觉人生就像一场不可捉摸的梦,梦里软红无限,醒后黄梁未熟。我还是我,只是渐渐老了。一个“小”,一个“老”,两字之间横亘着我的一生。

原谅我红尘颠倒

“语法糖”与“有机方法”?别奇怪,这两个词虽然不容易理解,翻译文章中却很常见。

语法糖,直译自“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,它的解释包括:

  1. Something that is organic that is produced by or found in plants or animals,这个是“有机”,没错;
  2. Organic describes change, development or progress that happens naturally or gradually rather than a sudden or force way,“渐进”的,“自然”的,而不是“突然”的,“强迫”的;

看到这里,“有机方法”就站不住脚了。这东西,说轻一点,是“硬译”,说重一点,根本没搞懂意思嘛。不过,这种例子还真多,比如sensitive,就被硬生生翻译为“敏感”,于是大家都“敏感”起来,只会说“大小写敏感”,而不会说“区分大小写”了

湖南人凭什么(敢为天下先)?最早见到此类豪言壮语,还是大学的同乡会,中文系的同乡编纂了一本纪念册。前面大半篇幅都在“自吹自擂”,湖南人的霸气啦,闯劲啦,热血啦,等等等等,又历数史上各位先贤,当时的感觉是,乖乖,真该好好“自豪”一把。后来更是出了本《湖南人,凭什么》的书,把湖南人的“特质”描写得淋漓尽致。许多年后,我见到黄章晋的文字,觉得他描绘得更加淋漓尽致:

今天,网上随便哪个湖南人都知道几句杨度的《湖南少年歌》,湖南人对自己赞美的说辞之多,搞得湖南人像是中国境内另外一个完全不同的种族,而长沙人自我认知的自负,更是世上绝无仅有,因为长沙人的精神是“心忧天下,敢为人先”,这可是1995年长沙十万市民自己投票选出来的。

正好,最近读了些关于湖南的历史,随手写一点在这里吧。

“湖南”单独成(行)省,乃是雍正二年(1724年)的事情,之前的明清两代,都属湖广行省,再往前,只能循到零散的州、郡,唐朝时期,今日湖南包含的岳、潭、衡、永等十七州,分属山南东、江南西、黔中三道,更久远的西汉时期,湖南全境并未完全隶属当日的“中国”。

历史上,湖南比较丰富的资源乃是粮食和矿产。
矿产自不待言,本省的铅、锰、钨、锑等金属蕴藏丰富(今日中国出口的锑占全世界出口的80%,而来自湖南的锑在其中占到95%),然而史上本省的冶金工业并不发达,铁器之类长期以来外省输入,南路由广东,北路由两江,至乾隆时湘人黄聚泰去安徽芜湖学得冶铁之法,带工匠八人返回湘潭,本省冶金方有发展,而钨、锰等矿藏的开采,由于技术所限,在外力冲击,西方技术引入之前,几无发展。(也正因为湖南矿产丰富,岳麓书院在光绪二十九年改名高等学堂,后改名为工业专门学校,后与法政专校、商业专校合并为湖南大学)
湖南的粮食主要是稻谷,大部来自有“米仓”之称的洞庭盆地和湘水中下游,米产以湘潭最多(因此历史上湘潭乃是省内重镇)。除稻谷,洞庭湖流域也盛产小米。还有湘江流域的东湖林和沅江流域的西湖林,包含大量经济树种,为全国大宗。湖南也产茶叶,无奈质量不若安徽茶、福建茶,仅以大宗出口方式,颇受游牧民族欢迎(我本人比较喜欢家乡的“土茶”)。

湖南号称“鱼米之乡”,据估计,以农业社会的生产力水平和耕地数量,养活三至四千万人口应当不难,然而湖南人口长期偏少,万历年间不到二百万,乾隆年间增至八百六十余万,至宣统二年,也不过两千万。究其原因,一是灾害频繁,水灾旱灾不断,一是民间溺(女)婴风气盛行,一是不断对外移民,尤其是张献忠屠蜀之后,“移湖广填四川”,迁去大量人口。
说道移民,还有两点趣谈:
湖南除了向外移民,也一直在接受新的移民。他们多来自江西的南昌府、吉安府,新旧人民素有不睦,唯待太平天国兴起,“兄弟阋于墙,外御其侮”,这才真正接受“老表”。
所谓湖南人“骡子”脾气的典故,似乎也是移民的典故。世人常以“驴”来比喻脾气倔犟,“骡”则很少见。湖南最早属于蛮夷之地,为苗族所占,日后汉族不断移民,汉苗混杂,加之新移民持续进入,族群交融,方有“骡子”之说。

人们说起湖南,经常用的一个词就是“人杰地灵”,然而“人杰地灵”的历史并不长久。皮锡锐云:“湖南人物,罕见史传,三国时如蒋琬者只一二人。唐开科三百年,长沙刘蜕始举进士,时谓之‘破天荒’……”。也确实如此,在历史上,湖南长期属于偏僻落后的地方,虽有号称“千年学府”的岳麓书院,和中国最早的石鼓书院,却未曾有过官学。科举制度,湖南本与湖北合围,乡试大比,本省学子须远赴武昌,直到康熙五十六年,才获准自建贡院。但文风也属平平,就进士中额而言,全国18省,湖南仅排名14,乏善可陈。
湖南“人”之起,始于湘军,始于曾国藩。
湘军之名,得自湘乡一代的勇丁,时称“湘勇”,另有“(邵)阳勇”、“楚(来自兴宁)勇”等。最后合称湘勇,湘军,指代全省。各地兵丁,最受欢迎者乃是出身湘乡娄底者,因为他们性格纯真,易于塑造,所以作战能奋不顾身。至太平天国作战后期,曾国藩指湘军“暮色已深”,就是说他们见了花花世界,心性杂乱。据蒋梦麟先生说,大名鼎鼎的“湘绣”,也就是当年湘军“抢来或娶来的苏州老婆”回去传开的苏绣

待续

“一艘轮船横渡大洋需要七天,七艘轮船横渡大洋就只需要一天吗?”我第一次听到这个段子,是在湖南经视的某档娱乐节目(抨击的是某些专家的“唯数字论”),接下来又听到了那个著名的“吃狗屎与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拿到五星,确实不难理解。

如今多核已是大势所趋,有兴趣的朋友,不妨都来读读这本“高年级研究生教材”。

保罗·戴维斯在《上帝与新物理学》中说,尽管大多数宗教都是教人向善的,但纵观人类历史,相当多的争端乃是由宗教所引起。这话没有说错。
所以,新殖民地的开拓者们,不管头脑中起初有什么关于人类品德和幸福的美妙理想,总要在各种实际需要的草创之中,划出一片未开垦的处女地充当墓地,再划出另一片土地来修建监狱。
所以,新英格兰地区的清教徒们,要处罚海斯特·白兰,要以别样的方式对待她。

海斯特·白兰,她出生的贵族家庭已经没落,她高贵的气质却未曾消失。这妇人身材颀长、体态优美,举手投足间自有一种端庄的风韵。她的婚姻已属不幸,更何况两年来,旧大陆的丈夫却渺无音讯,谣传此人已经葬身大海。如此,孤苦伶仃的少妇与才貌相当的牧师丁梅斯代尔萌生感情,实在是顺其自然,水到渠成。然而,这种事情在当时当地实属丑闻,尤其是私生女珠儿诞生之后,“惩罚这个不道德的淫妇”,便成了人心所向,众望所归。
面对街头巷尾的议论中,面对咄咄逼人的审视,甚至是面对法庭的威严,海斯特·白兰坚决不肯指认孩子的父亲,照判决,必须怀抱婴儿,登上刑台,示众三小时。她的脸烧得通红,试图用婴儿挡住胸前的那个通红的A字(表示Adultery,通奸)。但她很快发现这是徒劳,索性架起孩子,敞开那个用红色细布做的、镶嵌奇巧金丝线花边的A字——是的,婴儿,还有那耻辱的红字,都是她的现实,其余的一切,都消失了;她的眼中不再有愧色,逼视的目光在她的身上化作神圣的光辉。

而世界总是充满了巧合,刑台下的围观者中,就有海斯特的丈夫,罗杰·齐沃林斯。此人专为复仇而来,对于海斯特和牧师的怨恨,构成了他生活的目的和全部意义——“海斯特,如果你胆敢向丁斯代梅尔律师暴露我的身份,我就向众人暴露他的身份”,以此为要挟,他伪装成医生,悄悄地潜入牧师的生活,获得他的信任,成为他形影不离的朋友,苦心孤诣地制造出一种气场,煎熬牧师的身心,求得自己的满足。
于是乎,丁梅丝代尔牧师就身处奇怪的情景之中。他学识渊博、道德高尚,为人们所称颂,当然不能和那个戴着红字的女人有什么接触;这样一来,他却愈发清楚,自己胸口无形的红字,无时不刻不在燃烧,带来远甚于海斯特的痛苦;他的布道日益虔诚,他的学问日益精进,他的形象日益神圣,健康却在日益恶化——无论是身体,还是精神。

就这样,七年过去了;这是怎样的七年呢,是牧师的健康日益恶化的七年,是老医生日益接近自己目标的七年,更是海斯特勉力承担异样目光、被众人孤立的七年——纵使她含辛茹苦、助人为乐,终究无法融入她的清教徒乡亲。最终,还是海斯特打破沉寂,向牧师透露了内情。顷刻间,爱情再次滋润万物,两个人好像重新活了过来。
“海斯特,你是在鼓励一个两膝发抖的人去赛跑!我身上已经没有力量和勇气独自到那广袤、陌生和困难的天地去闯荡了!”,牧师又重复了一遍,“独自一人啊,海斯特!”
“不会叫你独自一人前往的!”,她的回答很轻,又很深沉。
一片阳光。

故事的末尾,牧师完成了人生中最辉煌的一次布道。之后,虚弱的他靠着海斯特,带着女儿,一步步挪上刑台:

新英格兰的人们!你们这些热爱我的人!——你们这些敬我如神的人!——向这儿看,看看我这个世上的罪人吧!终于!——终于!——我站到了七年之前我就该站立的地方;这儿,是她这个女人,在这可怕的时刻,以她的无力的肩膀,却支撑着我爬上这里,搀扶着我不至扑面摔倒在地!看看吧,海斯特佩戴的红字!你们一直避之犹恐不及!无论她走到哪里,——无论她肩负多么悲惨的重荷,无论她可能多么巴望能得到安静的休息,这红字总向它周围发散出使人畏惧、令人深恶痛绝的幽光。但是就在你们中间,却站着一个人,他们的罪孽和耻辱并不为你们所回避!
那烙印就在他身上了!上帝的眼睛在注视着它!天时一直都在指点着它!魔鬼也知道的一清二楚,不适用他那燃烧的手指的触碰来折磨它!但他却在人们面前狡猾地遮掩着它,神采奕奕地走在你们中间;其实他很悲哀,因为在这个罪孽的世界上人们竟把他看得如此纯洁!——他也很伤心,因为他思念他在天国的亲属!如今,在他频死之际,他挺身站在你们面前!他要求你们再看一眼海斯特的红字!他告诉你们,她的红字虽然神秘而可怕,只不过是他胸前所带的红字的影像而已,而即使他本人的这个红色的耻辱烙印,仍不过时他内心烙印的表象罢了!站在这里的人们,有谁要怀疑上帝对一个罪人的制裁吗?看吧,看看这个骇人的证据吧!

说完,牧师哆哆嗦嗦地解开法衣前襟的饰带。露出来了!台下的人惊慌失措,台上的牧师瘫倒在地。

人们那天到底看到了什么,事后众说纷纭。有人断言看到了一个嵌在肉里的红字,有人说,这是牧师苦修的结果,也有人说,这是医生的毒剂所致;也有人说,其实什么也没看到,牧师的胸膛,像新生婴儿那样光洁无暇,他们还说,牧师最后的布道,既没有承认,也没有丝毫暗示,他与海斯特·白兰有任何牵连,他只是希望在那堕落的女人怀里断气,证明人类精英的正直是多么微不足道,他只是希望教育他的崇拜者:在无比纯洁的上帝心目中,我们都是相差无几的罪人。

霍桑写这本小说,可能更希望引发读者思考“善”与“恶”的哲理,因此在人物的语言和行为上着墨不多,反而花了大量的篇幅描绘、评述、阐释,用心营造气氛、渲染意境——这是另一种形式的引人入胜。譬如全书结尾的那句话,“一片墨黑的土地,一个血红的A字”,让我想起《终结者2》的片尾,向前延伸的路。

Robert Frost的The Road Not Taken是我喜欢的诗,读来琅琅上口,意味悠远,abaab的尾韵压得也很好。

The Road Not Taken

Robert Frost (1874–1963). Mountain Interval. 1920.

TWO roads diverged in a yellow wood,
And sorry I could not travel both
And be one traveler, long I stood
And looked down one as far as I could
To where it bent in the undergrowth;

Then took the other, as just as fair,
And having perhaps the better claim,
Because it was grassy and wanted wear;
Though as for that the passing there
Had worn them really about the same,

And both that morning equally lay
In leaves no step had trodden black.
Oh, I kept the first for another day!
Yet knowing how way leads on to way,
I doubted if I should ever come back.

I will be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood, and I—
I took the one less traveled by,
And that has made all the difference.

这首诗被编选甚多(甚至出现在Dead Poets Society的台词里),大家都把它视为“个性的宣言(an advertisment of individuality)”;但仅从诗歌来看,“是否存在一条未选择的路”,却是学界争论不休的问题。大多数学者都认为,Frost这样描述两条路的差别是完全说不通的(too ambivalent),所以他们认为,那条“人迹更少”的路,可能根本不存在。

« Previous PageNext Page »