出版時(shí)間:2010-04 出版社:人民郵電出版社 作者:李先靜 頁數(shù):272 字?jǐn)?shù):413000
Tag標(biāo)簽:無
前言
在經(jīng)歷過幾個(gè)大型的、失敗的項(xiàng)目之后,我終于認(rèn)識(shí)到了:沒有什么比高素質(zhì)的程序員更能決定項(xiàng)目的成功。無論采用什么開發(fā)過程,什么編程語言和開發(fā)工具,離開了高素質(zhì)的程序員,都是白費(fèi)力氣。毫無疑問,人是軟件開發(fā)中最重要的因素。但并非每個(gè)人都重要,也不是什么樣的人都重要,在軟件開發(fā)中,只有那些高素質(zhì)的程序員和那些對(duì)項(xiàng)目有突出貢獻(xiàn)的人才是重要的。不過高素質(zhì)的程序員并不多見,所以從我開始帶人起,就一直在思考團(tuán)隊(duì)成員培養(yǎng)的問題。我做過很多嘗試,從小組內(nèi)學(xué)習(xí)到整個(gè)部門一起上大課,最后又回到對(duì)個(gè)人做單獨(dú)的輔導(dǎo);從通過Code Review(代碼評(píng)審)做現(xiàn)場(chǎng)教育到制定一個(gè)宏偉的培訓(xùn)計(jì)劃,最后又回到一個(gè)樸素的培訓(xùn)過程。其中遇到了很多問題,開始是培訓(xùn)不夠系統(tǒng),效果不甚理想,后來又因?yàn)橛?jì)劃過于“宏偉”而無法實(shí)施,等到最后形成一個(gè)樸素的、切實(shí)可行的培訓(xùn)方案,已經(jīng)經(jīng)過了好幾年時(shí)間,直到去年,整個(gè)計(jì)劃才趨于完善。我把這個(gè)培訓(xùn)計(jì)劃稱為系統(tǒng)程序員成長計(jì)劃,而這正是我在本書中所要介紹的。培訓(xùn)內(nèi)容不是來源于某本書,畢業(yè)八年來,我堅(jiān)持不懈地閱讀有關(guān)書籍,所讀過的300多本不同類型的著作裝滿了家中的7個(gè)大儲(chǔ)物箱,而這些著作囊括了大部分經(jīng)典的IT圖書。當(dāng)然培訓(xùn)的內(nèi)容也不是全部源于書本,這幾年我在開發(fā)開源軟件的過程中所收獲的感悟和積累的經(jīng)驗(yàn)也融入其中。我的培訓(xùn)計(jì)劃并不是要闡述什么高深的道理,相反,我這本書主要是針對(duì)應(yīng)屆畢業(yè)生和業(yè)余愛好者寫的,目的就是為了讓初學(xué)者進(jìn)階為一個(gè)專業(yè)的程序員。為什么把這個(gè)培訓(xùn)計(jì)劃叫做“系統(tǒng)程序員成長計(jì)劃”,而不是“程序員成長計(jì)劃”呢?程序員的范圍太廣了,雖然軟件開發(fā)有很多相似之處,但是隔行如隔山,比如對(duì)于目前炙手可熱的Web開發(fā),我完全是外行。為了不造成“想什么都講一點(diǎn),結(jié)果是什么都沒有講清楚”的尷尬,我得把培訓(xùn)計(jì)劃限定在我熟悉的范圍之內(nèi)。而所謂系統(tǒng)程序員,是指從事操作系統(tǒng)內(nèi)核、DBMS、GuI系統(tǒng)、基礎(chǔ)函數(shù)庫、應(yīng)用程序框架、編譯器和虛擬機(jī)等基礎(chǔ)軟件開發(fā)的程序員。
內(nèi)容概要
本書以生動(dòng)的語言和豐富的代碼示例,運(yùn)用一些相對(duì)簡(jiǎn)單的例子分析開發(fā)系統(tǒng)程序中可能遇到的各種問題。作者把數(shù)年的開發(fā)經(jīng)驗(yàn)和閱讀大量書籍的體會(huì),結(jié)合他在培訓(xùn)新員工過程中所積累的培養(yǎng)方法,融會(huì)貫通在這12章的內(nèi)容中。書中介紹了鏈表、數(shù)組、棧、隊(duì)列和散列表等基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),也介紹了并發(fā)、同步和內(nèi)存管理等系統(tǒng)程序中常需注意的問題,還講解了文本處理器等具體應(yīng)用程序的設(shè)計(jì)方法。 本書是初涉系統(tǒng)程序開發(fā)領(lǐng)域的人不可多得的一本參考書。書中體現(xiàn)的思想對(duì)于其他各種軟件開發(fā)人員、相關(guān)專業(yè)的在校學(xué)生以及軟件開發(fā)愛好者都有啟發(fā)意義。
作者簡(jiǎn)介
李先靜,CSDN開源專家,有著十年Linux開發(fā)經(jīng)驗(yàn)、五年手機(jī)開發(fā)經(jīng)驗(yàn)。擅長嵌入式程序員培訓(xùn),軟件架構(gòu)設(shè)計(jì)和技術(shù)寫作。近幾年負(fù)責(zé)Broncho Linux智能手機(jī)項(xiàng)目,致力于基于Linux的嵌入式系統(tǒng)的學(xué)習(xí)和研究。其CSDN博客連續(xù)三年被CSDN提名為最有價(jià)值的技術(shù)博客(MVB),他先后發(fā)表了近500篇技術(shù)類博文,博客文章被各大技術(shù)網(wǎng)站轉(zhuǎn)載。在《程序員》雜志上發(fā)表過多篇文章。
書籍目錄
第0章 背景知識(shí) 0.1 基礎(chǔ)知識(shí) 0.2 開發(fā)環(huán)境第1章 從雙向鏈表學(xué)習(xí)設(shè)計(jì) 1.1 走近專業(yè)程序員 1.2 誰動(dòng)了你的隱私 1.3 Write once, run anywhere(WORA) 1.4 擁抱變化 1.5 Don't Repeat Yourself(DRY) 1.6 你的數(shù)據(jù)放在哪里第2章 寫得又快又好的秘訣 2.1 好與快的關(guān)系 2.2 代碼閱讀法 2.3 避免常見錯(cuò)誤 2.4 自動(dòng)測(cè)試 2.5 Save your work第3章 從動(dòng)態(tài)數(shù)組學(xué)習(xí)設(shè)計(jì) 3.1 動(dòng)態(tài)數(shù)組與雙向鏈表 3.2 排序 3.3 有序數(shù)組的兩個(gè)應(yīng)用第4章 并發(fā)與同步 4.1 并發(fā) 4.2 同步 4.3 嵌套鎖與裝飾模式 4.4 讀寫鎖 4.5 無鎖數(shù)據(jù)結(jié)構(gòu)第5章 組合的威力 5.1 隊(duì)列 5.2 棧 5.3 散列表第6章 算法與容器 6.1 容器 6.2 迭代器 6.3 動(dòng)態(tài)綁定第7章 工程管理 7.1 Hello World 7.2 函數(shù)庫 7.3 應(yīng)用程序第8章 內(nèi)存管理 8.1 共享內(nèi)存 8.2 線程局部存儲(chǔ)(TLS) 8.3 內(nèi)存管理器 8.4 慣用手法 8.5 調(diào)試手段及原理第9章 從計(jì)算機(jī)的角度思考問題 9.1 變參函數(shù)的實(shí)現(xiàn)原理 9.2 誰在call我——backtrace的實(shí)現(xiàn)原理 9.3 Hello World不能不說的十大秘密第10章 文本處理 10.1 狀態(tài)機(jī) 10.2 Builder模式 10.3 管道過濾器模式第11章 分離用戶界面與內(nèi)部實(shí)現(xiàn) 11.1 分層設(shè)計(jì) 11.2 MVC架構(gòu) 11.3 外殼模式第12章 撰寫設(shè)計(jì)文檔附錄 C語言中接口定義的不同形式
章節(jié)摘錄
插圖:假想講給朋友聽據(jù)說在代碼評(píng)審時(shí)發(fā)現(xiàn)錯(cuò)誤的,往往不是評(píng)審的人而是程序員自己。我也有很多這樣的經(jīng)歷,在把自己遇到的情況講給別人聽的時(shí)候,往往是別人還沒有聽明白,自己已經(jīng)發(fā)現(xiàn)里面存在的錯(cuò)誤了。上大學(xué)時(shí),我常常把自己寫的或者學(xué)到的東西講給隔壁寢室的一個(gè)同學(xué)聽,他說他從我這里學(xué)到了很多知識(shí),其實(shí)我從講的過程中,也經(jīng)常會(huì)發(fā)現(xiàn)一些問題,對(duì)提高自己的能力大有幫助??上Р⒉皇请S時(shí)都能找到好的聽眾,幸好我們有另外一個(gè)替代辦法。記得剛開始寫程序時(shí)看過一本書(忘記名字了),作者說他在寫程序時(shí),常常把思路講給他的布娃娃聽。我沒有布娃娃當(dāng)聽眾,總不至于讓我對(duì)著鼠標(biāo)、鍵盤和顯示器講自己的思路吧,所以我會(huì)假想自己身邊有個(gè)朋友,把自己的思路講給“他”聽,同時(shí)也假想“他”來質(zhì)疑我。話說回來,這種方法確實(shí)很有效,能夠讓自己的思路更清晰,據(jù)說一些大師也經(jīng)常使用這種方法。這種代碼閱讀法會(huì)花掉你~些時(shí)間,但是可以省下更多調(diào)試時(shí)問,而且能夠提高代碼質(zhì)量,可以說是名符其實(shí)的“寫得又快又好的秘訣”之一。至于讀幾遍合適,要根據(jù)情況而定,我個(gè)人覺得讀兩到三遍是最好的,花費(fèi)的時(shí)間也不算多。在C語言中,內(nèi)存錯(cuò)誤是最為人詬病的。這些錯(cuò)誤讓項(xiàng)目延期或者被取消,引發(fā)無數(shù)的安全問題,甚至出現(xiàn)人命關(guān)天的災(zāi)難。拋開這些大道理不談,它們確實(shí)浪費(fèi)了我們大量時(shí)間,這些錯(cuò)誤引發(fā)的是隨機(jī)現(xiàn)象,即使有一些先進(jìn)工具的幫助,為了找到重現(xiàn)的路徑,花上幾天時(shí)間也不足為怪。如果能夠在編寫代碼的時(shí)候避免這些錯(cuò)誤,開發(fā)效率至少提高一倍以上,而且質(zhì)量也可以提高幾倍。這里列舉一些常見的內(nèi)存錯(cuò)誤,供新手參考。內(nèi)存泄露大家都知道,在堆上分配的內(nèi)存,如果不再使用了,就應(yīng)該把它釋放掉,以便后面其他地方可以重用。在C/C++中,內(nèi)存管理器不會(huì)幫你自動(dòng)回收不再使用的內(nèi)存。如果你忘了釋放不再使用的內(nèi)存,這些內(nèi)存就不能被重用了,這就造成了內(nèi)存泄露。把內(nèi)存泄露列為首位,倒不是因?yàn)樗鼤?huì)帶來多么嚴(yán)重的后果,而是因?yàn)樗亲顬槌R姷囊活愬e(cuò)誤。一兩處內(nèi)存泄露通常并不至于讓程序崩潰,也不會(huì)帶來邏輯上的錯(cuò)誤,而且在進(jìn)程退出時(shí),系統(tǒng)會(huì)自動(dòng)釋放所有與該進(jìn)程相關(guān)的內(nèi)存(共享內(nèi)存除外),所以內(nèi)存泄露的后果相對(duì)來說還是比較溫和的。但是,量變會(huì)導(dǎo)致質(zhì)變,一旦內(nèi)存泄露過多以至于耗盡內(nèi)存,后續(xù)內(nèi)存分配將會(huì)失敗,程序就可能因此而崩潰。
編輯推薦
《系統(tǒng)程序員:成長計(jì)劃》:結(jié)合代碼詳細(xì)講解程序開發(fā)方法匯集豐富的軟件開發(fā)思想CSDN專家全新力作在學(xué)習(xí)程序開發(fā)的過程中,你是否總是為自己遇到的一些問題頭疼不已,你是否還在為寫不出代碼而心急如焚?作為軟件開發(fā)人員,你是否時(shí)時(shí)為自己如何成為一名合格的程序員而困惑不已?沒關(guān)系,《系統(tǒng)程序員:成長計(jì)劃》將為你排憂解難。這是一本介紹系統(tǒng)程序開發(fā)方法的書。書中結(jié)合內(nèi)容詳盡的代碼細(xì)致講述了不少底層程序開發(fā)基礎(chǔ)知識(shí),并在逐步深入的過程中介紹了一些簡(jiǎn)單實(shí)用的應(yīng)用程序,最后還講述了一些軟件工程方面的內(nèi)容,內(nèi)容全面,語言生動(dòng),尤其適合初涉系統(tǒng)程序開發(fā)的人來讀,有利于他們成長為更加專業(yè)的程序員。雖然《系統(tǒng)程序員:成長計(jì)劃》以“系統(tǒng)程序員”為名,但書中所蘊(yùn)含的軟件開發(fā)思想和方法也同樣適用于其他的軟件開發(fā)領(lǐng)域。各種軟件開發(fā)人員、相關(guān)專業(yè)的在校學(xué)生以及軟件開發(fā)愛好者也都不妨讀讀《系統(tǒng)程序員:成長計(jì)劃》,來分享作者多年來在學(xué)習(xí)和實(shí)踐中所總結(jié)的開發(fā)方法與所領(lǐng)悟的開發(fā)思想。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載