計算機專業必讀哪些經典書籍?

程序員書屋 發佈 2020-05-22T06:33:23+00:00

疫情之下的今年,小編也不知道程式設計師的求職之路是否順暢,開學季也不清楚是哪個月份,如果還沒有畢業的計算機專業的你,需要看一下這份書單,為將來走出校門做準備,雖然這樣的書單很多人推薦過,小編還是想親自來一份。當然,程式設計師也非常適用此書單。

疫情之下的今年,小編也不知道程式設計師的求職之路是否順暢,開學季也不清楚是哪個月份,如果還沒有畢業的計算機專業的你,需要看一下這份書單,為將來走出校門做準備,雖然這樣的書單很多人推薦過,小編還是想親自來一份。當然,程式設計師也非常適用此書單。


IT人文篇


1、編程珠璣 第2版

[美] 喬恩·本特利(Jon Bentley) 著,黃倩,錢麗艷 譯

《編程珠璣》第一版是我早期職業生涯中閱讀過的對我影響較大的書籍之一,在書中首次接觸到的很多觀點都讓我長期受益。作者在這一版本中做了重要更新。新增加的很多例子讓我耳目一新。

——Steve McConnell,《代碼大全》作者

這兩本書不僅被用作大學低年級數據結構與算法課程的教材,還用作高年級算法課程的輔助教材。例如,美國著名大學麻省理工學院的電氣工程與計算機科學開放式核心課程算法導論就將這兩本書列為推薦讀物。這兩本書覆蓋了大學算法課程和數據結構課程的大部分內容,但是與普通教材的側重點又不一樣,不強調單純從數學上來進行分析的技巧,而是強調結合實際問題來進行分析、應用和實現的技巧,因此可作為大學計算機專業的算法、數據結構、軟體工程等課程的教師參考用書和優秀課外讀物。


2、重構 改善既有代碼的設計(第2版 平裝版)

[美] 馬丁·福勒(Martin Fowler) 著,熊節,林從羽 譯


  • 軟體開發大師的不朽經典
  • 生動闡述重構原理和具體做法
  • 普通程式設計師進階到編程高手必須修煉的秘笈

本書是一本為專業程式設計師編寫的重構指南。我的目的是告訴你如何以一種可控且高效的方式進行重構。你將學會如何有條不紊地改進程序結構,而且不會引入錯誤,這就是正確的重構方式。

儘管本書的關注對象是代碼,但重構對於系統設計也有巨大影響。資深設計師和架構師也很有必要了解重構原理,並在自己的項目中運用重構技術。最好是由有威望的、經驗豐富的開發人員來引入重構技術,因為這樣的人最能夠透徹理解重構背後的原理,並根據情況加以調整,使之適用於特定工作領域。如果你使用的不是JavaScript而是其他程式語言,這一點尤其重要,因為你必須把我給出的範例用其他程式語言改寫。

下面我要告訴你,如何能夠在不通讀全書的情況下充分用好它。

  • 如果你想知道重構是什麼,請閱讀第1章,其中的示例會讓你弄清楚重構的過程。
  • 如果你想知道為什麼應該重構,請閱讀前兩章,它們會告訴你重構是什麼以及為什麼應該重構。
  • 如果你想知道該在什麼地方重構,請閱讀第3章,它會告訴你一些代碼特徵,這些特徵指出「這裡需要重構」。
  • 如果你想著手進行重構,請完整閱讀前四章,然後選擇性地閱讀重構名錄。一開始只需概略瀏覽列表,看看其中有些什麼,不必理解所有細節。一旦真正需要實施某個重構手法,再詳細閱讀它,從中獲取幫助。列表部分是供查閱的參考性內容,你不必一次就把它全部讀完。

3、代碼整潔之道 程式設計師的職業素養

[美] 羅伯特·C.馬丁(Robert C.Martin) 著,余晟,章顯洲 譯

軟體開發大師Robert C. Martin在書中介紹了真實軟體技藝中的各項原則、技術、工具和實踐,展示了怎麼以自豪、自尊和自信的心態進行軟體開發,怎麼取得卓越表現和豐碩成果,怎麼做到有效溝通和確切估算,怎麼以坦誠的心態面對困難,並引導讀者認識到專業程式設計師肩負的責任重大,闡述了什麼才是程式設計師的職業素養。

書中的具體內容包括:

● 成為真正的軟體專業人士需要具備哪些條件,如何應對彼此衝突又緊張的進度表和不近情理的管理人員;
● 如何做到流暢編程,克服阻塞狀態;
● 如何應對無休止的工作壓力,避免崩潰;
● 如何培養堅持不懈的態度,如何擁抱新的開發範式;
● 如何管理好時間,避免身陷泥潭無法自拔;
● 如何培育有利於程式設計師和開發團隊茁壯成長的環境;
● 什麼時候應該說「不」,怎麼說;
● 什麼時候應該說「是」,承諾意味著什麼。

4、代碼整潔之道 [Clean Code A Handbook of Agile Software Craftsmanship]

羅伯特·C.,馬丁(Robert,C.,Martin) 著,韓磊 譯

  • 鮑勃大叔作品,程式設計師必讀
  • 匯聚編程大師數十年編程生涯的心得體會,闡釋如何解決軟體開發人員、項目經理及軟體項目領導們所面臨的棘手的問題
  • 軟體開發領域經典巨著

你的代碼在哪道門後面?你的團隊或公司在哪道門後面?為什麼會在那裡?只是一次普通的代碼複查,還是產品面世後才發現一連串嚴重問題?我們是否在戰戰兢兢地調試自己之前錯以為沒問題的代碼?客戶是否在流失?經理們是否把我們盯得如芒刺在背?當事態變得嚴重起來,如何保證我們在那道正確的門後做補救工作?答案是:技藝(craftsmanship)。

本書提出一種觀念:代碼質量與其整潔度成正比。乾淨的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱「啟示」),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

5、軟技能2 軟體開發者職業生涯指南

  • 作為一名軟體開發者,我該如何起步?
  • 我該如何培養自己的技術能力?
  • 我該如何談判薪水?在合同制員工和正式職員之間我該如何選擇?
  • 我該如何跟我的老闆、同事打交道?我該如何對待職場偏見?我該如何跟技術女性打交道?我該如何成為一名技術女性?
  • 我真正需要知道什麼?又該如何學習它們?
  • 大學學歷教育、編程訓練營還有自學成才,該選哪一種?
  • 我如何找到一份工作?如果沒有經驗,我該怎麼辦?
  • 我怎樣才能通過面試?
  • 身在職場我該怎樣穿著?
  • 我怎樣才能推動自己的職業發展提升到一個新的水平?

這是一本為軟體開發者量身定做的職業發展指南,處於任何發展階段的軟體開發者,都將從本書中獲益。如果你是軟體開發/編程的初學者或者只是對軟體開發感興趣的人士,可以通過本書了解如何開啟軟體開發的職業之旅,如何獲得第一份工作;如果你是中級軟體開發者,可以通過本書發現自己的知識短板,學會如何進一步拓展和掌握新的技術技能,如何學習新的程式語言,如何提升技術水平,如何在自己夢想的編程工作中深耕細作;如果你是身經百戰的專業軟體開發者,可以通過本書了解如何拓展和推進自己的職業生涯,如何更好地與同事和老闆相處,如何推銷自己的想法,如何做好向上管理,如何升職加薪。

6、軟技能:代碼之外的生存指南


作為一個軟體開發人員,在我的生活中,我經歷過許多不同的旅程。我曾走在陽關大道,也曾誤入歧途,還有一些路我至今仍不知是對還是錯。這一路走來,我並沒有得到太多的幫助和指導。我從來沒覺得有誰為我披荊斬棘,開闢出一條小路使我可以因循,也從來沒覺得有誰可以告訴我如何成為一名最成功的軟體開發人員——不能只編寫代碼,還要有精彩的人生。

當然,也曾有過許多人影響了我的人生,也有許多人教導我各種各樣的有關軟體開發的事情(以及更多)。毋庸諱言,我一生中取得的成功,部分應歸功於他們。但我確實從來沒有發現某位人士或某個導師,能夠把以下信息匯集在一起,例如:

  • 如何管理職業生涯,如何在職業生涯中做出正確選擇;
  • 如何以更好、更有效的方式學習,以及如何儘可能富有成效,以及在缺乏動力而心灰意冷的時候該如何去做;
  • 有關理財的基礎知識,有關身心健康的基礎知識,以及——作為一個軟體開發人員,乃至於作為生活在這個星球上的一個「人」,這些事情會如何影響到我。

作業系統篇

1、UNIX環境高級編程 第3版

作者: 【美】W. Richard Stevens Stephen A.Rago,譯者: 戚正偉 ,張亞英 ,尤晉元。



豆瓣評論

本書的第一章是UNIX基礎知識,這是這類的每一本書籍所慣常有的,可以使讀者先大致了解一些相關的情況。第二章比較重要,它講解了貫穿本書的三個標準:ISO C, IEEE POSIX, Single UNIX Specification 。每一個標準都是前一個的超集。這也是程式設計師在開發可移植性強的程序時所必須考慮的。然後接下來就詳細講解了各種I/O,因為這是程序最常用到的。接著是進程相關的內容,這也I/O一樣,是本書的兩大重點之一。當然,講解完進程少不了對線程的介紹,這是能大大地提高程序性能的一種技術。書本的後半部分主要講解進程間通信,我感覺這是一種比較高級的技術,在大型程序當中特別重要。
讀完之後覺得意猶未盡。真是一本神書!它講解得太好了

2、UNIX網絡編程 卷1 套接字聯網API 第3版

【美】W. Richard Stevens Bill Fenner Andrew M. Rudoff著

  • UNIX作業系統網絡編程經典作品
  • UNIX和網絡專家的傳世之作,世界網絡專家執筆新版
  • UNIX系統編程寶典,程式設計師案頭常備

這是一部傳世之作!網絡編程專家Bill Fenner和Andrew M.Rudoff 應邀執筆,對W.RichardStevens 的作品進行修訂。

豆瓣評論

Richard老大的書就是不同凡響,以前斷斷續續的看過這本書的前幾個章節,就放棄不看了,其原因不過是自己以為這本書只是個單純的API的Reference book. 沒有必要仔細研讀, 現在看來自己是大錯特錯了。
首先,這本書是現在我讀到的最好的,把幾個I/O model講的很清楚的書,獨一無二。 書中的例子很好, 很有啟發性。
其次, 這本書很好的把TCP protocol 的細節和實際編程結合在一起, 當我把TCP/IP illustrated vol.1在讀了一遍, 再看看這本書,真是獲益匪淺啊。
不過,書中的一些章節還是作為Reference book 看為好,都是純粹的介紹, 用時再看也不遲,不過, 就怕到用時,記不得書中有如此的介紹。

3、 UNIX網絡編程 卷2 進程間通信 第2版[美] W.理察·史蒂文斯(W.Richard Stevens) 著


  • UNIX和網絡專家W. Richard Stevens的傳世之作

兩卷本的《UNIX網絡編程》是已故著名技術作家W. Richard Stevens的傳世之作。卷2著重討論如何讓應用程式與在其他機器上的應用程式進行對話。良好的進程間通信(IPC)機制是提高UNIX程序性能的關鍵。《UNIX網絡編程 卷2 進程間通信(第2版)》全面深入地講解了各種進程間通信形式,包括消息傳遞、同步、共享內存及遠程過程調用(RPC)。書中包含了大量經過優化的原始碼,幫助讀者加深理解。這些原始碼可以從本書網站下載。《UNIX網絡編程 卷2 進程間通信(第2版)》是網絡研究和開發人員公認的專業參考書,無論網絡編程的初學者還是網絡專家都會大受裨益。

4、作業系統導論

如果你是讀這本書的學生,那麼我們很榮幸能夠提供一些材料來幫助你學習作業系統的知識。我們至今還能夠回想起我們使用過的一些教科書(例如,Hennessy和Patterson的著作[HP90],這是一本關於計算機架構的經典著作),並希望這本書能夠成為你美好的回憶之一。

你可能已經注意到,這本書英文版的在線版本是免費的,並且可在線獲取[1]。有一個主要原因:教科書一般都太貴了。我們希望,這本書是新一波免費材料中的第一本(指電子版),以幫助那些尋求知識的人—— 無論他們來自哪個國家,或者他們願意花多少錢購買一本書。

我們也希望,在可能的情況下,向你指出書中大部分材料的原始資料—— 多年來的優秀論文和人物,他們讓作業系統領域成為現在的樣子。想法不會憑空產生,它們來自聰明勤奮的人(包括眾多圖靈獎獲得者[2]),因此如果有可能,我們應該讚美這些想法和人。我們希望這樣做能有助於更好地理解已經發生的變革,而不是說好像我們寫這本書時那些思想一直就存在一樣[K62]。此外,也許這樣的參考文獻能夠鼓勵你深入挖掘,而閱讀該領域的著名論文無疑是良好的學習方法之一。


C語言三劍客

1、C專家編程Expert C Programming Deep C Secrets

《C專家編程》可以幫助有一定經驗的C程式設計師成為C編程方面的專家,對於具備相當的C語言基礎的程式設計師,《C專家編程》可以幫助他們站在C的高度了解和學習C++。書本擷取了幾十個實例,細緻、深入地講解了C的歷史、語言特性、聲明、數組、指針、連結、運行時、內存以及分析了如何進一步學習C++等問題。《C專家編程》是一本ANSIC程式語言的高級讀本。它適用於已經編寫過C程序的人,以及那些想迅速獲取一些專家觀點和技巧的人。專家級的C編程指南展示C程式設計師的編程技巧。

2、C陷阱與缺陷 [C Traps and Pitfalls]

《C和C++經典著作:C陷阱與缺陷》適合有一定經驗的C程式設計師閱讀學習,即便你是C編程高手,《C和C++經典著作:C陷阱與缺陷》也應該成為你的案頭必備書籍。作者以自己1985年在Bell實驗室時發表的一篇論文為基礎,結合自己的工作經驗擴展成為這本對C程式設計師具有珍貴价值的經典著作。

《C和C++經典著作:C陷阱與缺陷》的出發點不是要批判C語言,而是要幫助C程式設計師繞過編程過程中的陷阱和障礙。《C和C++經典著作:C陷阱與缺陷》分為8章,分別從詞法分析、語法語義、連接、庫函數、預處理器、可移植性缺陷等幾個方面分析了C編程中可能遇到的問題。結尾,作者用一章的篇幅給出了若干具有實用價值的建議。

3、C和指針 POINTERS ON C

《C和指針 POINTERS ON C》提供與C語言編程相關的全面資源和深入討論。本書通過對指針的基礎知識和高級特性的探討,幫助程式設計師把指針的強大功能融入到自己的程序中去。全書共18章,覆蓋了數據、語句、操作符和表達式、指針、函數、數組、字符串、結構和聯合等幾乎所有重要的C編程話題。書中給出了很多編程技巧和提示,每章後面有針對性很強的練習,附錄部分則給出了部分練習的解答。本書適合C語言初學者和初級c程式設計師閱讀,也可作為計算機專業學生學習c語言的參考。

4、C Primer Plus 第6版 中文版[美] 史蒂芬·普拉達(Stephen Prata) 著,姜佑 譯

《C Primer Plus(第6版)中文版》共17章。第1、2章介紹了C語言編程的預備知識。第3~15章詳細講解了C語言的相關知識,包括數據類型、格式化輸入/輸出、運算符、表達式、語句、循環、字符輸入和輸出、函數、數組和指針、字符和字符串函數、內存管理、文件輸入輸出、結構、位操作等。第16章、17章介紹C預處理器、C庫和高級數據表示。本書以完整的程序為例,講解C語言的知識要點和注意事項。每章末設計了大量複習題和編程練習,幫助讀者鞏固所學知識和提高實際編程能力。附錄給出了各章複習題的參考答案和豐富的參考資料。《C Primer Plus(第6版)中文版》可作為C語言的教材,適用於需要系統學習C語言的初學者,也適用於鞏固C語言知識或希望進一步提高編程技術的程式設計師。

小編就篇整理這麼多吧,希望對你能有所幫助。祝您閱讀愉快!

關鍵字: