
克制我们内心的冲动
《正则指引》(第2版)就要出版了,按说这是一条好消息。在这条好消息面前,我更想做的是克制自己内心的冲动,静下心来讲讲这本书初版以来的故事。
《正则指引》初级刚出版的时候,我一度认为,自己和正则表达式的缘分到此为止了。如果说翻译《精通正则表达式》之后还有许多遗憾,比如某些讲解方式不符合中国程序员的思维,以及过份关注英文,所以关于东亚文字处理的知识无从寻找,经验无从分享。那么写作《正则指引》,就是弥补这种缺憾的绝好机会。《正则指引》面世之后,这些缺憾已经悉数补上了。
令我没有想到的是,《正则指引》自2012年出版以来,不断有读者向我反馈问题。除去最早一两年密集热烈的反馈,后续的反馈如涓涓细流绵绵不绝。而我一度想当然地认为勘误已经完整了,所以一直没检查勘误邮箱。直到一年前读者在微信公众号后台给我留言,详细列明勘误意见之外,毫不留情地指责“对自己的作品不负责,长期不回复读者意见”。这封信让我惭愧不已。在软件开发中,“发布了就不管”是很不负责的,在技术书籍的写作中,“出版了两年就不回复读者意见”,同样是很不负责的。
所以,我必须克制自己内心“年代久远,不值得继续打理”的偷懒冲动。文责自负,完整的说法应该是“文责终身自负”。
本次《正则指引》(第2版)的出版,对我而言是全新的补过机会,可以“一次性”回复迄今为止所有的读者意见。当然,新增的Objective-C、Golang等章节,尽管已经找熟悉的朋友审读过,但我可以肯定,它们必定不是完美无瑕的,未来仍然需要坦然面对广大读者持续的批评指正。哪怕有些批评指正的语气不那么让人舒服,甚至“看不到几分善意”,我仍然需要克制自己内心“反唇相讥”的冲动,认清事实,撇开情绪,虚心面对。
同时,我也希望读者在阅读这本书时,能克制自己内心的冲动。
我希望大家克制的第一重冲动,是浅尝辄止—“正则表达式这玩意儿,要用时翻翻就好,没必要深究”。正则表达式已经诞生很多年了,以今天的标准来看,它的语法和结构相当粗陋,不幸的是,它的内部逻辑又相当复杂。有些朋友会问我一些“怎么看也看不懂”的正则表达式,坦白地说,我也要反复琢磨才能看懂。所以,尽管这本书提供了若干“速查”资料,但我还是建议读者能耐下心来,至少通读一遍。正则表达式有点像游泳,学会了就不会忘,用的时候自然能想起来。否则,你永远只能在岸边扑腾,离开了其他人的协助,一步都不敢往深处去。虽然很多时候,与你要的东西就只有一步之遥。
我希望大家克制的第二重冲动,是玩弄正则表达式的快感。前面说过,正则表达式的语法和结构相当粗陋,内部逻辑又相当复杂,所以不少人学会之后,产生了“掌握神奇魔咒”的快感。凡是和字符串相关的处理必亮出神奇的正则表达式,能用一个正则表达式的绝不用两个,能用高级特性的绝不用简单特性……随之而来的是其他人查错时层出不穷的抱怨,更不用提更新时胆战心惊的烦恼。要知道,熟练使用正则表达式,却不滥用正则表达式,同时考虑合作同事的感受和效率,才能真正赢得大家的尊敬。
武学大师说:武功不是用来伤害,而是用来制止伤害的。哲学大师说:没有审慎思考,不懂得克制的人生,是不值得过的。这些道理听起来有悖常理,我花了不少时间才终于弄懂。我相信,正在阅读这本书的你,也应当懂得这些道理。
特别感谢两位女士,西乔和刘舫。西乔为这本书设计的封面,丝毫不受岁月的影响。刘舫编辑细致严谨的工作态度,支撑着我完成《正则指引》的第2版,再写下这篇序。
余晟
2018年9月3日