程式設計實踐(評註版) 評註者序
程式設計實踐(評註版) 評註者序
評註者序
程式設計師的一生(武林大俠的人生貌似也是如此)往往都是在激情和 迷惘兩種狀態之間來回切換。當我們接觸到一些新的東西(新的程式設計語 言、新的語法特性、新的協議工具,等等)時,就會急切地想去了解它、 掌握它,會坐在心愛的計算機前,廢寢忘食、夜以繼日地反覆實踐。可是 當我們的實踐達到一定的程度時,往往又會陷入另外一種狀態——覺得很 迷惘。一方面感覺自己學習的那點程式設計技巧已經足夠,足以應付一些實際 的專案。但另一方面又會在實戰過程中隱隱地感覺到有些問題存在:程式碼 寫得總是有點醜陋、執行效率總是比想象中的要慢一些、和其他程式模組 互動起來總是存在著一些彆扭、一些莫名其妙的錯誤總是會在一些不恰 當的時候出現,你無法自信地告訴使用者你的程式真的很棒,如果將它從 Windows下移植到Linux下,你甚至不知道會有什麼問題……你明明意識到 了這些問題,卻苦於無法去改進,教科書中的每一句話早已爛熟於心,卻 絲毫找不到問題的答案,和程式設計師前輩討論的時候,也只會得到一些只言 片語,總不 能找到一套系統的修煉之道——針對這種情況,你要做的就是 尋找一些能針對實際問題對症下藥的讀本,而The Practice of Programming 就是這樣的一本書。
The Practice of Programming 由Kernighan和Pike編著,成書於上個世紀
(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 在程式設計世界中就具有不同的含義。有些詞彙一旦做了翻 譯,如object、list、map、foreach等,反倒會讓國內讀者感受到莫名的障 礙,程式設計師彼此交流時,有的時候就乾脆直接採用英文說法。再如一些 縮寫,如CSV格式,它來源於Comma-Separated Values(“以逗號分隔的 值”),原義極其樸素,但縮寫成CSV就顯得太過高深。同樣的例子還有 internationalization和localization,它們常被縮寫成I18N和L10N,如果拋開英文原詞,就會多一些神秘感。再如:“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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重構:改善既有程式碼的設計(評註版) 評註者序
- Effective C++:改善程式與設計的55個具體做法:第3版 評註者序C++
- 體面編碼之程式碼註釋評論
- 工作滿意度評估程式設計師版程式設計師
- bash程式設計 註釋程式設計
- Spring 註解程式設計之模式註解Spring程式設計模式
- 使用者註冊/登入模組實踐
- 簡評《實用Common Lisp程式設計》Lisp程式設計
- 《實用Common Lisp程式設計》書評Lisp程式設計
- flask實踐之“盜版豆瓣評分小程式 完整版”Flask
- 好程式設計師教程分享Java註解和運用註解程式設計程式設計師Java
- 學程式設計,註定孤獨程式設計
- 差異程式設計師-評《程式設計感悟》程式設計師
- 資深程式設計師點評某些對Lotus Domin的不實評論程式設計師
- Spring 註解動態資料來源設計實踐Spring
- 使用者評論程式碼實現
- java程式設計思想之註解Java程式設計
- 評書:《美團機器學習實踐》機器學習
- 《程式設計師健康指南》書評程式設計師
- 學習"大眾點評網的架構設計與實踐"架構
- 重走JAVA程式設計之路(二)註解Java程式設計
- 第145篇:js設計模式註冊模式及相應實踐JS設計模式
- 讓程式設計的熱情感染你--《實用Common Lisp程式設計》書評程式設計Lisp
- 使用者登陸註冊【JDBC版】JDBC
- 【翻譯】編寫程式碼註釋的最佳實踐
- [轉載]資深程式設計師點評當前某些對Lotus Domino 的不實評論程式設計師
- mvc架構的簡單實踐----使用者註冊的實現MVC架構
- AI助力-58恆星資料標註平臺的設計與實踐AI
- 【外刊IT評論】Web程式設計是函數語言程式設計Web程式設計函數
- 好書妙評之《Erlang/OTP併發程式設計實戰》程式設計
- 名家點評之《編譯器設計(第2版)》編譯
- 《程式設計之道》譯者序(轉載) (轉)程式設計
- 程式設計師是否有義務做好程式碼的註釋?你做好程式碼註釋了嗎?程式設計師
- 《供應鏈管理:一個實踐者的角度》推薦書評
- Google C++ 程式設計風格指南:註釋GoC++程式設計
- 中介者設計模式——業務實踐設計模式
- 設計模式實踐--觀察者模式設計模式
- Go程式設計實踐Go程式設計