1. 程式人生 > >在地鐵11號線上寫書

在地鐵11號線上寫書

我是抱著玩的心態開始用電腦的。自從家裡有了電腦之後,我就想方設法抓起滑鼠和鍵盤打一會兒遊戲。《金庸群俠傳》《仙劍》《星際》《盟軍敢死隊》,這些老遊戲都玩了個遍。父母擔心我沉迷遊戲,一度沒收了我的滑鼠和鍵盤。總之,當時的電腦只是個娛樂平臺。

那個時候已經在提“20世紀是計算機的世紀”。好萊塢電影開始把黑客塑造成孤膽俠客。我經常抱著《電腦報》或《大眾軟體》,幻想著自己成為一名俠客一般的計算機高手。但對於一個內地小城的孩子來說,深入接觸計算機技術的機會很有限。我曾經很認真地找了一套計算機等級考試的書看。把二進位制運算、SQL命令、QBasic語法都記得滾瓜爛熟,卻因為裝不好編譯環境,最終沒能寫出一個可以使用的軟體。後來讀那些頂級黑客的傳記,講他們從小如何如何程式設計,一直很好奇他們是如何度過環境搭建這個難關的。後來發現,這些人都有機會接觸一些程式設計高手,所以在他們的眼裡,根本不認為這是太大的問題。

上大學時,我選擇了物理專業。物理專業做數值模擬和資料處理,C語言和Fortran語言程式設計也是必修課。有了大學裡的資源,程式設計環境的搭建變成了小菜一碟。只是自己的電腦太過老邁,動不動就要宕機。朋友們呼嘯著打Dota時,我卻在為Word觸發的藍屏頭痛。相熟的朋友看不下去,扔給我一張光碟,要我重灌Ubuntu系統。Ubuntu是當時最流行的一個Linux版本。死馬當活馬醫,我安裝了光碟上的Ubuntu。系統裝好了,電腦宕機的次數大為減少。不過Linux下的影象化介面確實和Windows有差距,辦公軟體也比不上Office。我慼慼然地把Linux當作低成本的二等方案。但無論如何,當時正值我做“大學生研究計劃”,執行穩定的Linux還是救我於水火。事後請朋友吃飯,問朋友哪裡來的光碟,才曉得Ubuntu的安裝光碟可以免費領取。

更讓我刮目相看的是Linux下的軟體分發。那個時代還沒有蘋果App Store這樣的東西。所謂的線上軟體分發,就是上網下載exe安裝包。用了Ubuntu之後,我需要的軟體基本都可以在軟體源中找到。在終端輸入一行命令,編譯環境就搭建好了。我不用擔心病毒,而且大部分情況下也不需要付費。再加上學校裡有Ubuntu映象,下載一個軟體往往只需要幾秒鐘。於是,探索Linux下的軟體成了我的一大業餘愛好,我漸漸習慣了用ImageMagick來做圖片處理,用FFmpeg來轉換視訊,用Wget來做網路下載。這些基於命令列的應用軟體,再搭配bash的批處理功能,往往能實現強大的複合功能。

我也越來越享受Linux系統提供的程式設計環境。在寫C語言和Fortran語言作業時,我就開始用vim編寫自己的作業,用GCC和GFortran來編譯,再用GDB來除錯。這個過程要比Windows下的IDE麻煩。但當接觸其他語言時,相同的工具可以複用,不用每一次都花費大量時間來熟悉全新的IDE。後來在Linux下學習Python語言時,很容易就可以上手。如果說程式設計是去遊樂園,那麼Linux為入園玩耍提供了直通車。想起小時候為編譯環境苦惱的自己,真想穿越時光送去一張Ubuntu的安裝盤。

我覺得對於一個電腦愛好者來說,Linux最美的地方就是開放。Linux的開放可以分為多個層面。軟體層面是開放的,使用者可以免費使用。文件也是開放的,你可以在終端下用man命令方便地查詢。作業系統是開放的,你可以自由地調整系統,也可以深入瞭解其原理。程式碼上亦是開放的,你隨時可以看到世界上頂級程式設計師寫下的原始碼。在Linux系統下,“實現”和“如何實現”是合二為一的。吃魚的同時,釣魚的本事也可以學到。因此,Linux提供了一個絕佳的學習平臺。

後來,太太送給我一部樹莓派做生日禮物。我驚喜地發現,樹莓派使用的作業系統正是Linux。更棒的是,樹莓派的底層硬體也很開放。它可以方便地通過有線或無線的方式和硬體外設進行連線。它對使用方式沒有太多限制。於是,在後來的智慧硬體創業專案,我總是在研發版本中使用樹莓派。無論是作為硬體的樹莓派,還是作為軟體的Linux,都遵循了相同的規律:開放戰勝了封閉。知識的共享帶來更加活躍的創造力,也給社會帶來協同合作的機會。

幾年前,我讀到印度的一個公益專案。這個專案募集舊電腦,在電腦上安裝Linux系統,再發放給貧困地區的兒童使用。這個專案給孩子們帶來的不止是歡樂,還改變了他們的命運。當樹莓派發布的新聞出來時,我想到的就是這款微型電腦的社會意義。後來讀到樹莓派之父厄普頓發明這臺小電腦的初衷,果然也是教育。我由此確信,有很多人和我抱著相同的見解。

如今,“科技取代人類”的言論甚囂塵上,很多人對技術霸權頂禮膜拜,對人類的未來充滿絕望。其實,科技本身是中性的。科技可以取代人們的工作,也可以幫助人們更好地就業。像樹莓派和Linux這樣的技術,尊重了使用者本身的創造力。它們用一種開放協作的態度,提高了社會的溫度。我也一直抱著這樣的理念,堅持在部落格上分享自己的所知。我還記得自己在探索計算機時無路可循的尷尬。即使是出於簡單的同理心,我也希望自己的分享能幫助任何一個在門檻上抓耳撓腮的學習者。

藉著這股心勁,我克服了寫作的羞澀,投入到這本書的寫作中。我希望這本書能以樹莓派硬體為平臺,全面講解Linux原理。全靠昕梓的通力合作,我才能順利完成這個野心勃勃的目標。杜鵑、陳思為幫我審讀了全書,提出大量的修改意見,讓書稿變得真正可讀。安娜會在關鍵的時候給我們提供任何所需的幫助,全程引導了寫作過程。最後,這本書還要感謝上海的地鐵11號線。全靠這班地鐵上的空座位,我才能坐著寫出大部分文字。

在設計本書內容時,昕梓和我決定尊重讀者,不避諱艱深的內容。畢竟,樹莓派本身只是一個入口。這個入口的背後有著豐富的作業系統知識。無論是程式設計,還是深入理解計算機,一定深度的作業系統知識都不可或缺。我們會從樹莓派的基本使用講起,一直深入到作業系統原理本身。在後面一部分,我還加入了基於樹莓派的實踐專案,希望能拋磚引玉,激發使用者的創造力。當然,篇幅所限,我也不得不捨棄一些細節。但我相信,只要體驗到邊玩邊學電腦的樂趣,那麼其他技術的掌握也都可以沿著相同的軌跡重複進行。

那樣的話,這本書就沒有遺憾了。