额头贴着镜子

额头贴着镜子
看自己的眼睛

是一双眼
是一只眼
是醉眼

看了那么多
眼睛累了

额头贴着镜子
眼睛看自己
只看到眼睛
眨了一下

梦断代码

最近没怎么跟踪OSAF的动态,今天一看,倒有条大新闻。Mitch Kapor辞去了OSAF主席一职,并且会在2008年内撤走投资。OSAF全职人员也立即从27人减少至10人。Katie Parlante在OSAF宣布了这个消息,一时间外界议论纷纷。

没有人可以指责Mitch Kapor自私,这篇评论写得好:“他(Mitch Kapor)养活Chandler和OSAF达六年之久,寄望于能做出令人激动的创新PIM套件。……六年后,Chandler仍无定形。……(离开的)时候差不多了。”六年半时间,数百万美元,几十号顶尖高手,换来幻梦一场,此时最郁闷的,当属Mitch Kapor。

我花了大约一年时间,翻译Dreaming in Code一书。作者Rosenberg对OSAF的Chandler项目进行田野调查,跟踪经年,试图借由Chandler的开发过程揭示软件开发中的一些根本性大问题。我一直在考虑这本书的中文名怎么取,也问过一些朋友的意见。这条消息出来后,也没什么好想,《梦断代码》可也。

到底Chandler为什么会失败?有人说是它采用了不对头的开源方式,有人说根本原因是做软件太难,有人说是高手太多……莫衷一是。在OSAF/Chandler行将就木的今天,Dreaming in Code一书正可做它的墓志铭与讣告。

“这里躺着一个野心勃勃的开源项目。它曾立志超越Outlook,最后却无疾而终。慷慨的Mitch Kapor带给它生命,又把命脉从它身上取走。许多程序员以心血养育它,惜乎全不见成效。它是温室中的花儿,有过绚烂的梦想,还未绽放即已枯萎。那软件的花园中,还有多少会渐次凋零呢?”

 

相关文章:

《大褂还是内裤》

《代码,梦》

《Dreaming in Code中文版第0章试读》

Dreaming in Code中文版第0章试读

0章:软件时间


那是1975年的冬天。我在终端机房中俯身敲击一台电传打字机,每打完一行,那笨重的机头就会摇头晃脑猛然撞回最左边,开始新的一行。我从几个小时前开始输入一行行黑代码[1],忘记了时间流逝,全然不知已是午夜时分。看门人已经关闭廊灯。我并没有得到许可在纽约大学物理系大楼中流连忘返、使用向高中学生免费发放的计算机账号。不过,倒也无人责难。


那时我年方十五,正迷恋于一个叫做Sumer的游戏,在游戏中,我管理着新月沃土[2]上一座古代城邦。今天的电脑游戏玩家也许会嘲笑其稚嫩:它在一卷纸上逐行打印出大写字母,报告游戏进程。玩家运筹帷幄,分配食用和留种的谷物,然后程序就会告知城邦每年的发展情况。“汉谟拉比陛下,”程序像一个诚惶诚恐的宰相般报告说,“微臣伏启圣鉴……”


没玩几天,我就已经把游戏彻头彻尾玩了个遍。但是,和现在令青少年着迷的大多数游戏不同,Sumer可以让玩家打补丁。谁都能够窥探其内部运行机制:该游戏只是向计算机发出的一系列简单指令,这些指令存储于一卷多行八孔纸带上。(电传打字机旁的塑料盘中堆积的纸带,几乎带来和游戏一样多的乐趣。)纸带像地下出版物一样在朋友间流传共享。只要花几个钟头学点简单的Basic语言,改游戏就会和玩游戏一样容易:将纸带上的指令装载到计算机,然后开始往程序里加代码。


Sumer是个空白画板——历史只是个轮廓,随时准备着让少年的梦想来浇筑。我和朋友们掌握了它简单的构造,开始往里加东西。让玩家可以选择不同的宗教信仰吧!偶尔来一次腺鼠疫,会发生什么事?蛮族入侵者应该很酷。嘿,搞几具弹石机如何?


那天晚上,我倾力于改造游戏中民众造反模式的设计。Sumer只提供粗糙的起义模式;如果你干得太差,人民就会起来推翻你。(Sumer的原作者是个乐天派。)我认为,游戏中的起义模式应该多种多样,所以就创建了一些子程序补丁——让Sumer陷入内战,或是引入一个要争取合法地位的反对派政府。


我不在乎干到多晚。F线地铁整夜运行,可以把我带回位于皇后大道的家。一定得重新设计游戏中的革命模式!


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


四分之一世纪后,2000年五月,我坐在旧金山的一间办公室里,眼睁睁紧盯着一台现代计算机屏幕(高解析度、数百万种颜色)。喝剩的咖啡纸杯胡乱摆在键盘边上。正是凌晨5点。


那时我四十岁,是在线杂志Salon的创始人和总编,此外还负责一个软件开发项目。我们花了几个月精心规划,希望给网站增加动态特性,使之彻底改观。然而,现在我却眼看着项目濒临绝境。


在没日没夜苦干了几个星期之后,主力程序员终于宣告工作完成,自己要飞往夏威夷,度一个全家盼望已久的假期。剩下他的老板,技术副总裁查德·迪克森(Chad Dickerson),独自琢磨为什么存储网站文章的数据库就是不肯与负责显示页面的程序对接。查德两个通宵没合眼,努力修复问题。若是不然,到周一早上,我们的两百万读者就只能看到网站上没更新过的旧闻了。


难道我们以前没做过软件吗?(做过。)是没有全面测试吗?(显然不太充分。)怎么会搞得一塌糊涂?(鬼晓得。)


我吃完了自动售货机里最后一袋饼干,徘徊又等待,却仍是毫无指望。时间还多。还有时间去读那位以新项目的名义准备香槟加蛋糕聚会的倒霉同事的邮件,回复他说:“或者咱们再等等吧。”还有时间去体会身陷困境孤立无援的感受,然后琢磨将系统的中心服务器命名为“卡夫卡”是不是个好主意。


大约早晨9点,我们终于发布了站点“改进版”的第一个版本。又是周一清晨,其他同事相继出现在办公室,他们过了好一会儿才意识到,我们六个人昨夜压根儿就没回家睡觉。


又过了几星期,程序员们修复了最严重的问题,软件运行趋于平静。但后来每当我听说某公司打算“升级其软件平台”、重新搭建一套大型系统时,我总不免暗自担心。


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


二十世纪九十年代科技行业的兴盛,给我们带来了“互联网时间”的概念。对该短语含义的理解见仁见智,但多指“快速”之意。数字时代的新时间机制下,一切皆有可能发生——技术产生、公司创立、创造财富——而且速度惊人。这意味着你没时间做到尽善尽美——无须担心,因为别人也一样。


随着投资潮退,“互联网时间”这个短语也风头尽失,很快被其他时髦词所代替。但新词掮客们的确一语中的。在做软件的过程当中,时间似乎确实时快时慢。如果一切顺利,你会沉浸在心理学家称之为“流逝”的状态中,全然忘记了时间。如果事有不谐,你又会陷入困境,四顾茫然、举步维艰。无论是哪种情况,时钟都被抛诸脑后。你用的是软件时间。


 


***********************************************************


 


在使用一门新编程语言时,程序员的第一个程序通常是“Hello World”——输入一系列代码,召唤计算机,命令它打印出这两个词,向主人致敬。在Sumer游戏所用的Basic语言中,这个程序像这样:


10 PRINT “HELLO WORLD!”


20 STOP


“Hello World”程序一无所用,但足可蛊惑人心;它鼓励新手,唤起每个程序员心中乐观的一面。“既然能叫它说话,就能让它做任何事!”计算机协会(The Association for Computing Machinery),计算机领域中的ABA[3]或AMA[4],维护了一张网页,上面列出将近两百种编程语言版本的“Hello World”程序。简直就是程序代码的罗塞塔石碑[5]。


在Java这种商业世界中流行的重量级编程语言里面,“Hello World”看起来高不可攀:


class HelloWorld {


public static void main (String args[]){


System.out.println(“Hello World!”);


}


}


Public static void:无数个Java程序代码块中,都有这串密语存在。这串词有特别的技术含义。不过我常常把它看作一首机器诗篇,在它召唤出的冷宫里面,多少软件项目一开始雄心勃勃,最终却未结善果。


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


如果你和计算机编程打过交道,就很难不对它又爱又恨。作为少年游戏玩家,我品味过编写代码的巨大快乐。作为媒体工作者,我见证了软件世界中无数个悲惨故事——无论是跨国公司、政府机构,还是军工大鳄,都曾一头撞上过代码的冰山。而作为一个经理人,我又得对付自己的泰坦尼克号。


这二十五年令人气馁的软件历史,也许不具代表性,但却是我的个人经验。依照硅谷的数字乌托邦理想,事情理应朝好的方向发展。在Salon网站发布失败后的几个月里,理想与现实之间的差异开始对我露出了利齿獠牙。


编程已不再处于萌芽期。我们的世界依赖于无穷复杂的软件。在长达半个世纪的研究和实践之后,为什么还是很难做到按时限、按预算做出计算机软件?为什么还是很难让软件可靠而安全?为什么还是很难把软件做得易于学习使用,且具备按需修改的灵活性?这只跟时间和经验有关吗?是否有出现某种根本性突破的可能?在软件的本质特性(抽象性、复杂性及延展性)上,是否存在某种总能打倒我们的无常之物,将开发者咒入充满不可挽回的延误和根深蒂固的缺陷的世界?


“软件难做,”编程界经典教科书的作者高德纳(Donald Knuth)这样写道。但原因何在?


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


你可能已经注意到,我把本章标为“第0章”。我无意搞笑,只是想指出计算机程序员和其他人的一处小小不同:程序员从0开始计数,而不是从1开始。要解释这种习惯的来源,得从计算机中央处理单元里的寄存器,以及数据队列的结构等等奥义秘辛说起。不过,我发现最直截了当的解释来自于一个网页,该网页试图向大众解释黑客的行为——“黑客”一词的本义是“痴迷的编程匠人”,而非后来衍化出的贬义“数码入侵艺术家”。


为什么程序员要从0开始计数?因为计算机从0开始计数!所以,程序员也训练自己这样计数,以免让他们要指示操作的计算机产生误解。这本也无伤大雅,只是使用计算机的大多数人是从1开始计数,未免令人烦恼。往下到系统层面,在这个层面上,数据被存储和操作——意味着我们的金钱、工作和设想被转换为机器可读的符号——计算机程序及编程语言经常会做小小的偏移操作,即“+1”或“-1”,使得计算机从0开始计数的列表与人类从1开始计数的列表保持同步。


在计算机的二进制数字世界里,所有的信息都被简化为0和1的序列。但是,在0和1 之间有空间存在,在机器计数和思考的方式和人类计数和思考的方式之间也有空间存在。当你寻找软件缺陷、延误和不按设计思路运行的原因时,那原因就藏身于这空间之中。


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


在构思本书的那段时间里,我每天要驾车从旧金山海湾大桥(Bay Bridge)上通过。一天早晨,当我的车努力爬上连接奥克兰(Oakland)岸边和桥东段中心较高地带的长长引桥时,我发现,右边有个新物体挡住了海湾碧水和远山绿树:那是一台高耸的红色起重机的顶端,正好超出桥面。它在那儿日复一日地矗立着,突然有一天,又多了12台起重机,在桥北一线齐齐排列,如同挤在食槽旁的机械怪兽,等着倒霉的上班人士送进嘴来。


这工程是要替换双层大桥的北半部分。在1989年的Loma Prieta大地震时,该部分上层一段五十英尺长的桥面坍塌到下层的车行道上。现在,将在旧桥旁边搭建一座更安全、更现代的新桥。


随后几个月,这些240英尺高的起重机,开始将一根根直径达8英尺、长达300英尺的锈钢管打进海湾水底。在清晨时分,从我远在伯克利(Berkeley)山的家中都可以听到敲击声。总共将会有160根这种大管子被打入海底,填上混凝土,支撑新桥的水上部分。整个过程设计精密、执行无误;它分毫不差,完全满足了我们对工程一词的信心。


关于软件缺陷的话题,只要谈上几分钟,必会有人拍案叹道,“为什么就是不能像造桥那样造软件?”


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


和摩天大楼、水坝等永久性建筑一样,桥梁体现了人类对物理世界的技术把握。在过去半个世纪里,软件成为构建这个世界的虽不可见但却深入渗透的人造物。“人类文明运行于软件之上,”广为应用的计算机语言C++发明人比昂纳·斯卓思柯普(Bjarne Stroustrup)这样说道。


初听起来,这像是奇谈怪论或是自卖自夸。即便没有Microsoft Windows,人类文明也会同样延续,对吧?然而,软件并不只是用来发电子邮件或写报告的程序那么简单;它已经不声不响地渗透到生活的每个角落。它存在于厨具里、汽车中、玩具里,建筑中。商业和银行、选举和新闻媒体、电影和交通网、医疗和国防、科研和基础公共服务——人类生存之所需都系于计算机代码这根易断的细线上。


而且我们要为其脆弱付账。根据国家标准和技术学会(National Institute of Standards and Technology )2002年的研究,软件错误每年造成美国595亿美元的经济损失,三分之二的项目明显延误或超出预算,甚至干脆无疾而终。


人类文明运行于软件之上。但是,软件创建艺术却隐于暗处,即便对于专家们也是如此。在历史上,我们从未如此地完全依赖于这样一种人类自己不知道怎么才做得好的产品。在对软件系统的加速依赖和踱着方步学习怎么做好软件之间,有一条巨大且有时叫人恐惧的壕沟。对软件的依赖以指数级增长,而做软件的技能——和应用技能的愿望——却进展缓慢。


你要和程序员说这些,就等着挨批吧。这边厢,有人也许会说,世界从未如此光明:我们拥有了比以往更好的工具、更好的测试、更好的语言,还有更好的方法!那边厢,你又听人家说,自计算机时代的黎明以来,其实并未取得多少进展。计算机先驱莫瑞斯·威尔克斯(Maurice Wilkes)[ 6 ]回忆起1949年他在英国剑桥的情形,在拖着打孔纸带上楼给雏形计算机EDASC装载程序时,他看到了未来:“我强烈地意识到,生命中剩下的好日子,都将耗费在给自己的程序找错误上头。”从威尔克斯的时代直到现在,尽管有那许多创新,程序员却一直陷于调试除错之苦境。工作中只有百分之一的灵感迸发,剩下的是艰难寻找、汗湿重衣;他们的作品永远尚未完成或不够完美,区别仅仅是“问题更少”的程度不同罢了。


 


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※


 


软件就是麻烦一堆。而且我们不能够也不愿意把电脑一关走为上计。给我们带来挫败和束缚的软件,也用更多功能、更快更好的工作与生活方式来引诱我们。无路可回。我们对软件的需要,远甚于对它的仇恨。


所以我们梦想着得到更新更好的东西。在现代软件研究领域多有建树的专家弗里德里克·布鲁克斯(Frederick Brooks)在1987年写了一篇题为《没有银弹(No Silver Bullet)》的著名论文。布鲁克斯在论文中称,无论编写计算机程序是如何地令我们倍感挫败,也永远无法找到一种魔法般的突破——我们只能期待渐次前行。布鲁克斯的观点难以辩驳,但也难以接受;参加计算机业界的一些会议,或是浏览程序员网站时,你总会遇到一些坚称其错的人。


有些人梦想炸毁今天的整座软件大厦,替以某种全新之物。有些人则只一味盼望找到不太顽固、更能响应人类愿望和行为流程的程序员,盼望能得到召之即来、挥之即去的软件,盼望得到足堪依赖的代码。


We dream of it, then we try to write it — and all hell breaks loose.


梦之所寄,行之所为——地狱之门就此洞开。



[1] Black code,指原来程序逻辑中没有的部分,采用类似侵入的手段加进去的代码。


[2] 新月沃土系自中东两河流域及附近一连串肥沃的土地。包括今日的以色列、西岸、黎巴嫩、约旦部分地区、叙利亚,以及伊拉克和土耳其的东南部。由于在地图上形似一弯新月,所以美国芝加哥大学的考古学家詹姆士·布雷斯特德(James Henry Breasted)把这一大片肥美的土地称为“新月沃土”。


[3] American Bankers Association,美国银行家协会


[4] American Medical Association,美国医药协会


[5] Rosetta Stone,1799年法国士兵在埃及发掘出来的象形字黑石碑。也是美国著名的外语教程品牌。


[ 6 ] 1967年图灵奖获得者,他领导建造的拥有内存储程序的计算机EDASC于1949开始运行。


本书将由电子工业出版社近期推出,敬请留意。

代码,梦

今天下午19:00,翻译完Dreaming in Code最后的《结语》部分,这本书算是基本完成了。说来惭愧,去年初接下这个任务时,满以为顶多半年足可交稿。真正开始翻译时,才知道自己低估了任务难度。作者Scott Rosenberg是在线杂志Salon.com的主编,笔下极尽引经据典、推敲字句之能事,夹叙夹议,奇闻轶事和以精论妙谈,300来页一本书,触及软件开发中多个根本大题目,叫人看得心惊肉跳之余,又不由得掩卷长叹。


《大褂还是内裤》一文中,我简单提到Mitch Kapor和Chandler项目。Dreaming in Code在“叙”的部分就是写这个项目的。本书的副标题很长,也很吸引人:Two dozen programmers, three years, 4,732 bugs, and one quest for transcendent software(两打程序员,三年,4,732个缺陷,只为打造卓越软件)。Mitch Kapor和他的程序员们曾经打造过最伟大的软件,现在他们有了近乎奢侈的资源,为了“用代码改变世界”的梦想,共襄盛举。可惜他们遇到了“软件时间”的黑洞,从2001年开始,泥足深陷、举步维艰。Scott Rosenberg从项目一开始就贴身跟踪,记录下Chandler项目开发过程中的点点滴滴。


如果本书仅及于此,就不过是一篇尚可一观的“报告文学”。幸好Scott Rosenberg的主要目标是揭示软件开发中的普遍问题:为什么做软件这么难。在描写Chandler项目进展的段落之间,温伯格、布鲁克斯等大师级研究者,Linus Torvalds和Joel等实践者纷纷“出来”现身说法,还有来自各机构、媒体、作者的大量资料,从“软件时间”入手,兼及各种方法论、积木式编程、软件设计、项目管理,所有这些都是最后一个大话题的铺垫。在《结语》部分,Scott Rosenberg提出了这个大话题:人工智能有没有可能超越人类?在这个问题上,Mitch Kapor打了个20,000美金的大赌。他打赌,到2029年为止,都不可能造出能通过图灵测试的机器。


Mitch Kapor绝非悲观主义者。他本人和整个OSAF团队做梦都想通过软件系统“改变世界”。改变世界的梦想鼓舞过无数程序员,然而最初却不是对程序员说的。在Dreaming in Code书中提到这么一桩轶事:当年Steve Jobs(就是Apple的乔布斯大爷啦)想要说服百事的CEO John Sculley加入Apple,就对John Sculley说,你是想终己余生“卖甜水”呢还是过来造计算机、改变这世界?不过John Sculley加入Apple后不久,就联合董事会把Jobs赶出了公司。


过去几十年以来,计算机软、硬件制造者们一直以他们的努力推动这世界。而他们的每一分努力,因为halting problem(停机问题)的缘故,都注定是未完成的任务。他们是在挑战智慧和精神力的极限,简直是“逆天而为”——所以也难免要遇到软件生而固有的困难。


Dreaming in Code以一个具体项目的进程为例,列出了这些普遍存在而又近乎无法解决的困难。有趣都是,在翻译本书的过程中,每每与朋友聊天,他们提出的一些问题,在书中也都涉及。这本书很快就要出版了,到时一人送一本,他们是软件实践者,看后应该会比我更有感触和启发吧。

大褂还是内裤

有个相声说,某人买了一丈布,要找裁缝做大褂。其妻自告奋勇,称自己也会做,就接手做了。两个月后问她,说做是做,只是把布剪坏啦,改做小褂吧。如此循环,从大褂变成小褂,小褂变成肚兜,肚兜变成内裤,内裤变成口罩,最后只好扎了墩布。

闲话表过,再表闲话。

话说Mitch Kapor以数十亿美金高价把一手创建的Lotus公司卖给IBM后,做了一段投资人,又回归技术界,创立一家开源基金会。为了实现心目中“最好的PIM软件(个人信息管理,类似Outlook那样的)”,投入百万美元,聘请了一群最NB的程序员(包括Netscape元老级程序员、Macintosh操作系统核心程序员、微软资深开发工程师……),动手开干。有近乎奢侈的资源(财力、人力、时间),照说项目应该顺利进行吧。其实不然。这个名为Chandler的项目,从2000年开始立项,开发过程中软件功能列表一再缩减,直至今日尚未推出1.0正式版本。测试版本在我的Windows 2003操作系统上,仍然无法运行。

看过上面两桩闲话,读者大概知道我想说什么了。雄伟的愿景往往流于空想,做软件难,第一难就在于蓝图太宏大。常有朋友找我帮他们做顾问,看看他们的软件/网站项目。通常的过程会是这样——

 

(演示、讲解项目目标、功能等等)

我:请问,这是你们真正想要的东西吗?

对方:是,我们想做最好的xxx。

我:请问,你们打算花多长时间来做这个项目呢?

对方:三个月。

我:坦率地说,你们不可能做得到。我的建议是,把刚才说的功能先砍掉一半,再砍掉三分之二,剩下的部分,大概就是三个月之内你们能完成的部分了。

对方:……

 

产品设计者往往会想得太多,把所有可能路径都设想在内。而开发者则往往会低估项目难度,做出太过乐观的判断。这样的结果就是,以为可以在过短时间内完成过于庞杂的功能。危害有二:其一,项目无限期延误;其二,功能不断缩减。六个月甚至一年之后,大褂没做成,千疮百孔内裤倒是有一条。与其如此,不如一开始就以内裤为目标好了。

昨天有人问我,为什么是“先砍一半再砍三分之二”而不是“砍掉六分之五”。我说的“砍”,不是简单按字母顺序嚓嚓嚓,而是一个讨论、思考的过程。第一步去除一半,第二步去除一半的三分之二。起初设想出那么多功能,肯定花了不少心血。现在要砍,每一项都显得那么宝贵而舍不得丢弃。反复斟酌、流泪放弃,最后剩下的,是软件/网站项目最最核心和关键的功能,也是以目前资源所能完成的工作。以后,再视运营情况加以增补。

我想,做其它事,或许也可以采用类似的方法吧。大褂还是内裤,这是一个难题。以我之愚鲁,大褂不敢妄想,甚至没准内裤也做不出来,那就踏踏实实、裁剪缝制一个真有用的口罩吧。

学习在于专注

最近朋友圈里讨论英语学习的气氛有渐趋浓烈之势,加上昨天见到一位奇人,久已不写的Blog,似乎又可以来上一篇充数。首先申明:在下不是什么英语达人,初衷也非授人以渔,不过约略回忆学生时代罢了。

回头说昨天见到的这位奇人。此人姓陈,大学教授,昔年曾任海南三环出版社编辑部主任,风靡一时的《双向式英语》就是他一手操办的。我对他说:看过这套书。他回一句:上当了吧,整套东西都是我策划的,其实那套教材本身未见得多好。

席间没有深入聊这个话题,不过却勾起了我的一段回忆和一些感慨。姑且不论《双向式英语》本身优劣如何,以当年对我的冲击而言,不可谓不强烈,即以今天论,对我个人多年成长的影响亦不可谓不深远。陈所谓“完全为了营销”而做的宣传,让一位濒临颓废的少年重拾信心,真是言者无意,听者有心,一句话点醒有缘人。

话说在下初中一、二年级时(20世纪80年代末期),各科成绩除语文、化学、物理外一片狼藉,尤以英语最惨。惨到什么地步呢?26个字母,愣是只能默写出24个来。现在想起来,觉得实在不可思议。那时感觉自己在读书上不可能有什么进展,眼看中考在即,却整日价只和一帮同类厮混,蹲在学校门口喝酒瞎闹,要不就是逃课在家看电视。

有天下午,循例逃课看电视。我家那台18寸的松下彩电屏幕上,赫然坐了个胖子,用台湾国语口音很拽地讲着什么。那时刚开始引进港台歌星,所以听见这种口音还是很新奇,不免就跟着看下去了。此人姓扶名忠汉,名为学习英语讲座,实则叫卖他的双向式教材。叫卖是叫卖,还真讲得我好似醍醐灌顶,突然就开了窍。写这篇东西的时候查了一下资料,看到演讲全文记录,当年对我刺激最大的是几点:

 

1、英语可以“速成”。即在一段时间内集中训练,能达到普通应用程度。

2、很多人学不会英语是因为中国没有好的英语教材和学习方法。

3、背单词没用,要整句理解。

 

如今看来,这些言论有其似是而非的地方。问题是当时我正处在完全没有信心的境地,这些观点正好迎合了青春叛逆期少年心态——我学不好,不是因为自己,而是别人没教好。当时颇有“恍然大悟”之感,立刻求父母从省城(我们那儿是小城市,文化市场近乎没有)请人带《双向式英语》。自家孩子突然开始爱学习,虽然古怪,还是让人欢喜的。这套书和磁带很快到了,我也卷起袖管,一副要开始正经学习的样子。实话说,前面几课还是学得很认真的;到现在我还能背诵课文部分。双向式英语所谓最精彩的“与磁带对话”部分,反而是我不太记得有什么用的地方,只有那口吊儿郎当的美语口音,实在叫人喜欢。我想,这就是所谓语感的一部分。当我卷起舌尖说了第一句不太标准的美式英语,就像中了邪,对英语的感觉也上了身,霎那间不光喜欢上了英语,还莫名其妙有了辨别、欣赏、学习的能力。

这样学了很短时间,突然有一天我发现这套教材程度太低了。这个想法吓了我一跳,因为就在一个月之前我还默不出26个字母。看官别误会我在吹捧双向式教学法。这一个月之内的进步,完全是因为自己树立了“我能学好”的信心,而且开始不自觉地留意起身边每个英语单词、句子、说法。因为专注,眼里、嘴上、心中都是英语,还能学不好吗?

接着就是暑假。有了学英语的“经验”,我认定自己数学不行也是因为老师没教好(其实我的数学老师教学水平很不错,症结还是自己没信心),准备自学。于是从图书馆借了两本中国青年出版社50年代出的旧书(看,连现行教材都不相信,多偏执!),一本几何,一本代数,整个手抄一遍,务求每个例子均能自己再盖上书写出来。同时还抄了一本张道真的语法书。初三第一次中期考试,我的成绩从54名(全班62人左右)直升到第7名,英语、数学两科进步尤为明显。老师们起初都不太相信是我自己考出来的,但在我几次课后提问之后,他们都接受了这个不太可能的现实。

之后我一直对英语抱有执着的兴趣。按李笑来的标准,典型的螺丝刀偏执狂。然而一个小城的中学生,学点英语,还真没什么用——整个城里的英语资料,加起来也不见得有多少本。这样到了高三,因为高考改革的缘故(“三南”——湖南、云南、海南——地区92年实行文1、文2、理1、理2分科,理1不用考化学,我会考后就放弃了化学、打算考理1,但93年又改回文、理2科,理科必考化学),本来选理科的我,因为英语还行,只好选了文科外语类,考进广州外国语学院。

广外图书馆规模不大,英语书不少,尤其是每年都会新购入大量原版畅销小说。俗人如我者,能不好之乎?所以看英文小说就成了第一消遣。此外,我还对莎士比亚和狄更斯产生了兴趣(大约兴趣来自于看了什么改编的电视或电影吧),借阅了两位大文豪许多作品。坦白地说,并不是真的都看明白了。我是个不求甚解的人,不明白的地方,囫囵吞枣也就混过去了。倒是养成一个怪癖:睡前朗读莎士比亚戏剧对白或者十四行诗。当然也未见得声情并茂,甚至意思多半也是理解模糊的,只求那种声韵上的和谐共振,真是令人神清气爽呢。

回想这些年来,正经“学习”英语的时间,加起来不会超过三、五个月。现在英语勉强够用(在英语国家大致能独自活得下去,阅读技术资料顺畅,一些文学作品能体会到其妙处,翻译过几本技术和非技术书),全拜有信心之后的专注所赐。当你因兴趣而专注,周围的一切莫不是学习材料。语言环境,不是一定要到美国英国去才有,也不是要在家里所有器物上贴满写着“chair”、“table”的纸条。那是一种英语会从周围任何招贴上跳到你眼睛里的感觉,是一种梦里会用英语思考的体验。

这样的感觉,在学计算机编程的时候也有过。这个话题就留到以后再叙了。本文纯属个人观点,欢迎拍砖。