-
1 # 美家線上
-
2 # 千鋒武漢
國外知名網站stackoverflow上曾有一個問題調查:哪本書是對程式設計師最有影響、每個程式設計師都該閱讀的書,這個調查吸引了153,432人訪問,讀者共推薦出了478本書,其中最火的一本書已經被頂了1333次。
第一名:1333票《程式碼大全(第二版)》
● 出自著名IT暢銷書作者史蒂夫·邁克康奈爾之手
● 曾被《軟體開發》雜誌授予優異產品震撼大獎
第2版的《程式碼大全》是對第一版完全進行了重寫;增加了很多與時俱進的內容。是一本完整的軟體構建手冊,涵蓋了軟體構建過程中的所有細節。它從軟體質量和程式設計思想等方面論述了軟體構建的各個問題,並詳細論述了緊跟潮流的新技術、高屋建瓴的觀點、通用的概念,還含有豐富而典型的程式示例。
第二名:1181票 《程式設計師修煉之道》
《程式設計師修煉之道》由一系列的獨立的部分組成,涵蓋的主題從個人責任、職業發展,直到用於使程式碼保持靈活、並且易於改編和複用的各種架構技術。利用許多富有娛樂性的奇聞軼事、有思想性的例子以及有趣的類比,全面闡釋了軟體開發的許多不同方面的最佳實踐和重大陷阱。
儘管這本書寫於1999年,但是它的概念是我們以一種務實的態度去開發複雜系統的基礎。程式設計師也是工匠,他們被訓練使用一組特定的工具(編輯器,物件管理,版本跟蹤器)生成某種可在一定環境中(硬體元件上的作業系統)工作的產品(程式)。
第三名:701票《計算機程式的構造和解釋》
以一種對解決問題和程式設計技術分析和嚴謹的態度,這本書面向於工程。這本書進一步解釋了4個最著名的程式語言正規化——指令式程式設計,面向物件程式設計,基於邏輯程式設計和應用性程式設計。
第四名:572票 《C程式設計語言》
在計算機發展的歷史上,沒有哪一種程式設計語言像C語言這樣應用廣泛。本書原著即為C語言的設計者之一Dennis M.Ritchie和著名計算機科學家Brian W.Kernighan合著的一本介紹C語言的權威經典著作。
我們現在見到的大量論述C語言程式設計的教材和專著均以此書為藍本。人們熟知的“hello,World"程式就是由本書首次引入的,現在,這一程式已經成為眾多程式設計語言入門的第一課。對於計算機從業人員來說,《C程式設計語言》是一本必讀的程式設計語 言方面的參考書。
第五名:481票 《演算法導論》
這本書深入淺出,全面地介紹了計算機演算法。對每一個演算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。本書的設計目標全面,適用於多種用途。
涵蓋的內容有:演算法在計算中的作用,機率分析和隨機演算法的介紹。書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似演算法等,還有有關遞迴求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心演算法元素的討論。此書還介紹了對強連通子圖演算法正確性的證明,對哈密頓迴路和子集求和問題的NP完全性的證明等內容。
第六名:478票 《重構:改善既有程式碼的設計》
Martin Fowler寫的《重構Refactoring》主要關於改進現有程式碼的設計。這是一個改變軟體系統而不改變程式碼的外部行為,卻能提高它內部結構的過程。
《重構:改善既有程式碼的設計》(中文版)的核心是一份完整的重構名錄(catalog of refactoring),其中每一項都介紹一種經過實證的程式碼變換手法(code transformation)的動機和技術。某些專案如Extract Method和Move Field看起來可能很淺顯,但不要小看它們,因為理解這類技術正是能否順利進行重構的關鍵。
第七名:447票 《人月神話》
這本書為人們管理複雜專案提供了頗具洞察力的見解,既有很多發人深省的觀點,也有大量的軟體工程實踐。書中的內容來自布魯克斯在IBM公司System 360家族和OS 360中的專案管理經驗。
第八名:440票 中文版《設計模式》
這本書結合設計實作例從面向物件的設計中精選出23個設計模式,總結了面向物件設計中最有價值的經驗,並且用簡潔可複用的形式表達出來。書中分類描述了一組設計良好、表達清楚的軟體設計模式,這些模式在實用環境下特別有用。此書適合大學計算機專業的學生、研究生及相關人員參考。
第九名:394票 《計算機程式設計藝術 (第一卷)》
這又是一部經典之作。由著名的計算機科學家教授Donald Knuth編著,並得到行業內眾多頂尖程式設計師的一致好評。甚至連比爾蓋茨也對這本書讚譽有加
本書第1卷首先介紹程式設計的基本概念和技術,然後詳細講解資訊結構方面的內容,包括資訊在計算機內部的表示方法、資料元素之間的結構關係,以及有效的資訊處理方法。此外,書中還描述了程式設計在模擬、數值方法、符號計算、軟體與系統設計等方面的初級應用。
第10名:364票 《編譯原理》
這本書全面、深入地探討了編譯器設計方面的重要主題,包括詞法分析、語法分析、語法制導定義和語法制導翻譯、執行時刻環境、目的碼生成、程式碼最佳化技術、並行性檢測以及過程間分析技術,並在相關章節中給出大量的例項。與上一版相比,本書進行了全面的修訂,涵蓋了編譯器開發方面的最新進展。每章中都提供了大量的系統及參考文獻。
第11名:329票 《Head First 設計模式》
這本書雖然沒有覆蓋所有存在於這個世界的模式,但是會涵蓋所有你可能需要用於解決現實問題的模式。它將幫助你建立功能性的,優雅的,可重用的和靈活的軟體。大多數關於設計模式的書籍談論的是如何實現模式,但這本書的作者同時還解釋了為什麼以及怎麼樣。
-
3 # 五分鐘學演算法
我就從一個演算法初學者的角度來回答一下吧。
推薦一下「演算法與資料結構」從入門到進階的書單。
一.入門系列
這些書籍透過圖片、打比方等通俗易懂的方法來講述,讓你能達到懂一些基礎演算法,線性表,堆疊,佇列,樹,圖,DP演算法,揹包問題等,不要求會實現,但是看過以下這些書對於之後實現演算法打下堅實的思維基礎。
很適合在閒暇之餘拿出來閱讀一番。
1.1 《啊哈!演算法》
閱讀連結:https://book.douban.com/subject/25894685/
這不過是一本有趣的演算法書而已。和別的演算法書比較,如果硬要說它有什麼特點的話,那就是你能看懂它。
推薦理由: 本書中涉及到的資料結構有棧、佇列、連結串列、樹、並查集、堆和圖等;涉及到的演算法有排序、列舉、深度和廣度優先搜尋、圖的遍歷,當然還有圖論中不可以缺少的四種最短路徑演算法、兩種最小生成樹演算法、 割點與割邊演算法、二分圖的最大匹配演算法等
1.2《演算法圖解》
閱讀連結:https://book.douban.com/subject/26979890/
推薦理由:這本圖解書很容易看懂,不枯燥。書中的前三章將幫助你打下基礎,帶你學習二分查詢、大O表示法、兩種基本的資料結構以及遞迴等。餘下的篇幅將主要介紹應用廣泛的演算法,具體內容包括:面對具體問題時的解決技巧,比如,何時採用貪婪演算法或動態規劃;散列表的應用;圖演算法;K最近鄰演算法。
1.3《妙趣橫生的演算法(C語言實現 第2版)》
閱讀連結:https://book.douban.com/subject/4710825/
推薦理由:理論與實踐相結合,旨在幫助讀者理解演算法,並提高C語言程式設計能力,培養讀者的程式設計興趣,並鞏固已有的C語言知識。
1.4《趣學演算法》
閱讀連結:https://book.douban.com/subject/27109832/
推薦理由:非常好的一本書,圖解多,思路清晰,不僅講了問題分析演算法設計的過程,還講了如何最佳化演算法,使讀者體驗演算法的奧妙
1.5《大話資料結構》
閱讀連結:https://book.douban.com/subject/6424904/
推薦理由:文中附有大量插圖,適合對大段文字提不起興趣的朋友。以一個計算機教師教學為場景,講解資料結構和相關演算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一些經典演算法做到逐行分析、多演算法比較。與市場上的同類資料結構圖書相比,本書內容趣味易讀,演算法講解細緻深刻,是一本非常適合自學的讀物。
1.6 《學習演算法思想 修煉程式設計內功》
慕課網連結:https://coding.imooc.com/class/71.html
二.基礎系列
透過基本入門演算法書的調教,你已經逐漸體會到了演算法的魅力,現在正是時候去閱讀基礎系列踏入演算法的領域!!!
這些書籍需要你費點心思去閱讀。
2.1《演算法導論中文版》
閱讀連結:https://book.douban.com/subject/20432061/
排在基礎系列第一的位置應該沒意見吧:)
2.2《資料結構與演算法 Java版》
閱讀連結:https://book.douban.com/subject/21519616/
適合想透過Java語言來學習演算法的小夥伴們。
推薦理由:本書把演算法分析與最有效率的Java程式的開發有機地結合起來,深入分析每種演算法,內容全面、縝密嚴格,並細緻講解精心構造程式的方法。
2.3《資料結構與演算法:Python語言描述》
閱讀連結:https://book.douban.com/subject/26702568/
適合想透過Python語言來學習演算法的小夥伴們。
推薦理由:本書基於Python語言介紹了資料結構與演算法的基本知識,主要內容包括抽象資料型別和Python面向物件程式設計、線性表、字串、棧和佇列、二叉樹和樹、集合、排序以及演算法的基本知識。本書延續問題求解的思路,從解決問題的目標來組織教學內容,注重理論與實踐的並用。
2.4《學習JavaScrit資料結構與演算法(第2版)》
閱讀連結:https://book.douban.com/subject/26639401/
適合想透過JavaScrit語言來學習演算法的小夥伴們。
推薦理由:本書首先介紹了JavaScript語言的基礎知識,接下來討論了陣列、棧、佇列、連結串列、集合、字典、散列表、樹、圖等資料結構,之後探討了各種排序和搜尋演算法,包括氣泡排序、選擇排序、插入排序、歸併排序、快速排序、順序搜尋、二分搜尋,還介紹了動態規劃和貪心演算法等常用的高階演算法及相關知識。
2.5《資料結構與演算法分析:C語言描述(原書第2版)》
閱讀連結:https://book.douban.com/subject/1139426/
適合想透過C語言來學習演算法的小夥伴們。
推薦理由:在本書中,作者更加精煉並強化了他對演算法和資料結構方面創新的處理方法。透過C程式的實現,著重闡述了抽象資料型別的概念,並對演算法的效率、效能和執行時間進行了分析。
2.6《資料結構與演算法分析:C++描述(第3版)》
閱讀連結:https://book.douban.com/subject/1971825/
適合想透過C++語言來學習演算法的小夥伴們。
推薦理由:這是是資料結構和演算法分析的經典教材,書中使用主流的程式設計語言C++作為具體的實現語言。
三.進階系列
掌握了一定的資料結構與演算法的知識,現在你已經是一名合格的程式設計師了。但如果你想要參加面試,那就需要閱讀以下書籍進行準備了。
這些書籍需要你花費時間和精力去仔細閱讀,但為了漲薪,值得!
3.1 《劍指Offer:名企面試官精講典型程式設計題(第2版)》
閱讀連結:https://book.douban.com/subject/27008702/
我想,只要是程式設計師應該都聽說過這本書吧,哪怕你沒看過。
推薦理由:《劍指Offer:名企面試官精講典型程式設計題(第2版)》剖析了80個典型的程式設計面試題,系統整理基礎知識、程式碼質量、解題思路、最佳化效率和綜合能力這5個面試要點。
3.2《演算法謎題》
閱讀連結:https://book.douban.com/subject/25805152/
推薦理由:演算法是計算機科學領域最重要的基石之一。演算法謎題,就是能夠直接或間接地採用演算法來加以解決的謎題。求解演算法謎題是培養和鍛鍊演算法思維能力一種最有效和最有樂趣的途徑。
3.3《程式設計之法 面試和演算法心得》
閱讀連結:https://book.douban.com/subject/26641732/
推薦理由:本書涉及面試、演算法、機器學習三個主題。書中的每道程式設計題目都給出了多種思路、多種解法,不斷最佳化、逐層遞進。
四.工作系列
適合已經工作的程式設計師閱讀,可以提升你的思維廣度,也可以在面試前翻一翻。
4.1《程式設計珠璣(第2版•修訂版)》
閱讀連結:https://book.douban.com/subject/26302533/
歷史上最偉大的計算機科學著作之一!!!
推薦理由:融深邃思想、實戰技術與趣味軼事於一爐的奇書,帶你真正領略計算機科學之美。
4.2《程式設計師實用演算法》
閱讀連結:https://book.douban.com/subject/3923731/
推薦理由:《程式設計師實用演算法》重點關注的是實用、立即可用的程式碼,並且廣泛討論了可移植性和特定於實現的細節。《程式設計師實用演算法》作者介紹了一些有用但很少被討論的演算法,它們可用於語音查詢、日期、B樹和索引檔案、資料壓縮、任意精度的算術、校驗和與資料驗證,並且還最全面地介紹了查詢例程、排序演算法和資料結構。
4.3《程式設計之美》
閱讀連結:https://book.douban.com/subject/3004255/
推薦理由:這本書收集了約60道演算法和程式設計題目,這些題目大部分在近年的筆試、面試中出現過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。
五.大佬系列
適合大佬們踏入的領域,小吳膜拜中。
5.1《資料探勘原理與演算法》
閱讀連結:https://book.douban.com/subject/2341863/
推薦理由:內容覆蓋面最廣,除了所有書都有的內容外,還包括FOIL演算法和空間資料探勘等。
5.2《集體智慧程式設計》
閱讀連結:https://book.douban.com/subject/3288908/
推薦理由:非常實用的寶典,看了這本書,如果有工具,可以解決大部分問題。
End
當你計劃開始學習一門課程、閱讀一本經典教材時,請先明確你要期望達到的目標。具體來說,就是問自己一個問題:
我期望從這本書中收穫哪些東西?
不同的課程、不同的書籍,期望的目標應該是不一樣的,並且是越具體越好。
比如看上面的入門系列,可以抱著娛樂的心態在業餘時間看看。而看基礎系列,就要規劃好一段時間,邊看邊做筆記。
推薦一個金老師的學習方法給小夥伴們:多遍掃描法。
第一遍是略讀,把一本書從頭翻到尾,快速地閱讀,不深鑽細節,只看背景、結論和實際應用,即使遇到看不懂的地方也不要停下來,繼續看下去,這一遍的目的是讓你對這本書有一個總體上的印象。基於這個印象,你就能確定全書哪裡難,哪裡易,哪裡是重點,這樣就能制定下一步的攻讀策略。
第二遍則是“細讀”與“攻讀”,選擇你感興趣的,感覺最重要的內容慢慢地讀,可以採用一些行之有效的閱讀手段(比如記要點然後嘗試回顧、繪製思維導圖等)吸收書中的知識。對於難點,關鍵是弄明白為什麼你看不懂(數學公式看不懂?關鍵術語不明白?翻譯有問題?),你就能對症下藥了,比如本書寫得太抽象,可以先看看比較淺顯的科普類書籍,之後再回過頭來再看,或者找幾本不同作者寫的類似的教材對照著看……
上述過程可能需要重複幾次。並且可能前後兩次之間會間隔一個較長的時間。
人學習特定領域的知識需要一個過程,並且需要反覆的。
所以要耐心,學習是很少有可能畢其功於一役的。
簡單推薦了一些我比較喜歡的書籍,如果都能看完看懂且科學的總結外加合理的實踐,相信未來你的技術路會更好走,當然BATJ這些的Offer也不在話下。
除了多看點技術書,你覺得還有什麼能拿出來和985,211的朋友比呢?
與君共勉:)
-
4 # 網際網路金融技術
《程式設計師的自我修養》
《頸椎病修復大法》
《腰間盤突出如何治療》
《活著》
回覆列表
程式大致可以分前端和後端的。
前端一般指網頁網站這些給人視覺方面畫面顯示的開發。後端一般指程式的開發。兩者有著截然不同的邏輯 也是兩個發展方向。
相對而言,前端看似簡單一些吧,後端程式開發的話,邏輯思維一定要強,最基本的要數學好,需要學理工科,英語水平也是需要的。
孩子現在還小,首先看看孩子的興趣吧。我建議不妨帶孩子下下棋,看看佈局能力怎樣。或者做一些樂高之類的,孩子感興趣的動腦動手的遊戲吧。從遊戲中培養孩子的興趣,以後再決定是否要成為程式設計師,那時候再定學什麼也不遲。因為也許現在最先進的程式語言,幾年以後也有被淘汰的可能性呢。
以上純屬個人意見,僅供參考哦。