作者:catch2000 忘了名字的書, 《C語言程序設計》(老譚版) 《高質量程序設計》 《C陷阱與缺陷》 《C專家編程》 《程序員成長計劃》 《UNIX環境高級編程》 《深入理解計算機系統》 《代碼大全》 《編程精粹》 《重構》(在讀) 按照自己的閱讀順序羅列了以上書籍,基本都全部看完的(重構是正在看,已經看了三分之一)。 第零本,忘記名字的書,當時就是按照書中的代碼,敲到VC中,看執行結果。這樣做了兩個多月(下晚自習后去,大一強制自習)。雖然現在看,當時這樣做效率很低。有時候敲代碼都會敲錯,但這個過程教會了自己如何敲程序,如何找到程序中的錯誤。同時提高了自己敲代碼的速度。 第一本《C語言程序設計》(老譚版)是自己當時為了準備考二級時,看的。后來上C語言課時,也對應學校的教材一起翻翻。對于這本書,應該說就是入門的。據說這個上邊,關于一些東西講的有些問題,但是沒有去求證過,不得而知。 第二本書是《高質量程序設計》(林銳博士),據說這本書最后的附錄中的測試題,有可能出現在應屆生的招聘筆試題中,這個可以確認。當時自己畢業時,參加的一個筆試中,就有從哪些題中選出來的,幾乎沒有變動。這本書,讓自己知道了C還有哪些入門后不知道的東西,印象深的是,變量命名,以及預編譯,程序優化等一些技巧。由于這本書是講c/C++,所以只看了一部分,關于c++部分沒有看。 這兩本書,都已經送人。 第三本是《C陷阱與缺陷》,閱讀時對里邊很多地方印象很深,對自己以后程序設計,起到了一些潛移默化的作用。一本薄薄的100多頁的書,不到兩天就讀完了,后來也陸陸續續回頭看過一些。 第四本是《C專家編程》,這本書第一次沒怎么看懂,,懵懵懂懂。應該說是第一次看的時候,找不出問題。不知道自己哪里不了解,需要了解哪里。以至于就泛泛看看。后來看了《深入理解計算機系統》,又回頭將里邊關于函數調用,連接等看了看,發現有理解了很多。后來在實際工作中,遇到指針與數組訪問時間的困惑,以及指針數組的異同,又在這本書中找到了答案。這本書,適合通讀一邊后,有困惑的時候回頭看看。每一次都會有不一樣的收獲。 第五本是《程序員成長計劃》,在自己剛開始實習的時候通過這本書了解了,Linux下編程的一些知識。對于初入編程的人,有很大的幫助。能教會我們很多平時想不到的用法。能夠從應用的角度,理解C的編程思想。這里邊了解C的回調函數,函數指針,隔離變化,以及使用面向對象的思想編寫C程序,介紹了makefile的一些基礎東西。講的都挺實用的。 第六本是《UNIX環境高級編程》,在看完《程序員成長計劃》后,發現對于Linux編程環境還不是很了解,于是看是看這本書。這本書讓自己了解到,C程序在類UNIX環境中,執行的過程。從最初加載code到memory,到C程序的內存分布,code,bss,data,以及庫在內存中的放置的位置,解決了很長時間困擾的問題。同時了解了很多在UNIX下的系統調用,了解了多線程以及使用。還有就是關于一些標準,對于Linux下編程感覺有必要了解下。 第七本書是《深入理解計算機系統》,這本書讓自己對于計算機系統有一個頓悟式的理解。解決了很多以前長期困擾的問題:為什么需要cache;內存溢出為什么可能會導致程序崩潰;函數是如何調用的;malloc了一塊內存,在系統是如何保存大小,以及釋放時怎么獲取大小;為什么需要多核;如何優化多線程下的代碼。如果是用C,如果要理解計算機系統組成,這本書是很值得推薦的。 第八本書《代碼大全》,這本書是讓我們從一個代碼寫給自己看的成長為一個代碼寫給大家看的一本書。這本書,以程序構建為主線,實現可讀性,降低程序復雜度為目標。展示了如何寫出易讀代碼 ,如何降低復雜度,以讓別人更容易閱讀,理解,與維護我們的代碼。對于步入工作,或者提高程序規范性而言這個本書,是首選。讓我們從一個門外漢的角度,看一些專業的編程者,是如何進行他們的工作的。這本書更優秀的一點是,它推薦了很多書,通過閱讀這本書,我們就會知道接下來我們將要看什么書。 第九本書是《編程精粹》,這本書就是通過《代碼大全》的推薦發現的。有人稱這本書是“被遺忘的珍珠”。這本書,確實是一本能夠幫助我們提高編程質量的書。借助于作者在Mircosoft時office系列的工作,總結了如何編寫高質量程序的經驗。很多總結都是很實用的,避免了我們自己再去通過無數的實踐去總結,也就變相的幫助了我們節省了很多成本(時間,精力,還有心情)。 第十本是《重構》,這本書也是《代碼大全》推薦的。對于這本書,在編程階段的優勢還沒有感觸很深,但是對于維護代碼已經是獲益匪淺。通過書中的一些方法,將程序變得更易閱讀更易理解,也更易于維護。書中的一些總結,也能幫助我們在編程過程中,逐步改變代碼質量。 由于自己是電子方面專業,對于計算機一些書的了解是通過同學介紹的,在初期想看關于C更深入的書,但是無從得知。在網上能找到的就是《C陷阱與缺陷》,《C專家編程》,《C和指針》當時似乎沒有加C的就不是應該看得。 因此,錯過了《深入理解計算機系統》,錯過了《代碼大全》,兩本十分優秀的書。直到工作中,才慢慢體會到他們的益出。這兩本書,讓我明白了什么是程序,如何寫程序,深入語言編程,而不是在語言上編程。 從以上羅列的書籍中,發現自己更多的是對于C的工程應用,并沒有深入很多人說的算法內容,這里之所以沒有提到關于算法的書,因為對于自己專業就有很多理論的東西去琢磨。對于C會先考慮應用與專業的結合。 《代碼大全》定義的專業程序員: 第一級:入門級,入門者會利用某語言的基本功能,編寫類,子程序,循環和條件語句,會使用語言的許多特性。 第二級:中級,中級的程序員已經度過入門期,能利用多種語言的基本功能,并會得心應手地使用至少一種語言。 第三級:熟練級,熟練級的程序員對語言或環境有著專業技能。 第四級:技術帶頭人,技術帶頭人具有第三級的專業才學,并明白編程工作中只有15%用來和計算機交互,其余都是與人打交道的。 當然每一個人,都有自己的成長環境,總會有當時的理解與不理解。在學習中沒有彎路與捷徑,只有收獲的多少。這個過程是一個學會學習的過程。在以后的學習中,也會獲益更多。 |