自學(xué)編程。。。
最近有不少朋友后臺(tái)咨詢該如何自學(xué)編程,正好最近有時(shí)間,就整理了一下自學(xué)編程的路線,全文3000多字,看完有幫助的話記得幫廠長收藏轉(zhuǎn)發(fā)一下,下面進(jìn)入正題:
如果是零基礎(chǔ)入行計(jì)算機(jī)的話,建議先對(duì)這一行增加點(diǎn)背景知識(shí)了解,這方面目前最好的讀書是吳軍老師的《浪潮之巔》,見解非常獨(dú)到。如果是想要根據(jù)時(shí)間線來了解一下的話,可以看一下《硅谷百年史》,了解背景知識(shí)看這兩本書差不多就夠了。
然后接下來的一步比較重要,就是正式學(xué)習(xí)計(jì)算機(jī)專業(yè)知識(shí),到這里很多人就會(huì)有困惑,自學(xué),從哪里入手?上培訓(xùn)班,似乎很直接,但是很費(fèi)錢;自己找書看,又不知道看哪些書。
我個(gè)人的建議是看書、上課、和實(shí)踐相結(jié)合,三管齊下,缺一不可。
學(xué)編程最重要的就是要理論和實(shí)踐想結(jié)合,兩方面都需要兼顧好。不然,編程能力不會(huì)有真正提高。
所以我從三個(gè)方面來講一下,先是書籍推薦,再是網(wǎng)課選擇,最后是練習(xí)平臺(tái)。
1、書籍推薦
1.《深入理解計(jì)算機(jī)系統(tǒng)》(CSAPP)

這是一本很基礎(chǔ)的書,涵蓋了計(jì)算機(jī)組成原理,操作系統(tǒng),體系結(jié)構(gòu),網(wǎng)絡(luò)編程,并行程序設(shè)計(jì)原理等課程的基礎(chǔ)知識(shí)。無論是處于哪個(gè)階段的同學(xué),這部書都是必備的。正如此書開篇作者所言“如果你全心投身學(xué)習(xí)這本書中的概念,完全理解底層計(jì)算機(jī)系統(tǒng)以及它對(duì)應(yīng)用程序的理解,你會(huì)步上成為為數(shù)不多的大牛之路”。
2.關(guān)于編程語言
到底哪種編程語言是世界上最好的語言是程序員永遠(yuǎn)無法達(dá)成一致的世界難題。我結(jié)合自身七年的學(xué)習(xí)經(jīng)驗(yàn)以及針對(duì)當(dāng)前社會(huì)的需求,給大家推薦三門編程語言(C++/Java/Python)以及相關(guān)的書籍。
1)《C++ Primer》

這是一本久負(fù)盛名的C++經(jīng)典教程。無論是初學(xué)者入門,或是中/高級(jí)程序員提升,這本書都是不容置疑的首選!??!
2)《Java編程思想》

這本書贏得了全球程序員的廣泛贊譽(yù),即使是最晦澀的概念,在作者的文字和示例面前都迎刃而解。從Java的基礎(chǔ)語法到最高級(jí)特性,這本書都可以指導(dǎo)你一步步的輕松的去理解和掌握!這本書小編我在大二學(xué)了一整年,學(xué)完之后真的完成了質(zhì)的飛躍!親身體驗(yàn),非常推薦給大家!
3)《Fluent Python》

近兩年我用的編程語言就是python?,F(xiàn)在網(wǎng)絡(luò)上對(duì)于python的教材真的是五花八門,內(nèi)容過于重復(fù)和繁瑣,對(duì)我們幫助并不大。關(guān)于這本書我可以很果斷的說,這是世面上關(guān)于python最好的書!并且真是書的風(fēng)格特別友好,讀的時(shí)候你會(huì)感覺一個(gè)博學(xué)但是溫柔的大叔再跟你侃侃而談。
3.數(shù)據(jù)結(jié)構(gòu)與算法分析
掌握了最基本的編程語言,就該學(xué)習(xí)更高級(jí)的知識(shí)了,也是程序員核心知識(shí)——數(shù)據(jù)結(jié)構(gòu)與算法分析。只有掌握了這些,才可能寫的更好更高效的程序,才能將語言更好地用于實(shí)際問題的解決。當(dāng)然,這部分知識(shí)也是比較難學(xué)的。接下來給大家推薦三本我認(rèn)為非常好的三本相關(guān)書籍。
1)《我的第一本算法書》
這本書是京都大學(xué)一個(gè)計(jì)算機(jī)教授和朋友聯(lián)合出品的動(dòng)畫講解算法的App 所衍生出來的書籍,非常適合新手朋友們。里面沒有枯燥的理論和復(fù)雜的公式,而是通過大量的步驟圖幫助讀者加深對(duì)數(shù)據(jù)結(jié)構(gòu)原理和算法執(zhí)行過程的理解,便于學(xué)習(xí)和記憶。將本書作為算法入門的第一步,是非常不錯(cuò)的選擇。

2)《算法圖解》
這是一本像小說一樣有趣的算法入門書,示例豐富,圖文并茂,以讓人容易理解的方式闡釋了算法,旨在幫助程序員在日常項(xiàng)目中更好地發(fā)揮算法的能量。書中的前三章將幫助你打下基礎(chǔ),帶你學(xué)習(xí)二分查找、大O表示法、兩種基本的數(shù)據(jù)結(jié)構(gòu)以及遞歸等。余下的篇幅將主要介紹應(yīng)用廣泛的算法。

3)《算法導(dǎo)論》
emmmmm這本書真的是算“圣書”了,如果把它從頭到尾看完并且搞明白了,那么恭喜你,月入百萬不是夢!

2、網(wǎng)課選擇
課程的話,最重要的就是下面六門課:
數(shù)據(jù)結(jié)構(gòu)與算法,
計(jì)算機(jī)組成原理,
計(jì)算機(jī)操作系統(tǒng),
計(jì)算機(jī)網(wǎng)絡(luò),
數(shù)據(jù)庫系統(tǒng)。
上面的這六門課,無論你是將來找工作,讀研,還是讀博,都是最最重要的。而且學(xué)習(xí)的順序就是上面的這樣。
1. 數(shù)據(jù)結(jié)構(gòu)與算法
推薦看斯坦福的算法課,教程用的是《算法導(dǎo)論》,這門算法則基本不涉及到語言層面,主要是算法層面,講得很好。
https://www.bilibili.com/video/av21620553

組成原理與操作系統(tǒng)的話,強(qiáng)烈推薦去看下面這兩位老師的課,B站上面有完整的視頻,保證不水!
1. )2020 南京大學(xué) 操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn) (蔣炎巖) https://www.bilibili.com/video/BV1N741177F5
南大的課質(zhì)量真的硬, 蔣炎巖老師講的是真滴好啊,把晦澀的東西講的也非常的通俗易懂,豁然開朗,很多同學(xué)都是慕名而來,看完這個(gè)也算上過南大的操作系統(tǒng)啦 哈哈哈。

2.) 操作系統(tǒng)(哈工大李治軍老師) https://www.bilibili.com/video/BV1d4411v7u7
個(gè)人覺得是 b 站上很不錯(cuò)的操作系統(tǒng)課程了,這門課的前幾講涉及 OS 啟動(dòng),需要一點(diǎn)匯編知識(shí),不過遇到不會(huì)的直接網(wǎng)上搜即可,大可不必因?yàn)閰R編而被勸退;之后的內(nèi)容如多進(jìn)程、信號(hào)量、內(nèi)存管理等講得很好。

3.)計(jì)算機(jī)網(wǎng)絡(luò)微課堂 https://www.bilibili.com/video/BV1c4411d7jb
這個(gè)網(wǎng)課驚艷的地方在于,老師的話語沒什么廢話,基本都是知識(shí)要點(diǎn),更重要的是他動(dòng)圖非常多,他動(dòng)圖非常多,他動(dòng)圖非常多,他動(dòng)圖非常多?。?!所以非常適合小白入門學(xué)習(xí),不能再生動(dòng)形象!

3、最后來說說練習(xí)平臺(tái)
光學(xué)不練,計(jì)算機(jī)知識(shí)是學(xué)不會(huì)的。
不管你是考研還是面試找工作,都一定會(huì)重點(diǎn)考查學(xué)生的動(dòng)手能力,而動(dòng)手能力主要考查的就是算法能力,所以大家一定要勤加訓(xùn)練!
LeetCode
leetcode是現(xiàn)在找工作最熱門的刷題網(wǎng)站了,
但LeetCode現(xiàn)在題目也太多了,一共1300+了,而且一直在增加!?。?/p>
全刷完沒必要,也不高效,推薦看下面這個(gè)leetcode刷題筆記:

這份筆記里面共包含作者刷LeetCode算法題后整理的數(shù)百道題,每道題均附有詳細(xì)題解過程。很多人表示刷數(shù)據(jù)結(jié)構(gòu)和算法題效率不高,甚是痛苦。
有了這個(gè)筆記的總結(jié),對(duì)校招和社招的算法刷題幫助之大不言而喻。
離線版筆記下載地址:
鏈接:https://pan.baidu.com/s/1X-8kXK4zvO1w684LCEuf8w
提取碼:210F
4、一些建議
1)在大家學(xué)習(xí)計(jì)算機(jī)相關(guān)知識(shí)的時(shí)候,一定要好好利用網(wǎng)絡(luò)上的資源,好好利用百度和谷歌。有什么不會(huì)的直接上網(wǎng)搜,肯定會(huì)有很多優(yōu)秀的博主為你排憂解惑。
2)對(duì)于編程語言的學(xué)習(xí),一定要多動(dòng)手寫代碼,在實(shí)戰(zhàn)中掌握。而且C++/Java/Python掌握一門就夠了。大同小異,當(dāng)你精通一門語言之后,如果想要學(xué)習(xí)其他語言,就會(huì)非常的快。
3)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法分析,一定一定要在看懂之后自己用自己喜歡的編程語言實(shí)現(xiàn)一遍,一定要親自實(shí)現(xiàn)一遍呀?。?!這一點(diǎn)太重要了。這樣你就能很快的掌握而且再一次加強(qiáng)編程能力。
推薦資源
歡迎添加程序汪個(gè)人微信 itwang007 進(jìn)粉絲群或圍觀朋友圈
往期資源 需要請(qǐng)自取
喜歡就"在看"唄^_^
