程序员的私藏好书中,一定有这7本!
眾所周知,讀一流的書,是人生最大的捷徑。今天推薦異步社區的 7 本經典程序員必讀書籍!并送出 7 本,贈送方式見文末!
無論是從書中得到提升專業技能的知識,還是增長見識、啟迪智慧,這些都只有好書才能做到的。
當你看書不挑,那就意味著當你讀了一本爛書的時候,也就失去了閱讀一本好書的時間,爛書除了浪費你的時間,還會混亂你的思維。現如今,市場上的書越來越多,也就意味著你必須越來越會挑!
恰好,推特上一位名為 Pierre de Wulf 的網友突發奇想,有史以來最受歡迎的編程書籍到底是哪些?為了找到程序員們最為推崇的那些編程書籍,他使用 Python 編寫了腳本,拉取了大量的相關數據。
而今天異步君整理的這份程序員修煉必讀經典,就涵蓋了有史以來最受歡迎的編程書籍中的最熱門+必讀的書籍,建議你千萬千萬千萬不能錯過!
01
代碼整潔的重要性
代碼整潔之道
作者:?【美】Robert C. Martin
譯者:?韓磊
幾乎所有的程序員都曾在職業生涯上遇到這個難題——糟糕的代碼。
在編寫代碼時沒有考慮規范和閱讀感,而隨著時間流逝,在代碼上的特性越加越多,閱讀起來要花費不少的時間。
漸漸地,發布周期更是開始拉長,缺陷總是不能修復,裝載時間越來越久,崩潰的次數越來越多,最終只能放棄原先的代碼,重寫!
而Bob大叔為我們解決了這個原先難以解決的大難題,《代碼整潔之道》的面世,改變了無數的程序員編寫代碼的方式、習慣。
Robert C. Martin,世界級編程大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被后輩程序員尊稱為“Bob大叔”。20世紀70年代初成為職業程序員,后創辦Object Mentor公司并任總裁。
在《代碼整潔之道》一書中,作為編程領域佼佼者的Bob大叔給出了一系列行之有效的整潔代碼操作實踐,這些實踐在本書中體現為一條條規則(或稱“啟示”),并輔以來自現實項目的正、反兩面的范例,書中舉例的項目均來自Bob大叔多年職業生涯中的個人經歷。
Bob大叔為程序員們提供了詳盡的微距視角,涉及“命名”、“函數”、“代碼格式”、 “異常處理”、“單元測試”等編碼主題,除了巨細靡遺地向軟件工匠們極力傳授整潔編碼的藝術,還進一步分享了他在探索“軟件之美”旅途中的參證心得。
大家都知道軟件質量的好很重要,但它不僅依賴于架構及項目管理,更是跟代碼質量息息相關。而代碼質量又與其整潔度成正比,換句話說,干凈的代碼,不僅在質量上較為可靠,也為后期維護、升級奠定了良好的基礎。
無論你是敏捷開發流派還是傳統開發流派,只要你想保證軟件質量,那就不僅要注重架構及項目管理,更要留心代碼質量。
而現在,你只要遵循《代碼整潔之道》中的規則,就能編寫出干凈的代碼,從而有效提升代碼質量!
02
程序員職業素養的重要性
代碼整潔之道:程序員的職業素養
作者:?【美】Robert C. Martin(羅伯特 C. 馬丁)
譯者:?余晟 ,章顯洲
Bob大叔想將過去40余年編程生涯的心得體會悉數傳授給新一代程序員,以自己以及身邊的同事走過的彎路、犯過的錯誤為例,為大家講解想要成為真正專業的程序員需要具備什么樣的態度,需要遵循什么樣的原則,需要采取什么樣的行動,意在為后來者引路,助其職業生涯邁上更高臺階。
于是,《代碼整潔之道:程序員的職業素養》誕生了。和《代碼整潔之道》不同在于,它不僅是一本技術類書籍,本書中不僅有相當的內容是介紹純技藝的方面,比如測試驅動開發等,更有其他有趣且實用的內容——關于程序員職業生涯中需要具備的素養,這是你在其他書里所看不到的。
例如:什么情況下應該對業務部門說“是",什么情況下應該說“不"。
相信很多人沒有想過這些問題,或者沒有明確的答案,不妨看看Bob大叔是怎么說的:
說“YES”時,你對自己將會做某件事做了清晰的事實陳述,而且還明確說明了完成期限。那不是指別人, 而是指你自己。你陳述的是自己會去執行的一項行動,而且,你不是“可能”去做,或是“可能做到”,而是 “會”做到。而不是在沒有明確目標和期限的情況下,就第一時間草率地給出了確認的答復,任務交付時卻無法實現自己的承諾,項目就落得著名的 IBM OS/360 操作系統的失敗下場。
有時候,獲取正確決策的唯一途徑,便是勇敢無畏地說出“不”字……我們要明白,委屈專業原則以求全, 并不是問題的解決之道。舍棄這些原則,只會制造出更多的麻煩。在工作中對著那些不合理的工作任務,主動說幾次“NO”,之后你會逐漸發現:你只需要花三分的力氣去拒絕那些無法完成的工作任務,就可以節省十分甚至二十分開發的時間。
在書中,類似的例子還有很多,許多程序員在閱讀這本書時會發出惋惜的聲音,認為自己如果早一點讀到這本書,之前就不會犯這樣那樣的錯誤,就能更早更好地積累自己的職業素養。
國際著名的軟件過程博物學家 Matthew Heusser更是對《代碼整潔之道:程序員的職業素養》給予了高度評價:想要從技術人員晉升為專業人士,該經歷哪些步驟呢?而這本書將為你悉數講解,讓你邁上職業生涯更高的一個臺階。
03
重構的重要性
重構:改善既有代碼的設計(第2版)
作者:?[美]馬丁?福勒(Martin Fowler)
譯者:?熊節 ,林從羽
在編程世界里,有一句古老的工程諺語:“如果它還可以運行,就不要動它。”
而Martin Fowler推翻了這一說法——重構(refactoring),在不改變代碼外在行為的前提下,對代碼做出修改,以改進程序的內部結構。
Martin Fowler,世界級軟件開發大師,敏捷開發的開拓者和創始人全球知名的面向對象分析設計、UML、模式等專業領域的領頭羊,首創敏捷開發方法論,被譽為軟件開發“教父”,現任職于全球知名技術咨詢公司ThoughtWorks,首席科學家。
重構更是被眾人高度稱贊:一本編程技術類書籍能夠讓讀者在工作或實踐多年后,還在反復咀嚼玩味、愛不釋手、引導著讀者前進著,那個必定是Martin Fowler的《重構》系列!
“重構”這個概念最開始來自于 Smalltalk圈子,由于重構是框架開發中不可缺少的一部分,所以當框架設計者討論自己的工作時,這個術語就誕生了。
Martin在《重構:改善既有代碼的設計》中揭示了重構的過程,解釋了重構的原理和最佳實踐方式,并給出了何時以及何地應該開始挖掘代碼以求改善。
這本書受到了廣大程序員的喜愛,他們覺得在不改變代碼外在行為的前提下,對代碼做出修改,以改進程序的內部結構是一個非常妙的事,而書里提出的重構準則更是幫助他們學習如何有條不紊地、一次一小步地修改代碼、改進程序結構,且不會引入錯誤的正確的重構方式,最終得到有效的、長期可運行的代碼程序。
后來,這本風靡國際IT行業的《重構》被引入國內,在豆瓣評分以9.2的高分長期霸屏程序員必讀書單中。
現在,《重構:改善既有代碼的設計(第2版)》誕生了,Martin在《重構:改善既有代碼的設計》的基礎上做了全面修訂,反映了編程領域業20年來發生的許多變化,但Martin傳遞的理念也始終如一:不改變外在行為,而提高代碼質量,但第2版將基礎功夫做得更扎實了,豆瓣評分更是高達9.5分。
重構的關鍵是理念:通過進行最細微的改變,然后將這些變化串聯起來。將一個大變化拆分為許多小變化,又在盡可能多進行細微變化的同時,不改變系統的整體表現,然后隨時間推移,反復練習并思考如何進行拆分。
Martin在《重構 2》一書中通過重構框架思考問題的體驗,嘗試了各種高效的不同重構手法后,找出能重構手法生成理想序列,繼而進行嘗試識別出這種重構手法,而同樣的邏輯也適用于更廣泛的層面。Martin采用了70多個種可行的重構,并且把每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。
《重構 2》是每個程序員職業生涯中不可缺少的一本書,書中的重構準則能幫助大家一步步修改自己的代碼,減少了開發過程中的風險!
?
04
程序員必看的計算機科學名著
多年以來,當讓程序員推選喜愛的計算機圖書時,有兩本書總是位于前列,影響和激勵著一代又一代程序員和計算機科學工作者。
在美國,它們不僅被用作大學低年級數據結構與算法課程的教材,還用作高年級算法課程的輔助教材。連美國著名大學麻省理工學院的電氣工程與計算機科學開放式核心課程算法導論都將這兩本書列為不得錯過的推薦讀物。
它們就是Jon Bentley的《編程珠璣(第2版)》和《編程珠璣(續)》。
Jon Bentley,世界著名計算機科學家,被譽為實踐探索先鋒,影響算法發展的十位大師之一,也是2004年Dr. Dobb's程序設計卓越獎的獲得者以及暢銷書《編程珠璣》的作者。
這兩本書不但覆蓋了大學算法課程和數據結構課程的大部分內容,且書中有許多真實的歷史案例和許多極好的練習題以及部分練習題的提示與解答,非常適合自學。不強調單純從數學上來進行分析的技巧,而是強調結合實際問題來進行分析、應用和實現的技巧。
Bentley建議,閱讀這兩本書時需要備有紙和筆,最好還有一臺計算機在手邊,邊讀邊想邊想邊做,這樣才能將閱讀這兩本書的收益最大化。
編程珠璣(第2版)
作者:?【美】Jon Bentley
譯者:?黃倩 ,錢麗艷
《編程珠璣(第2版)》是計算機科學方面的經典名著,圍繞程序設計人員面對的一系列實際問題展開。Bentley以其獨有的洞察力和創造力,引導讀者理解這些問題并學會解決方法,而這些正是程序員實際編程生涯中至關重要的。
Bentley為各個層次的程序員打造了一份各個階段都能得到收獲的書籍,更獨具一格的是通過一些精心設計的有趣而又頗具指導意義的程序,對實用程序設計技巧及基本設計原則進行了透徹而睿智的描述,為復雜的編程問題提供了清晰而完備的解決思路。
更加值得一提的是,書中解決方案的代碼均以C/C++語言編寫,不僅有趣,而且有很大的實戰示范意義——每章后所附習題極具挑戰性和啟發性,書末給出了簡潔的解答。
編程珠璣(續)
作者:?【美】Jon Bentley
譯者:?錢麗艷?,劉田?,等
《編程珠璣(續)》是《編程珠璣》的姊妹篇,講述了對于程序員有共性的知識,延續了《編程珠璣》的特色,但《編程珠璣(續)》涉及的范圍更廣,包括文檔、小語言、性能監視、圖形輸出等。
Bentley選取許多具有典型意義的復雜編程和算法問題放入《編程珠璣(續)》,生動描繪了歷史上大師們在探索解決方案中發生的軼事、走過的彎路和不斷精益求精的歷程。
Bentley將程序員操縱程序的技術、程序員取舍的技巧、輸入和輸出設計以及算法示例等等,這些內容結合成一個有機的整體,如一串串珠璣展示給讀者。
引導讀者像真正的程序員和軟件工程師那樣富于創新性地思考,并透徹闡述和總結了許多獨特而精妙的設計原則、思考和解決問題的方法以及實用程序設計技巧——每章后所附習題極具挑戰性和啟發性,書末給出了簡潔的解答。
這兩本書涵蓋了Bentley的美好愿望:希望能讓各個階段的程序員都從他的書中學到東西。
05
程序員必備軟技能
對于程序員這個行業來說,當你開始對未來的發展感到迷茫感到焦躁、迷茫——職業焦慮,就意味著,你該好好地為自己做一個規范的職業規劃了。
“我該如何規劃自己的職業生涯?快速的提升能力以及積攢資源,以應對一直變化的未來",答案就是軟技能。
近些年來,軟技能被大多數程序員認可,與越來越多的人覺得限制技術人員職場發展的因素,往往不是技術能力,而是技術之外的軟技能密不可分。
在軟技能的書海里,不得不讀的當屬John Sonmez的軟技能系列書籍。里面匯集了那些John在職業生涯中遇到的所有問題。
約翰·森梅茲(John Sonmez) ,10歲時起就開始編寫代碼并在Q-Basic中創建了第一款游戲,知名軟件開發大師,互聯網上最大的程序員博客“Simple Programmer”網站的創始人,他還為在線培訓機構Pluralsight開發了50多門在線課程。
被眾多軟件開發人員稱為人生導師,他幫助軟件工程師、程序員和其他專業技術人員推動事業進步,通過“化繁為簡”的方法,賦予他們達成自身目標的力量,這也是他所追求的。
在2013年2月14日的時候,33歲的John正式退休。
但他又沒有完全退休,而是將將所有精力都放在發展簡單程序員上(使它成為軟件開發人員在Internet上的最佳選擇)及寫出對所有人有幫助的職業生涯規劃書籍(《軟技能》)。
當時的John無法找出答案,因此,現在的他要創造出答案!
軟技能:代碼之外的生存指南
作者:?【美】John Z. Sonmez(約翰 Z. 森梅茲)
譯者:?王小剛
《軟技能:代碼之外的生存指南》一書中,系統地介紹了軟技能的培養方法,幫助很多人走出困惑。他全程從程序員的視角來撰寫,很系統的介紹了程序員必備的軟件能歸納為7大類:職業、自我營銷、學習、生產力、理財、健身、精神,旨在幫助你成為一個成功的程序員。
聚焦于軟件開發人員生活的方方面面且關注自身全方位發展的《軟技能:代碼之外的生存指南》,圍繞“人”這一核心,用 360 度環狀視角描述我們在生活中需要關注的各種“軟技能”,關注于“如何讓你的生活更加美好”,在豆瓣評分上獲得8.0分的高分好評。
《軟技能:代碼之外的生存指南》書中除了針對各項重要技術的“軟技能”,還包括職業規劃、提高生產力、個人投資與理財,乃至健身與戀愛:如何與客戶、同事以及經理們打交道,如何保證工作效率,如何保障財務安全,如何保持自己的體形,如何找到真愛……這些統統被開發人員視為畏途的問題一一解答,為開發人員提供建議。
從既涉及生活習慣到思維方式,從凸顯技術中“人”的因素, 全面講解軟件行業從業人員所需知道的所有“軟技能”。
幫助軟件工程人員、編程人員和其他技術人員能夠積極思考自己的職業生涯,豐富自己的生活,讓自己更接近成功。
軟技能2:軟件開發者職業生涯指南
作者:?[美]約翰·森梅茲(John Sonmez)
譯者:?王小剛
本書是《軟技能:代碼之外的生存指南》一書作者的新作,專門就“職業發展”的主題做了很多深入而又富有建設性的探討。是一本為程序員量身定做的職業發展指南,處于任何發展階段的軟件開發者,都將從本書中獲益。
如果你是軟件開發/編程的初學者或者只是對軟件開發感興趣的人士,可以通過本書了解如何開啟軟件開發的職業之旅,如何獲得第一份工作;如果你是中級軟件開發者,可以通過本書發現自己的知識短板,學會如何進一步拓展和掌握新的技術技能,如何學習新的編程語言,如何提升技術水平,如何在自己夢想的編程工作中深耕細作;如果你是身經百戰的專業軟件開發者,可以通過本書了解如何拓展和推進自己的職業生涯,如何更好地與同事和老板相處,如何推銷自己的想法,如何做好向上管理,如何升職加薪。?
資深軟件開發者兼軟件開發者的人生導師約翰·森梅茲在本書中針對職場上的各項重要的“軟技能”,為軟件開發者提供專業的職業發展指導,讓軟件開發者的職業生涯更加精彩和輝煌。?
本書與《軟技能:代碼之外的生存指南》既相得益彰,又各有側重——《軟技能:代碼之外的生存指南》全方位論述軟件開發者生活和工作中需要關注的各種“軟技能”,而本書則從軟件開發者職業生涯的時空關系出發,描述軟件開發者職業發展整個歷程中應具備的各種“軟技能”。
-END-
贈書福利區
以上 7 本書中你最想要哪一本,為什么?關注小詹的視頻號「小詹同學」,在第一個視頻中留言分享,24小時內點贊最多的 5 位小伙伴將獲取一本以上書籍(可自由選擇),在公眾號本文下留言相同規則送 2 本!
點擊下方“閱讀原文”加我微信
↓↓↓
總結
以上是生活随笔為你收集整理的程序员的私藏好书中,一定有这7本!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神器面世:让你快速在 iOS 设备上安装
- 下一篇: Flutter 1.17 | 2020