JavaRush /Java Blog /Random-TW /適合初學者的 10 本程式設計書籍
Max Stern
等級 35
Нижний Новгород

適合初學者的 10 本程式設計書籍

在 Random-TW 群組發布
我有一位同事為未來的 Java 開發者進行了大量的技術面試。我曾經問他,在語言能力大致相當的人中進行選擇時,是什麼影響了僱用沒有實際經驗的申請人的決定。考慮到市場狀況,我想這個問題與你們許多人息息相關。 適合初學者的 10 本程式設計書籍 - 1「對科技的熱情、選擇解決問題的最佳方案的能力、一般的 IT 知識、對工作中等待著他的事情的理解」——這就是他的回答。我曾經在一篇文章中介紹過幫助我學習Java的初學者程式設計書籍。在本文中,我將重點放在能夠幫助新手程式設計師獲得 IT 知識、了解未來工作並簡化選擇最佳解決方案任務的出版物。也就是說,找到一份工作並從一開始就盡可能地表現出色。我根據自己的喜好編制了這個列表,因此可能有些主觀。既有適合學生的經典程式教材,也有適合各代程式設計師的參考書。

改善程式碼和生產力

僅僅編寫程式碼是不夠的。重要的是要寫好它,能夠改進它,並且了解它的整體開發方式。以下針對初級程式設計師和其他人的書籍已經幫助不只一代專家應對軟體開發的困難技術流程。

實用主義程式設計師。從行家到大師(安德魯亨特、大衛湯瑪斯)

原文標題: The Programmatic Programmer from From Journeyman to Master Andrew Hunt 和 David Thomas 適合初學者的 10 本程式設計書籍 - 2著 本書中實用主義程式設計師的形像是如此清晰和理想化,以至於……人們可以稱他為浪漫主義者,無論這聽起來多麼自相矛盾。儘管如此,儘管本書年代久遠,但書中的建議仍然實用且相關。我不知道在程式設計書籍的世界裡該把《實用主義程式設計師》比喻為什麼。這個世界上最接近的類似物是《舊約》或一些超酷的食譜。在「語用學」中,一切都非常具體,並且最大限度地適用於實踐。有時它會達到平庸的程度(例如,關於有效溝通的部分包含商務禮儀的基本規則),但有時書中的建議是不可替代的,特別是如果新手開發人員沒有耐心和細心的導師。這些是關於程式碼可重複性、原型設計、估算的技巧。或提醒我們不可能創建完美的程式。還有一些有用的技術點,例如,與調試程式碼、單元測試或演算法的速度有關……簡而言之,您需要為程式設計師的職業生涯做好準備。

重構改進現有程式碼(Martin Fowler)

原文標題:《重構:改進現有程式碼的設計》,馬丁·福勒 (Martin Fowler) 與肯特·貝克 (Kent Beck) 合著 適合初學者的 10 本程式設計書籍 - 3如果你讓某人列出有史以來最好的職業建設編程書籍,一定有人會提到《重構》。有人可能會說這本書已經過時了,但在某些方面他們是對的。它是在重構還不是普遍規則的時代寫成的,其中的一些真理對於今天有抱負的程式設計師來說是顯而易見的。儘管如此,書中對重構技術的描述非常詳細(在某些地方,我甚至會說,很冗長),每個初學者都會在其中找到有用的東西。幾年前,這本書的更新版本問世並添加了新技術,這很棒。此外,本書中的範例是用 Java 寫的。我可以提到的唯一缺點是冗長。儘管如此,我還是推薦這本書。

乾淨的代碼(羅伯特·馬丁)

原標題《Clean Code: A Handbook of Agile Software Craftsmanship》作者:Robert C. Martin 適合初學者的 10 本程式設計書籍 - 4這本書雖然比上一本更新,但也成為了程式設計書籍的經典。羅伯特·馬丁有時在全球程式設計社群中被稱為“鮑勃叔叔”,他是敏捷宣言以及一些現代“純”程式設計原則(例如 SOLID)的作者之一。這本書的主要主題之一可以被認為是......同理心或只是對每個必須使用你的代碼的人(包括將來的你自己)抱有良好的態度。大多數「乾淨程式碼」規則都是基於這個簡單的原則和常識。大多數規則和建議看起來都非常正確,是那種直觀地在你腦海中盤旋的類型,但要清晰地表述它們並不容易。然而,有人可以反駁作者的一些想法:他有時非常明確。例如,他寫道,好的程式碼不需要註解。儘管如此,這本書還是必讀的。

有效地處理遺留程式碼(Michael Feathers)

原標題《有效地使用遺留程式碼》作者:Michael Feathers 適合初學者的 10 本程式設計書籍 - 5Life 並沒有讓你為此做好準備...不,真的:如果你剛學習,你無法想像使用遺留程式碼庫是多麼痛苦,這可能是比爾蓋茲的祖父寫的。這些程式碼的編寫方式通常與您習慣的程式碼完全不同,而且文件記錄也很差,有時您想找到它的作者……唉:大型專案中的 Java 程式設計師的生活常常與遺留支援相關。這本書可以幫助您了解處理古代程式碼的技術方面,但它也可以幫助您接受自己的命運。是的,我是認真的。如果您堅定地將目光投向擁有大型專案的外包公司或產品公司,那麼本書將對您很有用。

頭先。設計模式(Eric Freeman、Bert Bates、Kathy Sierra、Elizabeth Robson)

原標題《Head First Design Patterns: A Brain-Friendly Guide》作者:Eric Freeman、Bert Bates、Kathy Sierra、Elisabeth Robson 適合初學者的 10 本程式設計書籍 - 6設計模式是那些良好形式的邏輯規則,如果您不長期研究它們,您就會想到這些規則(或不是…),如果你儘早開始研究它們,它實際上會變成新手程式設計師的超能力。是的,一開始嘗試一個相對複雜的個人專案並嘗試自己將其分解為子任務是有用的......並最終找到相同的模式。然而,工作的時候,總是沒有足夠的時間進行實驗。當我得到實習機會時,我對模式知之甚少:在 JavaRush 學習時,我只是簡單地跳過了所有這些工廠、單例、注入、依賴項,以為我會在需要的時候弄清楚它們。不過要很快搞清楚,那就是《Head First》這本書。「設計模式」幫助我解決了這個問題。它寫起來很容易,充滿插圖和幽默……我認為「設計模式」這個主題的呈現非常重要:它可以以一種非常無聊的方式呈現,也可以像《Head First》那樣呈現。對“乾淨程式碼”和/或“重構”的一個很好的補充!

電腦體系結構與通用電腦科學

對於未來的程式設計師來說,了解電腦體系結構、了解作業系統的結構以及資料庫的結構有多重要?事實上,這些知識對你的工作沒有用。但他們一定會幫助您展現您對 IT 領域和 IT 知識的熱情。最重要的是:如果您知道一切是如何運作的,它將幫助您更好地解決問題。資訊100%。所以這裡還有兩本書可以幫助你。

代碼(查爾斯·佩措爾德)

原標題《代碼:電腦硬體與軟體的隱藏語言》作者:Charles Petzold 適合初學者的 10 本程式設計書籍 - 7《代碼》第一版早在2000 年代初就已面世,但事實上它可能出現得更早或更晚- 並且仍然具有相關性。事實上,在這本書中,電腦的操作是在非常非常低的水平上解釋的,從那些零和一的工作原理開始,第一個技術示例是手電筒電路,它可以被認為是最簡單的一台位元計算機……不,你別以為書上的一切都很原始。事實上,恰恰相反……它本質上描述了電腦電路、命令、記憶體操作和作業系統。也許是讀完之後我才明白計算機是如何運作的。儘管處理器的架構和指令集發生了變化,記憶體頻寬增加了,但本質上,電腦的工作原理是完全相同的。Java程式設計師需要這些知識嗎?很少有人在工作中直接需要它們。但間接地,我經常在工作中得到幫助,因為我了解這一切實際上是如何運作的。

電腦科學導論(Glenn Brookshire、Dennis Brilov)

原標題《電腦科學:概述》作者是 Glen Brookshear 和 Dennis Brylow 適合初學者的 10 本程式設計書籍 - 8,這本書是我在大學時想到的,當時我正在學習電腦科學的基礎知識。我只收到了第六版的翻譯,目前是第13版。本書是美國和其他國家大學多年來教授的電腦科學基礎課程。裡面的材料涵蓋面非常廣:機器體系結構、數位系統、資料處理、作業系統、資料庫建構原理、資料結構、檔案結構等等。本書的所有部分並非都寫得一樣好。例如,我曾經對設計方法和資料庫部分感到非常困惑,但數位系統、位元計算、PC體系結構和資料結構部分確實引起了我的共鳴。這本書最酷的地方是大量的按鍵練習。除了學生之外,這樣一本書可能主要是沒有受過技術教育的自學成才的人需要的,以填補空白並總體了解計算機科學。

演算法和資料結構。又是一次攻擊!

鑑於現代程式設計的高階程度,演算法知識已經變得不那麼重要了。現在使用所需的庫就足夠了,而不必絞盡腦汁思考如何最好地對數組進行排序。然而,你仍然需要在工作中絞盡腦汁,而且不只一次。還記得對新手程式設計師的要求中的「能夠選擇最佳解決方案的能力」嗎?因此,無論別人怎麼說,我認為良好的演算法訓練是尋找最佳解決方案的絕佳升級。因此,接下來的兩本書就是關於他們的。關於演算法。

我們正在改變演算法。為程式設計師和好奇的 Aditya Bhargava 提供的圖解指南

原標題: Grokking Algorithms:為程式設計師和其他好奇的人提供的圖解指南 作者 Aditya Y. Bhargava 適合初學者的 10 本程式設計書籍 - 9作者本人在書的開頭寫道,他並沒有立即想到演算法,他試圖寫“Grokking Algorithms”,所以它會很容易閱讀。它是為新手程式設計師設計的,也就是那些會寫「hello,world」並且知道 int、string、loop、branch 和 array 是什麼的人。嗯,它可以在螢幕上顯示數組。所需的數學知識大約是中學6-7年級的水平,沒有任何多餘的裝飾。這是本書的第一個重要優點。它並沒有像許多有關該主題的出版物那樣試圖將讀者想像成數學學生。也就是說,如果你害怕數學、演算法,已經嘗試學習後者但什麼都不懂,那麼這本書非常適合你在你自己眼中的復健。第二個積極的點是,這本書討論了一些在實踐中很可能有用的東西(理解這一點當然是正確的)。它首先解釋了二分搜尋和效率的本質 - 實際上是在手指和許多圖片上。第三,本書包含大量的問題和練習(程式碼範例是Python的,但這不是那麼重要)。對某些人來說可能是正面的,但對其他人來說可能是負面的:這本書並不假裝是一本包羅萬象的參考書。假設在普遍接受的研究演算法中,只有兩種──低效的插入演算法和高效率的快速排序演算法。我不知道為什麼作者不應該考慮其他演算法,例如冒泡或合併。其實書上也提到合併演算法,但很簡單,沒有分析,只是和快速排序比較。對於其他主題,一切都完全相同。有些基礎知識已經涵蓋得很好,但有時你確實想要更深入的延續,但根本沒有。總而言之,這是一本非常基礎的書,讀完之後,您很可能會想要找到一本對所有內容都進行了更認真描述的書。比如下面這個。

Java 演算法(Robert Sedgwick、Kevin Wayne)

原文標題:《演算法》作者:羅伯特‧塞奇威克和凱文‧韋恩 適合初學者的 10 本程式設計書籍 - 10事實上,這本書既令人著迷,又令人恐懼。至少它的頁數和一定的學術性質會嚇跑你。因此,如果你不傾向於它,學術界,或者對數學沒有信心(高中,工程師高等數學的最簡單元素),那麼最好不要從這本書開始。那裡沒有那麼多數學術語,但方法本身就預設了這樣的思考。但在上一本書之後 - 為什麼不呢?她會給你一個指導。第一章有些地方總結了Java的知識,定義了一些資料結構。選擇性地閱讀比較好,但足夠詳細地研究第二章和第三章也無妨。其餘的也充滿了有關圖形和字串的有趣且詳盡的資訊。我想說,這樣的事情對於塑造程式設計思維非常有幫助。關於演講,感覺作者是一位老師,但習慣與大多數有興趣和有準備的人一起工作。所以要有耐心並閱讀。還要解決問題,這裡有很多問題。順便說一下,在 Coursera 上,您可以找到由本書作者創建的演算法課程。

了解你的框架

最後,還有一本書。再說一次——有用。

春天在行動(克雷格·沃爾斯)

原標題:克雷格·沃爾斯(Craig Walls)的《春天在行動》 適合初學者的 10 本程式設計書籍 - 11一本非常著名的書,其封面同樣著名,封面上有一個“穿裙子的男人”,但他實際上並沒有穿裙子。坦白說,僅從一本書中學習 Spring 是一項非常困難的任務,即使您嘗試在實踐中一次嘗試所有內容。順便說一下,讀完這一章或那一章後,要理解如何做到這一點可能非常困難。我在公司實習的時候就接觸過這本書,這樣用起來,很有幫助。而且,即使在今天,我已經成為一名程式設計師,我仍然不斷地回歸它。總之,你可以藉助它的幫助對主要的Java框架有一個大概的了解。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION