《Head First C 中文版》審讀筆記(五)

黃志斌發表於2013-05-18

Head First 叢書得到讀者的廣泛讚譽,李鬆峰老師也有文章介紹:

《Head First C 中文版》是一本非常好的書,正如程亦超老師在譯者序中說的:

本書最大的特點是每次在引出新概念前都會先提出一個問題,讓讀者知道怎樣做(how)之前先知道為什麼這麼做(why),並在解決問題的過程中不斷提出新問題,讓讀者去解決,從而加深理解;書中還設有很多 Q&A 環節,提出並回答了一些讀者在學習過程中可能遇到的問題;作者還使用了大量擬人手法,例如讓編譯器化身公眾人物在訪談節目中現身說法,抑或讓靜態庫和動態庫對簿公堂。談笑風生之間,這些抽象的概念一個個活靈活現,躍然紙上。無論你是音樂發燒友、推理迷,還是填字遊戲愛好者,都可以在這本書中找到吸引你的元素。

……

我在翻譯的過程中力求真實傳達作者的意圖,無論是一個技術上的概念,還是一段幽默。為了減輕閱讀壓力,我還將書中部分程式碼中的字串也譯為中文,希望不是畫蛇添足。

的確,程亦超老師的翻譯非常給力,準確真實地傳達了作者的意圖。試舉幾例:

第4章 使用多個原始檔:分而治之第 199 頁中談到 make 工具時:

199

這個“藝名”用得好,把 make 在不同作業系統中有不同的名稱準確傳神地表達出來了。

第3章 建立小工具:做一件事並把它做好第 117 頁:

117

這是使用錯誤資料作輸入時執行程式的場景,沒有達到預想的目的。後面就順理成章地推出了標準錯誤(stderr)。

第5章 結構、聯合與位欄位:建立自己的結構第 237 頁:

237

這是一個修改結構中的某個欄位的程式,也沒有得到預期的結果。就此講解了C 語言中引數是按值傳遞給函式的,由此引入了結構指標。

第10章 程式間通訊:溝通的藝術第437頁:

437

這個多程式程式沒有產生預想中的資料,使用“透明的”解釋"TMD"很巧妙,好象想要的資料是透明的,我們看不到。由此引入程式間通訊的標準做法:重定向輸入、輸出,然後讓程式相互等待。

第11章 網路與套接字:金窩,銀窩,不如 127.0.0.1 的草窩第 476 頁:

476

這裡的客戶端程式沒有得到伺服器程式的響應,把 TMD? 解釋為“它沒答?”非常貼切。下一個小節的標題就是“媽媽說要檢查錯誤”,由此說明“一定要檢查系統呼叫的錯誤”。

第12章 執行緒:平行世界第 511 頁:

511

這裡的多執行緒程式執行出現了錯誤,由此講解了執行緒間同步。相關內容也可參見:《Head First C 中文版》審讀筆記(三)。美中不足的是,這裡的“甜蜜的”和第 237 頁的重複了,最好能另外想一個解釋。

譯者序中提到:

為了減輕閱讀壓力,我還將書中部分程式碼中的字串也譯為中文,希望不是畫蛇添足。

這當然不是畫蛇添足,而是非常有必要的。但是還做得不夠好,書中有些程式碼中的字串已經譯為中文了,但相應的程式執行結果的螢幕截圖還是英文的,對不上號。而有個別程式執行結果的螢幕截圖中輸出的是中文,但書中的源程式中的字串還是英文,也對不上號。這些我都已經在審讀意見中提出了,希望本書正式出版時能夠修正這些缺點。此外,還有不少程式程式碼中的字串也應該譯為中文,但沒有翻譯。空軍在審讀時指出了不少這方面的問題。

相關文章