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