克制我們內心的沖動
《正則指引》(第2版)就要出版了,按說這是一條好消息。在這條好消息面前,我更想做的是克制自己內心的沖動,靜下心來講講這本書初版以來的故事。
《正則指引》初級剛出版的時候,我一度認為,自己和正則表達式的緣分到此為止了。如果說翻譯《精通正則表達式》之后還有許多遺憾,比如某些講解方式不符合中國程序員的思維,以及過份關注英文,所以關于東亞文字處理的知識無從尋找,經驗無從分享。那么寫作《正則指引》,就是彌補這種缺憾的絕好機會。《正則指引》面世之后,這些缺憾已經悉數補上了。
令我沒有想到的是,《正則指引》自2012年出版以來,不斷有讀者向我反饋問題。除去最早一兩年密集熱烈的反饋,后續的反饋如涓涓細流綿綿不絕。而我一度想當然地認為勘誤已經完整了,所以一直沒檢查勘誤郵箱。直到一年前讀者在微信公眾號后臺給我留言,詳細列明勘誤意見之外,毫不留情地指責“對自己的作品不負責,長期不回復讀者意見”。這封信讓我慚愧不已。在軟件開發中,“發布了就不管”是很不負責的,在技術書籍的寫作中,“出版了兩年就不回復讀者意見”,同樣是很不負責的。
所以,我必須克制自己內心“年代久遠,不值得繼續打理”的偷懶沖動。文責自負,完整的說法應該是“文責終身自負”。
本次《正則指引》(第2版)的出版,對我而言是全新的補過機會,可以“一次性”回復迄今為止所有的讀者意見。當然,新增的Objective-C、Golang等章節,盡管已經找熟悉的朋友審讀過,但我可以肯定,它們必定不是完美無瑕的,未來仍然需要坦然面對廣大讀者持續的批評指正。哪怕有些批評指正的語氣不那么讓人舒服,甚至“看不到幾分善意”,我仍然需要克制自己內心“反唇相譏”的沖動,認清事實,撇開情緒,虛心面對。
同時,我也希望讀者在閱讀這本書時,能克制自己內心的沖動。
我希望大家克制的第一重沖動,是淺嘗輒止—“正則表達式這玩意兒,要用時翻翻就好,沒必要深究”。正則表達式已經誕生很多年了,以今天的標準來看,它的語法和結構相當粗陋,不幸的是,它的內部邏輯又相當復雜。有些朋友會問我一些“怎么看也看不懂”的正則表達式,坦白地說,我也要反復琢磨才能看懂。所以,盡管這本書提供了若干“速查”資料,但我還是建議讀者能耐下心來,至少通讀一遍。正則表達式有點像游泳,學會了就不會忘,用的時候自然能想起來。否則,你永遠只能在岸邊撲騰,離開了其他人的協助,一步都不敢往深處去。雖然很多時候,與你要的東西就只有一步之遙。
我希望大家克制的第二重沖動,是玩弄正則表達式的快感。前面說過,正則表達式的語法和結構相當粗陋,內部邏輯又相當復雜,所以不少人學會之后,產生了“掌握神奇魔咒”的快感。凡是和字符串相關的處理必亮出神奇的正則表達式,能用一個正則表達式的絕不用兩個,能用高級特性的絕不用簡單特性……隨之而來的是其他人查錯時層出不窮的抱怨,更不用提更新時膽戰心驚的煩惱。要知道,熟練使用正則表達式,卻不濫用正則表達式,同時考慮合作同事的感受和效率,才能真正贏得大家的尊敬。
武學大師說:武功不是用來傷害,而是用來制止傷害的。哲學大師說:沒有審慎思考,不懂得克制的人生,是不值得過的。這些道理聽起來有悖常理,我花了不少時間才終于弄懂。我相信,正在閱讀這本書的你,也應當懂得這些道理。
特別感謝兩位女士,西喬和劉舫。西喬為這本書設計的封面,絲毫不受歲月的影響。劉舫編輯細致嚴謹的工作態度,支撐著我完成《正則指引》的第2版,再寫下這篇序。
余晟
2018年9月3日
- Instant Node Package Manager
- TypeScript Blueprints
- 測試驅動開發:入門、實戰與進階
- Game Programming Using Qt Beginner's Guide
- PyTorch Artificial Intelligence Fundamentals
- Unity Shader入門精要
- Python機器學習經典實例
- ServiceNow:Building Powerful Workflows
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎卷)
- Internet of Things with ESP8266
- Python青少年趣味編程
- Web程序設計:ASP.NET(第2版)
- Learning Android Application Testing
- Hands-On Robotics Programming with C++
- Learning D