《30天自制作業系統》譯者序(偽)

周自恆發表於2012-08-15

《30天自制作業系統》中文版終於和國內讀者見面了,作為本書的4位譯者之一,我負責翻譯了本書約三分之二的內容。這是我參與翻譯的第一本譯著,感到激動之餘也頗為緊張,因為我知道譯者的水平對於一本譯著質量的重要性——好的翻譯可以成就一部作品,蹩腳的翻譯也可以毀掉一部作品——正如當初引來無數臭雞蛋的第一版《賈伯斯傳》中譯本一樣。

這本書的標題一出,立刻引起了很多反響。一些讀者表示,以前看過類似“21天學會C語言”之類的書,感到很坑爹,因此對這類形如“XX天”標題的書往往懷有戒心,認為這多半隻是噱頭,很不靠譜。說實話,我沒有看過其他以XX天命名的書,不過我也大概能理解這些讀者的感受。在我看來,這本書的標題並不僅僅是一個噱頭。類比一下,“30天學會核物理”可能看起來很“假大空”,因為你沒辦法定義“學會”這個概念的邊界。怎樣算學會呢?每個讀者會有各自不同的理解,因此往往有的人對結果表示滿意,而另外一些人則正好相反。如果說“30天自制微型反應堆”又怎麼樣呢?雖然你可能還是覺得太難了,但至少這個標題能給你一個具體的目標,30天之後能做出一個反應堆來,不管它多麼簡陋,一定具備一個反應堆的關鍵性質。我認為這本書正是屬於後者,不管這個作業系統多簡單,它是一個真正意義上的作業系統——更何況它還真不那麼簡單。正如封面上所說的,這個系統雖然很小,但卻能實現圖形介面、多工等高階功能,這些都是實實在在的,跟著作者的思路和腳步,保證人人都做得出來的——即便你只是抄抄程式碼。

這本書的定位是零基礎的讀者,作者甚至找了初中生和高中生志願者來試讀這本書,以保證這本書的語言儘可能通俗易懂,可想而知作者把這本書的閱讀門檻設定得有多麼低。書中的語言風格非常輕鬆幽默,作為譯者,我很喜歡這樣的風格,因為可以把很多好玩的口語或者網路用語代入進去,讓大家看起來更有意思,翻譯起來也驚喜連連。從技術角度來看,這本書並沒有過多地解釋技術細節,作者認為對某些細節先有一個大概的認識就行,然後通過實踐再加深理解,編寫作業系統這件事的最終目的還是為了有趣、好玩,技術細節講得太多自然就不好玩了。因此,想從這本書系統學習計算機原理、組合語言、C語言等知識是不現實的,但通過編寫作業系統這個過程,你一定能夠獲得與系統學習這些知識完全不同的寶貴體驗。

這本書的一大特色是“從失敗中學習”,每一次我們為這個作業系統實現一些功能,一開始總是不順利的,裡面會有一些漏洞和缺陷,甚至根本不能工作。這些漏洞應該說都是作者刻意安排的(或者是作者以前開發OSASK系統時所親身經歷過的),作者花了很大篇幅來引導讀者去尋找並發現這些漏洞,並從這些錯誤中學習如何想方設法讓系統變得更加完善。我認為這種思路是非常有趣的,也是符合實際開發的過程的,一個東西怎麼可能一下子就做得那麼完美呢?用作者的意思來說,先體驗了不完美的東西再努力去改進它,才能讓你更有成就感呀!市面上的技術類書籍,大部分都沒有這種“試錯”的過程,主要是因為“試錯”本身需要精心的安排,而且需要佔用大量的篇幅。我認為這本書所採用的寫作手法是非常難得的,也是我認為值得向大家推薦這本書的主要理由之一。

如果你是一位高手,或者在編寫作業系統方面有所造詣的讀者,你可能會覺得這本書的講解並不是那麼系統和有條理。的確,這本書並沒有對每一個技術細節進行詳細地講解,就連組合語言和C語言的語法也只是避重就輕地介紹,你甚至覺得這個作業系統在很多方面處理都很簡陋(比如檔案系統、記憶體管理、裝置驅動等等),根本算不上一個實用的作業系統,甚至連作者自己都說:“這本書無論在哪個方面都只有半瓶醋。”不過我們必須注意到,作者是在帶領大家從零開始編寫一個作業系統,而並不是用一個現成的Linux等核心為基礎來做,後者也許才是目前所謂自制(定製?)作業系統的主流方式,但是這樣真的能讓你瞭解系統底層的真正機制嗎?我看未必,一個Linux核心已經幫你搞定大部分底層工作了,你大可以把核心看作一個黑箱,只要往上面連線各種模組就OK了。只有從零開始,才能真正瞭解系統底層是如何運作的,而這些知識,對於你以後在其他核心基礎上製作作業系統來說,也一定是非常有幫助的。如果你看了這本書覺得很坑爹,千萬別忘了看一看最後一章中一個叫做“這也能叫自制作業系統?太坑爹了!”的專欄,作者早就預料到了大家的各種吐槽,在終點等著你們呢!(笑)看了這個專欄,你就會明白作者在有限的篇幅中,是如何謀劃佈局和取捨內容的,真心不容易,贊一個。

可能大家從目錄上面也發現了,這本書涉及到了“日文顯示”的相關知識。在這個部分如何翻譯的問題上,我和出版社討論了很多次,由於作業系統的編寫都是在底層動刀子,可以說是牽一髮而動全身,我不想在這裡破壞原書的結構,也不想擅自改動原來的程式碼,因此,在原汁原味保留原書文字的基礎上,我補充了一些實現中文顯示的相關內容,以體現日文顯示和中文顯示在實現上的異同。好在基本上只要替換字型檔和編碼方式,就可以實現中文顯示,甚至比日文實現起來還簡單些(比如不用考慮不同的編碼標準和半形片假名問題)。這部分補充的內容是我自己寫的,但我在這方面也不是專家,不敢班門弄斧,補充的內容篇幅也並不多,如果有錯誤或者疏漏,也歡迎各位高手隨時拍磚。

在這本書最後的編輯過程中,為了確認某些術語的譯法,我還和作者川合秀實先生通過幾封郵件(這說明作者在書裡給大家留的那個郵箱地址是保證可用的喲!),川合先生是個很認真很友好的人,他不像Matz(松本行弘)那樣在技術界鼎鼎有名,只能算是一個普通的技術者吧,因此能夠寫出這樣一本好書,實在是非常難得的。最後也感謝其他3位譯者,以及圖靈公司的各位編輯的共同努力,使得這本書能夠和中國的讀者見面,希望大家都能從中獲益。

周自恆 2012年8月 上海

相關文章