上周在深圳见朋友,聊天时仍然把“正则表达式”和我联系在一起,这真让人惭愧,因为我已经很久不写正则表达式了,甚至有些生疏。估计是Jeffrey Fridel的《精通正则表达式》写得太好,身为译者的我也沾了不少光,收获不少虚名。为避免误解,撇去虚名,有必要专门写写我和正则表达式的故事。
我和正则表达式的缘份,始于我的第一份工作。那时我刚刚离开学校,除了在学校里认真写过些程序实现书上的理论和练习,根本没做过实际的项目。找工作当然也不顺利,尤其不是北京的高校毕业,在北京找工作更加困难。好不容易找到一家公司愿意收留我,周四上午面试、下午复试、周五就签合同,通知“下周一来上班”了。
我清楚地记得,上班的第一天,为了不让其他人看穿自己其实没有项目经验,我特意带了那本厚厚的影印版《the Java Programming Language》,一来充门面,二来也抱抱佛脚,之前在学校写的都是C++程序,Java确实不熟悉。而且,上午确实没太多事情干,这本书救了我的命。
好日子在下午就到了头,项目经理给我们做培训。当我满心欢喜地参加培训,希望通过培训来“软着陆”时,等来的却是高强度的信息轰炸:一小时内讲完了JBuilder、JUnit、Ant三样东西,我完全没有接触过,但公司要求“明天就开始使用”。读书时虽然不排斥学习新的知识,毕竟习惯“循序渐进”,这种“培训”闻所未闻,结束之后只觉得大脑一片混沌。在QQ向同学吐槽说“公司这么不讲道理,纯粹血汗工厂”,答复却出乎我的意料:“赚翻了,赶紧学,我们想用还不让用呢”。在当时,被“堵”的感觉特别糟糕,但转念一想,这么说也有道理,所以我拼命忍住反感,硬着头皮学习。
到了周三,我终于可以稍微熟练地掌握周一培训的三样东西时,想稍微可以喘口气之后,项目经理又扔来实际任务了:写程序从页面上抓取需要的信息。结果我又紧绷起来,虽然之前也学过HTML,也做过网页,却从没想过“反过来”的事情,对于“从HTML代码里拿到需要的信息”这回事,我毫无概念。不过既然安排了任务,当然不能不敢说不会做,因为之前曾有同事说“不会做”被教训了——“这是什么理由,不会赶紧学”,所以我还是一口应承下来,虽然完全没有头绪。
这样漫无头绪地干熬了两天,到周四快下班的时候,项目经理问我“快做好了吗?”,我说“快了,还差一点”,他说“好,你多用Google吧,查查正则表达式的资料”。于是,“(遇到问题)多用Google”和“正则表达式”成了我当天听到的最有信息含量的两点。我从下午6点开始学习正则表达式,弄懂基本的例子已经是9点多了,这时候我已经可以确认,沿着正则表达式这条路走下去可以完成任务,所以我决定熬夜把程序调出来。结果,刚工作那个周五下午的阳光,特别的明亮和耀眼。
这就是我和正则表达式结缘的开始。后来,因为工作中经常要用到正则表达式,而我又对这个玩意比较感兴趣,所以决定花点时间专门学一学。当时网络上的资料还没有今天这么多,所以学习很多时候还得靠专门的书籍,找好书的有效办法就是上亚马逊搜索看书评(当时亚马逊还没有中文站),评价最高的书一般都不错,同时还得保证这本书有电子版,所以我选了那本Mastering Regular Expression。开头几章还能和自己的工作结合起来,后来就越来越深入缥缈了,但我舍不得中止,索性把atomic grouping, lookaround, anchor等等功能都囫囵吞枣看完了。或许是当时年轻的缘故,所以即便用不上,看过之后仍然有比较深刻的印象,觉得正则表达式的功能着实强大,并时常憧憬以后可以用上这些功能。
过了一年多,通过很偶然的机会知道武汉博文视点的周筠老师正在找人翻译Mastering Regular Expresson这本书(后来才知道,是当时《程序员》杂志的主编孟岩推荐引进的这本书)。既然读过这本书,对这本书也很有些感情,我便报名参加了试译。认真而惶恐地递交自己的试译稿之后,焦急地等了两个礼拜,博文视点的编辑问我“你能不能独自翻译这本书?”,我开心地一口应承下来(又是后来才知道,本来是计划找多名译者合力翻译的),这才有后来《精通正则表达式》简体中文版的翻译出版。
现在想起来,自己但是能获得这个机会,有相当大的偶然成分:通读《精通正则表达式》是偶然,掌握了点翻译知识也是偶然。翻译是我在大学时考完GRE之后“无所事事”时找到的兴趣,曾经想通过翻译赚点外快,翻译稿是被人家认可了,可因为不好意思一手交钱一手交货,并没有拿到报酬。不过以此为契机,我觉得自己的翻译可以被人认可了,所以更有兴趣学习和练习。加之当时网友大多古道热肠,秋风(如今仍然是活跃的知识分子)和林猛(现在在北京师范大学任教)两位前辈给了我很多翻译的建议和指引。所以在正式接手翻译《正则表达式》之前,我已经积累了十多万字的翻译经验,其中很多还是被批评后反复修改、讨论的结果。这些经验没有为我赢得什么实质的报酬,却是日后争取到翻译《精通正则表达式》机会的宝贵积累。
出于一系列的偶然因素,我才与正则表达式结缘,而且主要的缘份也到此为止,后来并没有写过太复杂的正则表达式,也没有机会密集使用正则表达式。所以如今,每次听到大家把“正则表达式”和我联系到一起,我都感到非常惭愧。复习GRE提高了英语,热心前辈的建议和指引帮我提高了翻译水平,公司的“高压”让我有机会认识并迅速掌握正则表达式,项目经理的严格培养了我通过Google自学的能力,亚马逊的书评和电子版的存在让我选择《精通正则表达式》作为学习资料……只要其中任何一个条件发生变化,我可能都不会与正则表达式结缘。我真正能掌握的,只是掌握自己认为有价值的工具,练习自己认为有价值的技能,学习自己认为有价值的知识。
如果要问我什么是“有价值”,我想说“有价值”就是开动脑筋,学习合适的工具、正确的方法去解决问题。上大学的时候,我读到马尔萨斯的《人口论》,绞尽脑汁也不知道该如何破解自然资源增长速度与人口增长速度不匹配的难题,直到后来才恍然大悟,原来马尔萨斯忽略了科技和智慧的作用。对这个问题,计算机科学的例子不胜枚举:同样复杂的问题,开动脑筋,换套解法,消耗的能量没有变化,时间却大大缩短了。把智慧运用到各种问题上,把它做得更好,就是我认定的“价值”。
From 乱象,印迹, post 纯属偶然——我和正则表达式的缘份