這些年計算機學生路總結資料
四年的本科,三年的研究生算是過來了,在計算機學習這條路上也走了很多的彎路。總結了一下好的資料、信息和方法,不敢說有什么指導意義,只是給還沒畢業的學生做個參考。
博主屬于路子鋪的比較廣的那種,玩過開發板、研究過系統內核、改過瀏覽器內核、寫過網站、弄過機器學習畢設又轉過頭去做網絡了,所以沒有什么特別精通的方向。不過好在基礎面鋪的比較廣,各個方面都能和人聊兩句,所以這里也就給一些打基礎的參考。
參考書
過來人都知道,學計算機只靠上課那些內容是遠不夠的,而有些網站推薦的程序員必讀系列感覺有點坑,而且沒有什么針對性,純粹是別人說好我也來捧的感覺。博主這里推薦的都是看完過,而且確實有實際作用的書,盡量去除掉神話光環。
以下是基礎篇
這本書來回讀了三遍,每次都有很大收獲。說到底這只是一本導論性質的書,不像坊間流傳的那么傳奇,畢竟也只是 CMU 本科生的一門計算機基礎性質的課。不過看完后確實能對整個計算機系統從底層編碼到上層開發產生一個清晰的脈絡,課后的習題每道都很有意義,作為一部教材, 確實讓人讀起來賞心悅目。北大這邊已經將這本書作為必修課的教材,當時知道的時候我還是很為學生們開心的,當然學生們普遍反映很虐。
博主從前是個算法渣,當然現在也強不到哪去。但是我一直感覺推薦《算法導論》甚至《TAOCP>是 毫無誠意的做法。上述兩本書一本是字典性質的,另一本就是辭海性質了,看字典和辭海是要鬧哪樣。《算法引論》這本書主要講的是如何設計算法,開篇介紹了高 中學的數學歸納法,然后通過歸納法告訴你其他的算法是怎么設計出來的。讀了這本書很多原來不熟悉的算法都能推導出來了,尤其是動態規劃類的題歸納法簡直是 大殺器。博主之前看過兩遍算法導論都是迷迷糊糊,看完算法引論后感覺突然算法開竅了,再看其他算法都清晰了很多。
雖說博主是所謂軟件工程國家重點實驗室的人,但是真正和軟工領域相關的書只有兩本能讀下來且覺得有意義。(另一本是《人月神話》也 推薦大家讀一下)軟工的書很容易寫的無聊,這本書的優點就是不無聊。個人感覺設計模式主要是針對對面向對象編程尤其是 Java 的,能夠構建出比較高質量的代碼,在面電商的時候幾乎都碰到設計模式類的問題了。而且真正看下去,感覺這個東西確實是有意義的。很多人推薦另一本書《設計模式:可復用面向對象軟件的基礎》,但是由于讀了幾次都沒讀下去就不推薦了,感興趣的同學可以試一下。
這是一本實用的 Linux 入門基礎教程,盡管里面作者的一些觀點有些偏激而且說話太啰嗦了……,但是教的東西都是實打實的。可以減少很多自己摸索的痛苦,對命令行不那么恐懼,不過要注意的就是有些東西已經過時了。
以下是 C++ 篇
不夸張的說是看完這本書才會寫程序的,很多人覺得上手用這本書太難,我當時是課上學過C來看的,感覺講的比較基礎難度沒有很大。外國書沒那么多 tricky 類的問題,中規中矩介紹語言,并且融合了軟工的一些內容,看完了對編碼的幫助還是很大的。
是我看過的 C++ 相關收獲最大的一本書。很多人根據有沒有讀過這本書來把 C++ 程序員劃分為兩類,這點我就覺得有點過了。這本書很大的一個作用就是掃雷,把 C++ 的雷坑一個個挖出來給你看,告訴你應該怎么繞過去,讀之前我都不知道居然有這么多坑。此外也提供了很多軟工方面的建議,通過這些建議來幫助程序員寫更好的 代碼掉更少的坑。這本書還有續集《More Effective C++》,續集偏設計模式一些了,感覺沒有上一代那么有啟發意義,不過還是值得一看。
由于 C++ 的坑太多了,就專門有一本探坑的書,這本書介紹了 C++ 的具體實現告訴大家坑是怎么來的,這本書也被譽為是 C++ 進階級程序員必讀。但這本書本身也是個大坑,原作挖了一堆坑,侯捷老爺子翻譯的時候填坑也沒填完還又挖了新坑。看這本書很有意思的一點就是看到批注里有老 爺子指出原作者哪里又錯了。這本書確實對理解 C++ 有著一劑猛藥的作用,看完了再看 C++ 感覺都不太一樣了,面試時問到的奇葩問題也都能和面試官侃了。但是有一個問題是 C++ 的標準里并沒有規定實現標準,所以這本書里介紹的實現模型其實在不同編譯器里是不一樣的,而且這本書里介紹的一些實現和現在已經不一樣了,所以這本書還是 個大坑。可以眺,但也不要太認真。
以下是 Python 篇
Python 相關的書看過一些,但是都乏善可陳,而且內容都比較陳舊,官方的文檔反而寫的很不錯,尤其是 HOWTOs 部分,看得很過癮。本來想把 Library 部分加上的,但是鑒于我還沒讀完,就算了。有余力的同學可以看一下 Library 部分的文檔,你會發現很多 Python 不優雅,不直觀的地方。而且看 Library 的過程中還能順便把計算機的基礎知識都過一遍。如果是完全沒有什么編程經驗的同學直接看文檔可能會有些苦難,(后方夾帶私貨,高能預警)可以看我做的一個 Python 基礎教程。
以下是其他雜項
已經出第六版了,雖說比較厚,但是內容都很扎實,前面是數據庫基礎知識包括 SQL,后面是數據庫系統的設計實現,講的很全面,用數據庫開發數據庫都能獲得收獲。
廣度還不錯的一本書,圖真的很多,不過深度略差。主要好在內容比較新,無線,IPV6 等最新技術都有涉獵。誰讓《TCP/IP 詳解》系列還是 94 年的東西,內容太陳舊了呢。不過最近貌似出第二版了,但是沒有看過,有興趣的同學可以去看看。
另一種視角來看字符串處理,還是很顛覆原來思想的。
為了不讓書單太長就不加了,博主看過的書可以參考豆瓣書單里 面大部分的書都是上了研究生后才開始看的(本科四年荒廢過去了)。所以告訴大家這些書還是能看完的,可能一開始看會很慢,比如我最初看《深入理解計算機系 統》就看了兩個多月,不過之后基礎好了再看別的書會很快的,只要能保持看書的習慣,看完還是沒那么痛苦的。當然這些書也只是個基礎,不要指望他們能讓你功 成名就。
視頻網站
上面的書很多都是偏理論的,而且內容比較老,這幾年的一些新技術其實主要還是靠看博客和看視頻來學習的。視頻網站主要推薦兩個:
大名鼎鼎的 Coursera,里面的東西也相對偏理論,不過好處是都是很新,前沿的理論,老師的教學質量很好(發現最近有些新課程質量在下滑,不過北美名校的質量還 不錯)。博主數據挖掘,機器學習,統計類的知識都是在這上面學到的。不過真正完整拿到結業的只有 Machine Learning 和 Critical Thinking。因為很多學的時候并沒有當期的課,不過學完后和一些高數據挖掘的同學聊天發現居然都能聽懂。
這個就是純技術應用的視頻網站了,手把手教你做網站,P圖,搞設計,開發應用。教學質量高的嚇人,看過幾個課程完全就被專業的教學震驚了,當然課程是收費的。在中國你是能找到一些免費的,不過課程都比較老了。如果幾個人共用一個賬號的話,我感覺這些錢還是相當值的。
資訊類
干 IT 這行,最新的咨詢流是很必要的,但是過多的信息又容易讓人煩躁,所以如何管理好自己的 Timeline 就很重要了。關于 Timeline 的管理可以參考如何“修剪”知乎上的 timeline?。連知乎這樣曾經高質量的社區都水了,可以想象沒有不水的地方了,不過我們還是能做到讓自己的 Timeline 不水的。下面是我關注的一些新聞源和博客,都是可以 RSS 訂閱的:
Oilbeater (夾帶私貨,高能預警)
前面提到的每天都不會有很多,而且干貨比較多,質量還不錯。
reddit 重點提一下 reddit,是我主要的外文資源的獲取地,可以去里面搜索你感興趣的專題,然后訂閱那個專題的咨詢,我現在就訂閱了 python 和 django 兩個。如果你不是很確定的話可以試一下 programming 板塊,每天會有將近 100 的量,空閑時間很多的話可以挑戰一下。如果還是能看完的話就試一下 HackNews 吧。
如果大家有什么好的資訊或者博客源的話希望也能賞我幾個。
微博上多關注幾個大牛也能獲得很多新鮮的知識,推薦幾個(當然也可先關注 Oilbeater,再順著我的關注走,我的關注還是比較少的): InfoQ,我愛機器學習,IT 技術博客大學習,DataScientist,灣區評論,何_登成,程序員的那些事)
在強調清洗 Timeline 的重要性,取消關注一定取消,絕對不能手軟,不然到最后 Timeline 里就全是男默女淚、不轉不是中國人、成功人士的n個方法的雞湯聚集地。同時要警惕那些只知道站隊沒有實際內容的人,現在越來越不喜歡知乎的一個原因就是發 現不管什么問題站隊的回答總能頂到最高,實際的回答反而被忽視。所以要讓自己的 Timeline 少一些站隊的消息。
關于項目和實習
其實很多人夸大了實習和項目的作用,我的感覺項目和實習的名頭不是那么重要,重要的是你做了什么事情,能不能拿出一個讓人看到覺得還可以的東 西。博主去大公司實習過感覺大公司學到的更多的是流程管理類的東西,真正做出來的東西可能并不是那么重要。所以如果不是直接找工作的實習的話推薦去個小公 司,或者創業公司,至少能做出一個像樣的東西。項目也是類似的,重要的是做出一個能拿出手的東西,論文專利什么的其實都是比較虛的東西。自己做出一些東西 改變一下這個世界一點點,感覺還是很好的,比如說寫博客。
總結
打好基礎,清理 Timeline,做有用的東西,僅供參考,歡迎拍磚。
<span id="shareA4" class="fl">
</span> </div>