程式設計實踐(評註版) 評註者序

broadviewbj發表於2011-07-22

程式設計實踐(評註版) 評註者序

評註者序

程式設計師的一生(武林大俠的人生貌似也是如此)往往都是在激情和 迷惘兩種狀態之間來回切換。當我們接觸到一些新的東西(新的程式設計語 言、新的語法特性、新的協議工具,等等)時,就會急切地想去了解它、 掌握它,會坐在心愛的計算機前,廢寢忘食、夜以繼日地反覆實踐。可是 當我們的實踐達到一定的程度時,往往又會陷入另外一種狀態——覺得很 迷惘。一方面感覺自己學習的那點程式設計技巧已經足夠,足以應付一些實際 的專案。但另一方面又會在實戰過程中隱隱地感覺到有些問題存在:程式碼 寫得總是有點醜陋、執行效率總是比想象中的要慢一些、和其他程式模組 互動起來總是存在著一些彆扭、一些莫名其妙的錯誤總是會在一些不恰 當的時候出現,你無法自信地告訴使用者你的程式真的很棒,如果將它從 Windows下移植到Linux下,你甚至不知道會有什麼問題……你明明意識到 了這些問題,卻苦於無法去改進,教科書中的每一句話早已爛熟於心,卻 絲毫找不到問題的答案,和程式設計師前輩討論的時候,也只會得到一些只言 片語,總不 能找到一套系統的修煉之道——針對這種情況,你要做的就是 尋找一些能針對實際問題對症下藥的讀本,而The Practice of Programming 就是這樣的一本書。

The Practice of Programming KernighanPike編著,成書於上個世紀

1999年)。年代看似有些久遠,但該書討論的是一些很難過時的話題, 就像我們今天還在討論2000多年前孔孟之道孫子兵法一樣,12 年後的今天,我們再次讀起The Practice of Programming ,仍沒有感覺到一 絲腐朽的氣味。從內容上看,該書幾乎囊括了程式設計師深有感觸的各種問題,對於很多彷徨的程式設計師來說,這絕對是一貼切中要害的良藥。全書主 要採用C++/Java作為範例語言,但絲毫不影響其他語言的愛好者以此作為 升級讀本。

全書分成9章,分別是:

Chapter 1: Style(風格)

指導你如何寫出優雅的程式碼,而不是亂寫一氣。

Chapter 2: Algorithms and Data Structures(演算法與資料結構) 總結一下各種基本的演算法和資料結構。

Chapter 3: Design and Implementation(設計與實現) 緊接第2章,用5種不同的語言討論具體的程式實現。

Chapter 4: Interfaces(介面) 展示了使用者和程式之間、程式模組之間應有的介面設計。

Chapter 5: Debugging(除錯) 系統地討論了除錯的各種策略和技巧。

Chapter 6: Testing(測試) 指導如何手動地、自動地進行程式的測試,以保證程式能正常工作。

Chapter 7: Performance(效能) 循序漸進,演示如何透過不斷的重構最佳化程式的效能。

Chapter 8: Portability(可移植性) 討論提高程式的可移植性所關注的地方和可用的技巧。

Chapter 9: Notation(記法) 討論如何採用一些有用的記法簡化程式,將資料和邏輯用合適的記法表達出來。

切表達計算機世界的概念,如同樣是註解註釋comment a n n o t a t i o n 在程式設計世界中就具有不同的含義。有些詞彙一旦做了翻 譯,如objectlistmapforeach等,反倒會讓國內讀者感受到莫名的障 礙,程式設計師彼此交流時,有的時候就乾脆直接採用英文說法。再如一些 縮寫,如CSV格式,它來源於Comma-Separated Values以逗號分隔的 ),原義極其樸素,但縮寫成CSV就顯得太過高深。同樣的例子還有 internationalizationlocalization,它們常被縮寫成I18NL10N,如果拋開英文原詞,就會多一些神秘感。再如:“Abort, Retry, Fail?”這是作業系統 中常常列印出來的一句原話,如果再翻譯成中文,就失去了原有上下文的 意味。閱讀英文原版的另外一個好處,還在於當我們看到memset()函式時 就會聯想到memory set,看到strcpy()函式時就會聯想到string copy

The Practice of Programming 用語淺顯易懂,深入淺出,但由於文化的 差異,在為避免讀者理解上的困難,有些地方我們在保留原汁原味的同 時,還增加了一些本地化的註解。註解的比例大概為20%左右,透過附上 些親切的中文用以強調、擴充套件作者提出的某些概念和觀點,以避免讀者迷 失在英文詞句的汪洋大海中,一去不復返。

在評註過程中,由於學識有限,為避免一面之辭,評註者大量參考了

C++ ISO標準、網際網路資料與國內的一些計算機教材,也包括裘宗燕老師

2007年針對The Practice of Programming 的譯本,力求在術語使用和觀點解 釋上,不會給國內程式設計師造成任何誤解。最後感謝電子工業出版社的張春

雨先生及其他同事,是你們的辛勤勞動促成了這本評註版得以與廣大程式 員見面。

正如作者所強調的,程式設計並沒有編碼那麼簡單,它是一項高技巧 的腦力勞動。悲慘的是,程式設計被很多的人演繹成、也被更多的人曲解成毫無技巧樂趣可言的體力勞動!我們看到千千萬萬的準程式 ,進入某個軟體工廠,僅僅透過幾個月的培訓,就被製造成能夠 的程式設計師,在這裡,他們被灌輸的僅僅是規則的遵守和他人程式碼的機 械模仿,留給他們的思考和設計的空間極其有限。失去了思維的權利的程 序員,在隨後的人生中不得不在各種各樣的崗位上按照他人的意願做著一 次又一次的重複的機械式的工作,很多的程式設計師也因為興趣問題放棄了程 序設計,轉向其他的職業生涯。殊不知,程式設計的世界是其樂無窮的, 是無止境的,它需要永久的激情 和持續的實踐積累。評註者真心期望讀者 朋友們能從閱讀本書的過程中得到收穫,得到心靈上的昇華。唯有那些有 思想的程式設計師,方能寫出有靈魂的程式碼。

 

 

 

2011.4 北京

 

 

 

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

相關文章