從寫博到出書:過程全記錄

qianby發表於2021-09-09

 

從讀博士起,我對程式設計的興趣忽然濃厚起來。當時做大規模並行運算,需要自己寫很多程式和指令碼。作為新進研究組的新人,我自覺負擔起很多寫程式的活兒。寫得多了,興趣也變得濃厚。


那個時候抓緊一切機會學習程式設計。在我讀博的研究所裡,有一位英國教授也喜歡程式設計。她叫愛瑪·希爾(Emma Hill),教我們用程式語言處理地球科學的資料。有一天,我路過她的辦公室。她問我最近的學習進度。

“準備學Perl呢。”我回答說,“感覺Perl在地理領域應用很廣。”

“你為什麼不學學Python呢?”愛瑪問我,“這門語言發展很快。你學會了或許可以教教我。”


我之前聽過Python的一些傳聞,比如那句著名的“人生苦短,我用Python”。但我擔心Python在地球科學研究方面不如Perl積累深厚。有了愛瑪的鼓勵,我下定決心去研究Python。Python學起來確實很快。沒過多久,我就可以用Python來解決我在科研中遇到的大部分問題了。記憶比較深刻的是,有一次下載來自美國研究所的一批氣象資料。我用Python中的多執行緒併發下載,創造了大學中網路傳輸的紀錄。學習加實踐,讓我愛上了這門語言。


隨後,我開始在部落格園寫一系列部落格,記錄自己學習Python的過程。這一系列的文章叫“Python快速教程”。我想在這些文章中呈現出Python簡單易學的特點,以便讓更多的人也來享受程式設計的樂趣。在寫作過程中我意識到,要想講明白一門程式語言,還要引入額外的背景知識。我的程式設計部落格也從Python開始,擴充到網路協議、作業系統、演算法、資料分析等方面。寫的時間越長,收穫的讀者也越來越多。部落格園的一位運營告訴我,有一段時間我的部落格訪問量保持在全站的前三。我的一位大學同學告訴我,他不但讀了我的部落格學Python,還成功在矽谷找到Python相關的工作。還有一次朋友向我推薦Python教程,才發現居然就是我寫的這一份。所有這些都讓我感到驚喜。因此,我非常感謝愛瑪給我推開的這扇門。


完成博士學業之後,我需要在科研和程式設計之間選擇。由於程式設計帶給我的美好體驗,我毫不猶豫地選擇了程式設計。將近三十歲的我,和二十出頭的年輕人一起做產品、除錯、debug。我必須要非常努力,才能趕上這群富有天賦而精力旺盛的年輕人。但我並不覺得辛苦。辛苦是學習的臺階。在程式設計中,我享受著腦細胞的瘋狂啟用,享受著未知錯誤的折磨,以及苦苦思索之後的豁然開朗。更棒的是,我的夥伴總是以樂觀的態度來看待技術,以享受的心態來享受程式設計。我從中受益良多。更何況,計算機浪潮已經並將繼續改變世界。我很幸運,能加入浪潮中。


“Python快速教程”得到了不少編輯的認可。他們希望我能把部落格文章改編成一本書。寫書當然是莫大的榮幸,我很感謝每一位編輯的賞識。可在博士學業的壓力下,我能抽出的時間實在有限。所以多次的出版計劃都擱淺在擬定目錄這一步。終於拖到博士畢業,我才開始認真整理之前的文章。把略顯凌亂的部落格文章改編成書,工作量比我想象的要大得多。在此期間,我也開始了一個新的專案,研發一款用於畜牧的智慧晶片。生活的節奏又變得忙碌,能分給寫書的時間大大減少。

 

這本書的最終誕生,有賴於許多人的支援。安娜是一位非常寬容的編輯。從籤合約到完稿,我拖延了超過半年的時間。幸好安娜對我的拖延症格外包容。我在一個寫作小組認識本書的插畫師雷雨田。她繪製的精美插畫,讓枯燥的技術書變得生動有趣。在寫作部落格的過程中,很多人都指正過文章中的錯誤,或者對寫作方向提出建議。我還有一個小小的程式設計討論組。小組裡的朋友,如王豪、周昕梓和黃杜立,都花時間審閱文章。正是因為他們的審閱,我才能放心的交稿。

 

即便有這麼多人幫助,寫完一本書不太容易。油墨印刷成字,還是很嚴肅的一個過程。即使是完稿之後,我還是重新過了三四遍稿子,改動了不少的地方。比如說,我在寫物件名時,會習慣性地按照Java的程式碼規範寫成thisObject,而不是PEP8規定的this_object。在我認為,thisObject這樣的寫法更容易讓物件和函式區分開。我當然可以這麼做,PEP8只是指導性的程式碼規範,而不是強制要求。但我又擔心自己會誤導讀者。畢竟,程式碼不止是寫給自己讀的。如果用我的書寫形式寫成Python庫,那麼其他遵照PEP8的程式設計師在呼叫時會不會覺得奇怪?

 

反反覆覆思索了很久,直到有一天想到Python誕生時遵循的一個理念:

“如果常識上確立的東西,就可以遵照常識,沒有必要過度糾結。”

於是,我選擇了服從PEP8的程式碼規範,把書中的程式碼訂正了一遍。

 

你瞧,Python的理念已經開始在指導我。Python吸引我的,正是這樣一些旗幟鮮明的理念。在我現在的工作中,Python依然佔據著重要的地位。我會用Python進行網站開發和大資料分析,還會用Python來寫一些在微控制器上執行的指令碼。當然,我也離不開其他語言,比如處理資料庫的SQL、編寫安卓App的Java、網頁前端的JavaScript等。但Python讓我愛上程式設計。我也希望,這本書能讓讀者也愛上Python,並且繼續像我的部落格文章一樣, 能幫助到那些想學習程式設計的人。在此存一個美好心願。

 

文章改編自《從Python開始學程式設計》的前言部分。

 


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2806388/,如需轉載,請註明出處,否則將追究法律責任。

相關文章