C/C++程序员必读的十本书(上)
在Gmail TopLanguage ?Group 中看到一篇文章“C/C++程序員必讀的十本書(上)”,大家的討論都很激勵,大家都覺得這篇文章寫得很棒,我想在Group里的朋友都能在Lookgirl的這篇文章里獲益不少,為此斗膽在此轉載該文,供更多朋友交流、學習。
?
C/C++程序員必讀的十本書(上)
?
這個題目大的有些離譜,實話說,只是想推薦一下自己覺得很好、值得收藏的一些技術方面的圖書。如果不是程序員,或者關心的方向是網頁開發、數據庫開發,或者只是想了解一下開發流程,這些書不都是適合你,但也很值得收藏了。
這篇文字的針對目標是,微軟平臺下的c/c++程序員,學過計算機基礎學科,有一定的英語閱讀能力。建議購買的順序也是從上至下。
(1)建議大家閱讀的第一本書是《編碼的奧秘》(英文名《code》)(本書由機械工業出版社華章公司出版),這本書中文版應該已經絕版了,但好像有英文影印版。這本書沒有講該如何編程,如何寫一個hello world。它深入淺出的介紹了計算機是如何組成的,比如二進制,比如邏輯門電路的實現,都是很淺顯的??戳诉@本書,會對計算機有個知其所以然的了解,也就是機器如何實現的一加一等于二,如何能執行程序?!毒幋a的奧秘》是計算機專業或者是初中高中對計算機感興趣學生,應該一上學就讀的一本書。
(2)第二本也是建議大家看到了立刻買下來,保證物有所值,就是《程序設計實踐》(英文名The Practice of Programming)(本書由機械工業出版社華章公司出版)。有了這本書,基本上《代碼大全》、《程序員修煉之道》這幾本后面推薦的書可以不買了,因為精華基本上都濃縮到這本書里面,當然,不同的作者寫出來的還是不一樣,如果有錢,還是都買了最好?!冻绦蛟O計實踐》的兩位作者Brian W.Kernigham / Rob Pike,在計算機領域,就是大師級的人物,高山仰止,寫出如此通俗易懂的計算機工程實踐書,讓我還能說什么仰慕的話啊。你不知道他們是誰?去搜wiki 吧。里面每一章節都非常經典,甚至每章后面推薦延伸閱讀的書籍,都是經典中的經典。一定要慢慢讀反復讀,如果這本書看完了以后,基本上就是一個計算機中級編程水平了。
?
(3)第三本書比較難選擇一些,還是推薦這本好了《C程序設計語言,第2版》,也就是傳說中的K&R,如果你是一個計算機專業的學生,還沒有這本書,那你在學校里學了什么就很值得懷疑。這本書272頁,每頁都很經典,基本上你碰到的所有c語言問題在這本薄薄的小書里都有涉及,但是限于篇幅,有些會簡單帶過。里面代碼例子不多,但還是包含了一個相當完整的語法分析器程序。不多說了,如果沒有這本書,趕快去買吧。
?
(4)現在大部分企業使用的是c++而不是c(比如google),除非是嵌入式或者操作系統內核級的程序,c++的性能與強大語法基本上可以滿足各方面的需求,c++的入門書很多,選擇也比較容易,推薦大家買奧萊理O‘Reilly的或者是c和c++經典著作這個系列的。第四本要推薦的不是c++編程方面的,而是一般類似于八卦c++歷史的書《c++語言的設計與演化》,豆瓣鏈接http://www.douban.com/subject?/1096216/。編程工作其實就是一個在不同的方案中進行選擇權衡的一個過程,是該選擇vector還是list,是該使用多線程還是多進程,是該使用xmlrpc還是dcom,是使用數據庫還是注冊表,有心的人會研究不同選擇背后的深層技術問題,有些人基本上就是一套方案打天下。這本書就介紹了c++之父設計c++語言時選擇的一些考量,為什么不用GC,為什么沒有這個那個特性,為何不內置某某keyword。在我看來,這些考量的過程,對于一個編程人員來說要比如何使用c++更有價值。
(5)我選擇了《unix編程藝術》,它擊敗了《代碼大全》《c專家編程》等諸多經典占據了這個位置,主要也是占了unix操作系統的光。豆瓣鏈接http://www.douban.com/subject/1467587/。之所以選擇這本書,是因為對于一個windows平臺上的程序員來說,盡量開闊眼界是非常必須的事情。我們經常說混血或者說雜交會讓基因更加優秀,編程也是如此,windows平臺的程序員,如果只懂mfc,只會注冊表保存配置,只知道COM或者DotNet,是一件非常悲哀的事情,用成語來說就是井底之蛙坐井觀天,只認為天就是這么大一片,編程就應該用這些東西。
?? ? ?unix操作系統雖然不像windows占據了桌面平臺,但是在其他方面,使用非常廣泛,比如蘋果的mac osx系統,比如sun的solaris,比如繼承了unix精神的linux。尤其在當今桌面系統網絡化的潮流下,unix系統天生的網絡特性、多用戶管理特性、安全特性,更是體現了超越時代的杰出思想。讀一讀這本書,體驗一下不同的設計理念和不同的操作系統哲學,對于日常的編程工作都有非常大的幫助。 Windows程序員尤其要學習的是:unix系統上script的使用,使用純文本作為數據格式,使用管道,最最重要的一點就是,Keep it simple and?stupid,一個程序只做一件事,只需要把這件事做到完美。這與windows的大而全思想有著本質上的不同。
總結
以上是生活随笔為你收集整理的C/C++程序员必读的十本书(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不出意外今年高考又出现了这些意外:考生忘
- 下一篇: 设计模式C++实现 ——状态模式