纯属偶然——我和正则表达式的缘份

本文由Yurii原创,转载请注明来源: Life Sailor

本文链接 纯属偶然——我和正则表达式的缘份


上周在深圳见朋友,聊天时仍然把“正则表达式”和我联系在一起,这真让人惭愧,因为我已经很久不写正则表达式了,甚至有些生疏。估计是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自学的能力,亚马逊的书评和电子版的存在让我选择《精通正则表达式》作为学习资料……只要其中任何一个条件发生变化,我可能都不会与正则表达式结缘。我真正能掌握的,只是掌握自己认为有价值的工具,练习自己认为有价值的技能,学习自己认为有价值的知识。

如果要问我什么是“有价值”,我想说“有价值”就是开动脑筋,学习合适的工具、正确的方法去解决问题。上大学的时候,我读到马尔萨斯的《人口论》,绞尽脑汁也不知道该如何破解自然资源增长速度与人口增长速度不匹配的难题,直到后来才恍然大悟,原来马尔萨斯忽略了科技和智慧的作用。对这个问题,计算机科学的例子不胜枚举:同样复杂的问题,开动脑筋,换套解法,消耗的能量没有变化,时间却大大缩短了。把智慧运用到各种问题上,把它做得更好,就是我认定的“价值”。

Yurii

View Comments

Recent Posts

德国育儿经验:家长需要和儿童谈论”空气动力学“吗?

家长应当和儿童,尤其是低龄儿童谈论“空气动力学”吗? 我的答案曾经是非常肯定的:不应当。不要说儿童,就是成年人也不见得理解这些抽象的概念,与儿童谈论这些名词,只会让人望而生畏。身为父母,我们应当做的是,以孩子能理解的、感兴趣的方式谈论相关的具体问题,但绝对不要提这些大词。 不过世界的奇妙就在于,父母对教育并没有绝对的权威,总是需要根据实际情况来修正自己的观点。在“空气动力学”的问题上,我就吃到了教训。 那是一个下午,家里小朋友在iPad上看完他最喜欢的Blippi(这个节目我之前介绍过,对80后父母来说,Blippi可以理解为“带你见识各种新鲜玩意的董浩叔叔”),忽然抬起头来问我:“爸爸,你知道什么是aerodynamics吗?” “什么?你问我知不知道什么是aerodynamics?”我的下巴都要掉下来了。“空气动力学”这种词还是上中学时,身为军迷的我们在《航空知识》上知道的。再往后英语好一些,能看原版科普视频了,才知道“空气动力学”的原文就是aerodynamics。可是,我家这个还没上小学的家伙,竟然就能真诚地瞪大眼睛,一本正经地问我“知不知道什么是aerodynamics”。 (more…)

3 days ago

忆孟繁超老师:他从来没有给我上过一堂正式的课,但我永远都是他的学生。

我本来是不应该认识孟老师的。 2001年,我在寝室夜谈里第一次听到孟老师的名字。当时有同学说“公共选修课的《法学概论》讲得真好,那个老师叫孟繁超”,开始我不怎么在意,慢慢才发现这么说的人还不少。那个年月网上的资料正丰富,出版管制也不那么严格,刚进大学不久的我正自由自在地看得过瘾,心想“大学里的法学概论讲再好,能讲些什么,还不是教科书上老一套”,所以这种课,不听也罢。 但生活就在这么奇妙。那年冬天,有天中午我吃过饭正准备午睡,忽然有人敲门问“计算机系有位叫余晟的同学在这里吗?” 大中午的谁会来找我?我正好奇这个问题,门一推开就有同学喊“孟老师,孟老师来了”。 那是我第一次见到孟老师,中年人,国字脸,身材高大,打扮很精神,披在身后的深色大衣让我一下子想起电影里的斗篷。他笑眯眯地说“你是余晟?听同学说你搞电脑很厉害,我家的电脑坏了,想请你去看看。” (more…)

3 days ago

“历史照进现实”,这似乎不太现实

中国人大概都对历史有一些特别的偏好。对我们普通人来说,历史首先是文化的象征,一个人“懂历史”,基本等于这个人“有文化”;历史也是民族自豪感的来源,哪怕考古上仍然存在争议,但是“五千年文明”的说法是普通人都耳熟能详的。 不过等我长大之后才发现,这种偏好大概还有更深层次的原因,那就是历史看起来有种道德的意味,因为我们从小就熟悉“以史为鉴”的智慧,也熟悉各种“历史的选择”:每当我们对现实感到失望、困惑的时候,我们经常去历史——而不是先贤的智慧中——中寻找解答。找到曾经发生的类似的故事,就可以预言未来的结局。 于是乎,失望也好、困惑也罢,总归会有光明的未来,历史总会给我们支撑的信念。 我曾经很相信,熟谙历史是种智慧,而且是深层次的智慧。但是看得越多、经历得越多,我就越觉得,这很难称之为“智慧”。 为什么? (more…)

3 days ago

无人出租车,是技术进步的一粒灰,还是普通人头上的一座山?

“无人出租车要来了”。以百度“萝卜快跑”为代表的无人出租车,眼看就要在国内多个城市成规模运营。 熟悉IT的人都知道,IT的独特优势就在于“大规模扩展时边际成本极低”。在软件时代,微软开发的Windows,多卖一份的成本只是多刻录一张光盘而已。在无人驾驶时代,从10辆车到10万辆车的成本,也遵循同样的规律。换句话说,一旦模式“跑通”了,就可以迅速大规模铺开。无人出租车的大规模应用,也是“指日可待”了。 只不过,新技术这一次似乎没有那么激动人心,反而引起了很多争议——无人驾驶出租车大规模推广,会不会影响广大出租车、网约车车主的收入甚至生计?如果是,这样的技术进步,真的是我们所需要、所期待的吗?对于这个问题,不同的人有相差迥异的答案。 按照我的观察,许多人对此是相当乐观的。理由在于,“技术的每一次飞跃发展,虽然有阵痛,最终都创造了更多的新岗位”。既如此,无人出租车短期“看似”抢了许多人的饭碗,但也只是短期的“阵痛”而已。看看历史,纺织机的发明,蒸汽机的改良,汽车的诞生,无不证明了“阵痛说”的正确性。 坦白说,这种观点我是怀疑的。 (more…)

3 days ago

回国感受:松弛一点,愉快一点

因为小朋友放暑假,近期带小朋友回国待了几个礼拜。最深的感受就是标题所说的:松弛一点,愉快一点。 我第一次突出意识到这点,是在上海下飞机乘地铁。当时我们乘的直梯就要关门,远远看见有个年轻小伙子跑过来,我连忙按住开门按钮,并招呼他”别着急,慢慢来“,等他进了轿厢才关门。本来我以为大家起码会打个招呼,露个笑脸,因为我已经习惯如此,但完全出乎我意料的是,他进来之后对我们完全视若不见,自顾自掏出手机,盯着看得入迷。 我继而发现,不管是在电梯里,站台上,还是车厢里,虽然四下里都是广播”请扶好站稳,抓好扶手,不要看手机“,但是似乎人人都盯着自己的手机。年轻人在打手机游戏,年纪大一点的在滑各种小视频,还有不少人在聊天软件里打字如飞……对着屏幕的表情都很生动,可是一旦抬起头来,似乎马上又换了个人。 后来又有一次,我乘地铁的时候,因为比较拥挤,一个小伙子倒退时踩了我一脚,他大概意识到了,很快把脚挪开,脸上闪过一丝不安,马上又恢复正常,我也没有计较。不幸的是,过了十来分钟,他又踩了我一脚,同样是先有一点不安,很快又恢复正常。 这次我忍不了了,于是我开口告诉他:“小伙子,你已经踩了我两脚了。” (more…)

3 days ago

First name, last name, middle name,浅谈外国人名

前几天,国内朋友发来一条消息,原来是乌克兰F-16坠落,飞行员丧生的新闻。我本来以为他要讨论此事的真假和原委,他真正的问题却完全出乎我的意料: 新闻里说,飞行员叫阿列克谢·“月鱼”·梅斯,对应原文是Alexei “Moonfish” Mes,为什么会有人把“月鱼”写在自己的名字里,而且还打引号。 之前看新闻,乌克兰还有一个著名的飞行员叫安德烈·“果汁”·皮尔希科夫(Andrii “Juice” Pishchykov),怎么“果汁”也是正式的名字? 未必Moonfish和Juice之类,还有什么特别的含义吗?…… 这堆问题看的我有点想笑,因为自己以前也很苦恼外国人的名字,只有在国外长期生活,才逐渐搞清楚这其中的名堂。所以,除了解答朋友的问题,我也把自己的解释写下来,搞清楚两个最不容易理解的点,就不会对外国人名有那么多问题了。 (more…)

3 days ago