這本CS入門書只有150頁,卻在美亞收穫4.4星好評

當計算機和極客們正以前所未有的力量改變著世界時,一門新的學科也隨之產生,那就是計算機科學。

停!先不要被這個名詞嚇跑!因為上一次你被嚇跑還是在大學,枯燥的理論讓你昏昏欲睡。如此沒意思導致一部分程序員至今從未仔細研究過它。

隨著工作的深入,一些人開始意識到這些底層知識的重要性。但是繁忙的工作導致程序員們沒有時間、更沒有興趣去研究這門學科。為了更好地利用計算機解決問題,充分地發揮計算機的潛能,我們還是要小小研究一下的。

什麼是計算機科學?維基百科上這樣描述!(然而,並沒有人感興趣,但還要循例介紹下!)

計算機科學(英語:computer science,有時縮寫為CS)是系統性研究信息與計算的理論基礎以及它們在計算機系統中如何實現與應用的實用技術的學科。它通常被形容為對那些創造、描述以及轉換信息的算法處理的系統研究。計算機科學包含很多分支領域;有些強調特定結果的計算,比如計算機圖形學;而有些是探討計算問題的性質,比如計算複雜性理論;還有一些領域專注於怎樣實現計算,比如編程語言理論是研究描述計算的方法,而程序設計是應用特定的編程語言解決特定的計算問題,人機交互則是專注於怎樣使計算機和計算變得有用、好用,以及隨時隨地為人所用。

其實,計算機科學涉及了很多方面,可以說它研究的是一些非常底層的東西,同時還涉及了數學方面的知識。有人會說學這個浪費時間,其實也不能說他有錯,因為這些知識要花上一些時間去積累,短時間內可能看不到效果。不過你在大學時一定聽過這樣的話,一定要學好數據結構、操作系統、編譯原理等課程,這些看似枯燥的理論知識會決定我們分析問題的深度,最終也會導致同樣的工作,懂原理的人和不懂的人做出來的東西可能是不一樣的。

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

正如喬幫主所說:“每個人都應該學習計算機編程,因為它教會你如何思考。”套用一下就是,每個人都應該學習點計算機科學知識,因為它可以幫你實現高效的程序設計。

這裡給大家介紹一本“網紅”書,英文原版美亞 4.4 星好評,好懂程度五顆星!

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

同款中文版已經上市。如果你正在從事編程但卻欠缺計算機科學背景,可以用這本書填補一下這方面的空白。

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

其實一些涉及到理論的圖書向來不受大家歡迎。一方面,讀者會覺得內容很枯燥,另一方,大家心裡認為這些理論沒有什麼實際用處。

而這本書風格上跟圖靈出版的暢銷算法書《算法圖解》有些類似,沒有教材裡難懂的理論,僅用 150 頁濃縮了你應該知道的常用計算機科學知識,加上萌萌的配圖,讀起來零壓力,基本一天就可以搞定。

作者也在書中用了一些生活化的例子為我們闡述了一些必備的理論知識。

比如:整理 26 張洗過的撲克牌你需要多久時間?整理 52 張牌的時間是否兩倍於此?整理 1000 副牌又要花多長時間?

理牌所用的方法是固有的。方法是實現目標所需的一系列明確指令,而算法是包含一系列有限運算的方法。例如,理牌算法就是一種方法,它指定了按花色與點數對 26 張牌排序所需的運算。

運算越少,所需的計算能力越少。如果希望縮短求解時間,就要監控算法的運算次數。當輸入規模增長時,許多算法的運算次數將迅速增加。仍以理牌算法為例,利用它排序 26 張牌無須進行太多運算,但排序 52 張牌所需的運算量將 4 倍於此。所以在問題規模增長時,為避免算法的性能下降,我們需要研究其時間複雜度。時間的估算尤為重要。

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

再比如:推銷員必須到訪 n 座給定的城市,並在旅程結束時回到出發地。哪種旅行計劃能使旅行的總距離最短?

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

即便只有少量城市,需要考慮的城市排列也會達到相當驚人的數量。為涉及幾千座城市的旅行推銷員問題尋求最優解耗費極其昂貴,或根本無法實現。 但我們仍然需要找到一條路線,一種簡單的貪心算法如下所示。

(1) 到訪最近一座未曾到訪過的城市。

(2) 重複上述步驟,直至到訪所有城市。

讀者小夥伴們能否找到比貪心法更好的啟發法呢?

要知道這也是計算機科學家一直致力於研究的一個問題呢~

大家都知道搜索是我們學習算法中很重要的一環,你一定聽過這兩種搜索方法,層層推進的廣度優先搜索(BFS)以及不見棺材不落淚的深度優先算法(DFS)。

如何在圖中查找到某個點呢?

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

左邊採用深度優先搜索與右邊採用廣度優先搜索對圖進行遍歷

深度優先搜索(DFS)沿著圖的邊逐漸深入,當到達某個與任何新結點都沒有邊相連的結點時,就返回前一個結點並繼續上述過程。棧用於跟蹤搜索路徑:探索到結點時將其壓入棧中,並在需要返回時從棧中彈出結點。

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

如果無法發起深度優先搜索,也可以嘗試使用廣度優先搜索(BFS)。它逐層對圖進行探索:從起始結點的相鄰結點開始,然後是相鄰結點的相鄰結點,以此類推。隊列用於跟蹤訪問的結點。完成某個結點的探索後,我們將它的子結點插入隊列,然後取出下一個結點進行探索。

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

請注意,DFS 與 BFS 僅在下一個待探索結點的存儲方式上有所不同:DFS 使用棧,而 BFS 使用隊列。

那麼應該使用哪種搜索方法呢?DFS 更容易實現,消耗的內存也更少,因為只需存儲指向當前結點的父結點。與之相反,BFS 需要存儲搜索過程的整個邊界。如果圖包含數百萬個結點,BFS 或許並不可行。

如果正在搜索的結點可能距離起始結點不遠,那麼選擇成本較高的 BFS 較為划算,因為 BFS 有助於更快地找到指定結點。如果需要探索圖的全部結點,則最好堅持使用 DFS,因為它易於實現且內存佔用更少。

那如果你像他一樣選擇深度優先搜索,那你可能要錯過和妹紙的約會了!

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

當然,以上這些也只是書中的一小部分內容。作者在書中還很“貼心”地教會我們如何寫出有說服力的簡歷。有這麼貼心的作者,也難怪這本會收到 4.4 星的好評。如果你想試試的話,記得告訴我結果~

這本CS入門書只有150頁,卻在美亞收穫4.4星好評

《計算機科學精粹》

Computer Science Distilled

作者:Wladston Ferreira Filho

  • 適合所有人閱讀,計算機科學並非只和學者有關學習如何把問題轉換為可計算的系統,在生活中應用計算思維拒絕乏味學術概念,通俗講解計算機科學領域重要知識點技術人員查漏補缺參考資料,普通讀者啟蒙入門不二讀本推動讀者高效地使用計算機

本書面向所有對計算機科學感興趣的讀者,以淺顯易懂的語言和簡明扼要的形式介紹計算機科學領域的重要知識點,儘量少涉及學術概念,著力將抽象理論具體化,複雜問題簡單化,既適合計算機專業技術人員查漏補缺基本理論,也適合普通讀者瞭解計算思維。

作譯者簡介

作者:Wladston Ferreira Filho 程序員,現任職於 Code Energy。極簡主義者。熱衷於學習各種編程語言。

譯者:蔣楠,畢業於電子科技大學、維多利亞大學。多年來致力於 Web 開發與軟件架構設計,對算法、數據密集型應用、分佈式數據庫系統興趣濃厚。非資深程序員,嚴肅馬拉松跑者。

目錄一覽

第 1 章 預備知識 .................. 1
1.1 想法 ............................ 1
1.2 邏輯 ........................... 5
1.3 計數 ....................... 13
1.4 概率 ..................... 19
1.5 小結 ......................... 22
第 2 章 複雜度 ...................... 23
2.1 時間計算 ........................ 25
2.2 大 O 符號 ........................ 28
2.3 指數 ............................ 29
2.4 內存計算 ................... 30
2.5 小結 ............................ 31
第 3 章 策略 ..................... 33
3.1 迭代 ......................... 33
3.2 遞歸 ......................... 36
3.3 蠻力法 .................... 38
3.4 回溯法 .......................... 40
3.5 啟發法 ...................... 43
3.6 分治法 ............................ 46
3.7 動態規劃 ........................... 51
3.8 分支定界法 .................. 54
3.9 小結 ........................ 58
第 4 章 數據.................... 59
4.1 抽象數據類型 ....................... 60
4.2 常見抽象 ............................... 62
4.3 數據結構 ....................... 65
4.4 小結 ...................... 75
第 5 章 算法 .................. 77
5.1 排序 .......................... 77
5.2 搜索 ........................79
5.3 圖 ............................... 80
5.4 運籌學 .......................... 86
5.5 小結 ......................... 89
第 6 章 數據庫 ..................... 91
6.1 關係數據庫 ...................... 92
6.2 非關係數據庫 ................... 99

6.3 分佈式數據庫 .................... 104
6.4 地理數據庫 .................... 107
6.5 序列化格式 ..................... 108
6.6 小結 ....................... 109
第 7 章 計算機 ..................... 111
7.1 體系結構 .................... 111
7.2 編譯器 ...................... 118
7.3 存儲器層次結構 ................... 125
7.4 小結 ..................... 131
第 8 章 程序設計 .................... 133
8.1 語言學 ........................ 133
8.2 變量 ...................... 136
8.3 範式 .......................... 138
8.4 小結 ................. 145


分享到:


相關文章: