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