1. 程式人生 > >12本最具影響力的程序員書籍

12本最具影響力的程序員書籍

研討會 str 前沿 cal 最有 才幹 很好 man 開拓者

要成為一個更好的開拓人員,我應當讀哪些書?我真的需求念書嗎?
這是一個很值得切磋的成績,而且也是我在成為軟件工程師之時問了很多導師的一個成績。但成績是,很多人引薦的是不合主題的不合書本。他們引薦的書在他們看來是偉大的,但沒有人能奉告我,要想成為一個偉大的工程師,我應當閱讀什麽,哪些是首要的、是必讀的書本。

我從我的導師那兒學到了很多對象,並認識到,我依然有很多對象需求進修,還有許多不合的書需求閱讀。我決定每個月讀一本專業領域(軟件工程)的書。隨著時候的堆集,我總結出了我認為想要成為一個頂級開拓人員必需閱讀的書單。

事前聲明——只是閱讀這些書不會讓你成為一個偉大的開拓者。你還需求堆集多年的任務經歷,並利用這些書中的準繩到理想實際中,並在理想世界中生長你處理成績的才幹。

閱讀這些書可以幫忙你避免一些罕見的圈套和漏洞,一些開拓人員晚期經歷的圈套和犯過的漏洞。我何等停頓在我剛進入軟件領域的時辰,就有人向我引薦這些書啊,而且我此刻依然很高興本人發覺並幾次閱讀了這些書!也許你已在大學讀合計機科學或工程課程的時辰讀到過個中的一些書。也許在阿誰時辰,你感覺它們其實不首要,可是我可以用我親自經歷來申明我使用和利用了許多來自於這些書的準繩。

我還要指出的是,此書單其實不詳實。每年鄉村有許多偉大的著作問世。這些只是對我和我的職業生活生計影響最大的書本。另外,這些書和使用什麽說話有關,可以利用於任何軟件說話。

好了,讓我們開端引見這些書吧! (請拍手)

(這些都是必不成少的,我將按照它們對我的影響巨細從後往前引見。)

12.《Working Effectively with Legacy Code》

我之所以愛好這本書,是由於幾近一切的軟件開拓人員,在其職業生活生計的某個時辰,常常會不得不支撐和任務於遺留系統。在這本書中,Michael Feathers供給了從開端到竣事的戰略,以便於更有用地任務於未經測試的遺留代碼庫。本書自創了Michael為其有名的Object Mentor專題研討會創作的材料:Michael用於指點的手藝,以幫忙開拓人員,手藝經管人員和測試人員掌控遺留系統。

11.《The Mythical Man-Month》

本書是一本典範之作,但比來被點竄和更正了。使人詫異的是這本書依然與軟件產物開拓緊密親密相關。若是你處置軟件的話,這本書是必讀的。這本書最有價值的部門,我信任,是“plan to throw out”原型章節。雖然我們的方針但凡是做一個更大,更好,更快,不管它是什麽的對象,可是我們總會建立出一些不得不被保存,需求重做的對象。這類景象我親自經歷過很多很屢次。是以,關頭是要plan to throw out(打算扔掉),這樣你才幹順應接上去的景象。若是你胡想第一個產物就ok,那末你就會有扔掉它們的風險,由於產物的改良和生長是不成避免的。打算扔掉也有助於經由過程設置合理的裏程碑來抵達進度方針。

10.《Design Patterns》

若是你籌算成為一位架構師或系統的設想人員,那末你很有能夠會被要求閱讀這本書。這是一本被譽為有史以來最偉大的相關於軟件開拓的書,具體講述了許多不合的設想方式,這麽多年來一向在幫忙軟件工程師避免和措置行業面臨的罕見成績。遵循這本書的戰略可以助你制造更高品德,矯捷和可保護的軟件。傳說中的“四人幫”就是這本書,由於它是由四個有名的作者合營編寫的。

9.《Programming Pearls 第二版》

這本書和這書單上的其他書本略有不合。我想說這本書可以幫忙一小我“像一個法度圭表標準員一樣思慮”。《Programming Pearls》是先前揭曉在“Communications of the ACM(美國合計機學會通訊)”的15篇專欄的一個大綱。這些專欄涵蓋了遍及與編程相關的主題:從需求匯集到功能優化。重點關心編碼手藝和算法。

每個專欄被組織為一個章節。章節但凡以一個理想成績的景象閃現開首。然後,提出各類處理方案和呼應的經歷經驗。寫作氣焰明晰晦澀。

《Programming Pearls》不是教授新編程概念的平常書本。雖然它包含了優良,有時以至是相當別致的設法主張,但這本書的手段不是教你一些新的對象,而是幫忙你成為一個更好的成績處理者。

8.《CODE: The Hidden Language of Computer Hardware and Software》

這本書清算了成立和開拓龐雜系統的少量“魔法”。此刻的籠統是如斯之多,乃至於一些低條理的細節反而不為開拓人員所知。雖然你能夠不會發覺本人在實際中時辰使用著這本書——但我信任,知道本人正在建立什麽和全部編排的任務道理是什麽,總歸是一個好主張。當你需求翻開“黑匣子”,深切軟件或硬件來處理一個厭惡的bug的時辰,它就可以派上用途了。Charles Petzold寫的《CODE: The Hidden Language of Computer Hardware and Software》梳理了許多編程概念——從數字系統的十進制,八進制,二進制到初級說話。這本書引見了基於包的通訊和談和TCP。許多章節教授教化了相關硬件的概念,有五個章節觸及到了軟件和教導操作系統,浮點運算和圖形用戶界面。

7.《The Art of Computer Programming》

這又是一部典範之作。由有名的合計機科學家教授Donald Knuth編著,並取得行業內浩瀚頂尖法度圭表標準員的分歧好評。以至連Bill Gates也對這本書贊譽有加:

“若是你認為你是一個真正優良的法度圭表標準員……那末就去讀[Knuth的]《The Art of Computer Programming》吧……若是你能讀懂整本書,那末請必然要給我發簡歷。”

這本書以根基的編程概念和手藝開首,然後聚焦於更具體的消息構造——合計機內的消息暗示,數據元素之間的構造聯系,和若何有用地措置這些成績。另外還供給了根基的利用法度圭表標準給仿真模擬,數值編制,符號合計,軟件和系統設想。

6.《Refactoring》

Martin Fowler寫的《Refactoring》首要關於改良現有代碼的設想。這是一個修改軟件系統而不修改代碼的內部行動,卻能提高它內部構造的過程。通太重構,你以至可以將一個糟的設想從頭建築為一個很好的設想。這本書對重構準繩停止了深切切磋,包含在那裏發覺重構的機緣,和若何成立所需的測試。另外還有一個目錄有40多個已用細節證實的重構,這些細節包含什麽時辰和為什麽要使用重構,慢慢申明若何完成重構,並舉例申明重構是若何任務的。這本書用Java作為其首要說話而寫,但個中的思緒適用於任何OO說話。

5.《Clean Code》

《Clean Code》,作者Robert C. Martin,分為三個部門。第一部門引見準繩、方式和編寫潔凈代碼的實際編制。第二部門包含若幹個龐雜度漸進的研討案例。每個案例研討就是一個潔凈代碼的操練,也是經由過程處理代碼庫中的一些成績讓代碼變得健全、高效的操練。第三部門是決定性的一個部門:每個伶仃的章節在成立案例研討的時辰包含了一系列啟示式的教授教化法。最初取得了描寫我們在編寫、閱讀和清算代碼時的思慮編制的常識庫。

4.《Introduction to Algorithms》

這必需是理解和使用算法(將在軟件開拓中觸及良多)的最好書本。有些關於算法的書雖然松散,但不周全——還有一些雖然觸及面廣,但卻貧乏松散性。《Introduction to Algorithms》奇異地連系了松散性和周全性。這本書涵蓋了遍及又深切的算法,使得書中的設想和闡明可以或許面向一切條理的閱讀人員。每個章節絕對自力,可看做是一個進修單元。算法用英語和可讀的偽代碼描寫。它使用低級根基的註釋,其實不犧牲籠蓋的深度和材料的松散性。第一版不只遍及成為了世界各地高校的教材,還成為了專業人士的尺度參考書。第二版新增了算法,幾率闡明,隨機算法,線性打算的章節。

3.《Structure and Interpretation of Computer Programs》

以一種對處理成績和編程手藝闡明和松散的立場,這本書面向於工程。《Structure and Interpretation of Computer Programs》強調經由過程不合編制來闡揚焦點感化,以措置合計模子中的時候。其奇異的編制使得它很是適合於合計機科學課程,和編程說話和法度圭表標準設想的入門。這本書進一步註釋了4個最有名的編程說話範式——號令式編程,面向對象編程,基於邏輯編程和利用性編程。

2.《Pragmatic Programmer》

這是我最早閱讀的編程書本之一。是我的一個伴侶在我就職第一份專業任務的時辰引薦給我的。我很高興他這麽做了。雖然這本書寫於1999年,可是它的概念是我們以一種務實的立場去開拓龐雜系統的根本。法度圭表標準員也是工匠,他們被練習使用一組特定的對象(編纂器,對象經管,版本跟蹤器)生成某種可在必然景象中(硬件組件上的操作系統)任務的產物(法度圭表標準)。和任何其他工藝一樣,合計機編程也孕育出了聰明,但個中的大大都聰明是不克不及從大學或認證課程中學到的。大大都法度圭表標準員只能經由過程自力的實驗,時候一點點的堆集,才幹把握這些所謂的技能。在《Pragmatic Programmer》一書中,Andrew Hunt和David Thomas編纂了良多他們在別離作為軟件設想者和代碼編寫者的職業生活生計中發覺的謬誤。

作者的一些適用性倡議很是具體,而且明顯很易於嘗試。他們倡議讀者去進修,例如一個文本編纂器,然後在各類景象下使用它。他們還倡議使用版本跟蹤軟件——即使是對最小型的項目,進修正則表達式語法和文本操作說話。書中還有其他許多也很是有價值的倡議。在調試部門,作者指出:“若是你看到蹄印的話,應當斟酌馬這個規模,而不是斑馬。”也就是說,要思疑一切,然後從最顯眼的中央尋覓成績。還相關於預估時候和費用,和將集成測試歸入到開拓過程的倡議。《Pragmatic Programmer》讓人愛不釋手的還有兩個啟事:它會更明晰地梳理你本人堆集的聰明,它還會給你引見你還沒斟酌到的任務編制。

1.《Code Complete 2》

就是它了!這就是我認為首屈一指值得閱讀的書(請恕我妄語),若是你要成為一個優良的軟件工程師的話。它被遍及認為是最好的適用性編程指南之一,Steve McConnell最初的《Code Complete》在疇昔的10多年時候裏,一向在幫忙開拓人員編寫更好的軟件。此刻,這部典範書本已周全更新,點竄成了前沿的實際編制——和數以百計的新的代碼示例——修訂了軟件構造的藝術和科學。從研討、學術界戰鬥常商業實際中捕捉常識系統,McConnell將最有用的手藝和必需知道的準繩總結成明晰又務實的指點。不管你的經歷水平,開拓景象,還有項目規模若何,這本書都可以啟示和激起你的思慮,幫忙你制造最優良的代碼。

不竭地摸索技能和戰略,可以幫忙你:

最小龐雜性和最大創意的設想
取得協同開拓帶來的益處
利用防禦性編程手藝,以增添和擯除漏洞
操縱機緣安然地重構或改良代碼
使用針對你項手段構造編制
快速有用地調試成績
早早地精確處理關頭的構造成績
從頭到尾項目制造高質量的項目
這12本書到此就引見結束了!

華彩CC 發表

12本最具影響力的程序員書籍