哇塞,這樣學編程,直接原地起飛啊!

掘金的小夥伴們,你們好,我是沉默王二。算法

今天來給你們分享一些學習編程的心得,真的顛覆了我之前對學習編程的刻板印象,能夠這麼說,若是你剛好處在大學階段,看到了這篇內容,OK,恭喜你,若是你能按照我說的去作,大三大四的時候絕對能領先同窗一大截,除非你好心把這篇內容分享給他——嘿嘿。編程

編程分兩種,一種是實操型,奉行的準則是實踐出真知;一類是理論型,奉行的準則是所有的知識都要搞懂後才肯去動手。前者代碼寫得多,但基礎不紮實,剛學編程時候的我應該屬於這一類;後者代碼寫得少,一句「talk is cheap, show me the code」就被嗆得想動粗。數組

真正的大牛,能在二者之間找到一個巧妙的平衡點。瀏覽器

插句題外話,算法題就好像科舉考試時代背的八股文,是知識改變命運的表明做。你不刷,不論是校招仍是社招,就很過算法題這一關。我整理的這份 LeetCode 刷題筆記足足 300 道,對算法薄弱和須要提升算法的同窗頗有幫助安全

刷完 300 道 LeetCode 題後,我飄了!markdown

對於上班族或者轉行的同窗來講,想把全部的知識點都鋪開去學習完,確實不現實,最好的辦法就是重實戰,而後再補理論。對於科班的在校大學生來講,由於有充足的時間,因此能夠在理論知識上多花一些時間,等到工做後再彌補實踐上的短板我認爲是最正確的方式。畢竟魚和熊掌不可兼得呀!網絡

最近些年,我補充了大量的基礎知識,就忽然感受「今非昔比」了,編程上有了很大的進步,儘管依然很菜,但比前些年自認爲好了不少。數據結構

好了,廢話就很少說了。先給你們推薦一門課,哈佛大學的 CS50。編程語言

老師很是激情,儘管沒有在現場,但依然有一種身臨其境的感受。第一節課,直接就叫同窗到講臺上撕了一本超級厚的書,就爲了給同窗們灌輸一種思惟——說得直接點,就是二分查找法,先把書撕一半,而後再撕一半,再撕一半,直到找到一個 M 開頭的名字。ide

總共也就 20 多節課,每節課大概一個小時左右的時間,你們能夠天天刷一節。我簡單列一下課程的目錄,基本上都是編程中要搞懂的基礎知識。

  • 算法、程序設計、語言等
  • 數據存儲、磁盤等
  • C 語言、源代碼、編譯器等
  • 函數、全局變量、參數、返回值等
  • 線性搜索、二進制搜索
  • 符號、遞歸、冒泡排序等
  • 歸併排序、動態內存分配、堆和棧等
  • 指針、文件輸入輸出等
  • 數獨、計算機史上最有名的 bug 等
  • 魂鬥羅遊戲如何分配內存等
  • 哈希函數等
  • 網絡編程等
  • 網絡安全等

說一件挺很差意思的事,我之前以爲只學 Java 這門編程語言就夠了,作個 CRUD 的好 boy 不就挺好的嘛。而後隨着時間的推移,愈來愈以爲這個想法有點天真,有點無邪,哈哈,仍是要力爭上進的,多學點沒啥壞處。

一開始學也行,隨後補也行,總之是不能想固然的不學,會吃虧的,吃大虧的。

關於 C 語言,我以前給你們推薦了浙大教授翁愷的視頻,以及一個英文的在線學習網站,新來的同窗能夠去看一下。

我一 jio 踹開了 C 語言的大門

你們應該能發現,不少講解計算機科學相關的書籍,包括課程,裏面的例子幾乎都是 C 語言描述的。我在一把小刀,直插 class 文件的當心臟這篇文章裏也提到了 C 語言的符號表(Symbol Table)。

C 語言是很古老了,但越老的東西活得越久,越能證實它的優越性。

不得不說,哈佛就是哈佛,名校就是名校,這課程真心給力。若是你真的是對計算機科學感興趣,而且未來要進入這個行業工做,強烈建議多刷幾遍。

這是一個在編程界混吃等死了十多年的老菜鳥給初學者的最良心的建議。下面是這門課程的地址。

open.163.com/newview/mov…

刷完這門《哈佛大學的 CS50》,也刷完了翁愷教授的《C 語言程序設計》,就能夠看看下面這本天書了!

這本書牛不牛逼,直接看豆瓣評分就能感覺到,基本上全星,應該說是計算機相關書籍中評分最高的一本了吧。

那確定是一門好書,一本再好不過的書了。

但能不能看得懂,能不能耐着性子看下去,就須要看你的定力了!

這本書從計算機開始講,介紹了電腦主機有什麼部件,主板上有什麼零件,CPU、內存和硬盤之間是怎麼鏈接的。

介紹了咱們寫的程序是怎麼從一個文本文件被編譯,而後是怎麼變成彙編語言,再到機器碼的,以及怎樣被計算機執行的。

還講到了計算機網絡、計算機組成原理、進程和線程等等,從硬件到軟件,所有拿下。

這本書讀完後會有哪些收穫呢?

  • 明確某一個階段咱們欠缺什麼知識。
  • 對技術有極客追求的同窗會在這本書裏找到不少答案。
  • 終於明白了,咱們寫的程序是怎麼被計算機執行的。

再次強調,《深刻理解計算機系統》這本書對初學者並不友好,可能須要在不一樣的時間節點反覆的看,一開始看不懂的內容能夠過一段時間再看,若是還看不懂就再等等,過一段時間回來再繼續看。另外,書裏面不少例子都是用 C 語言寫的,因此在看這本書以前必定要把 C 語言給吃透了。

總之,不要抱着那種必定要把這本書吃透再怎麼怎麼樣的幻想。先從中學到 1%,再學到 5%,再到 10%,不要操之過急,學到點是點,能學到多少都是值的,不拋棄不放棄,嘿嘿。

若是真的想從事編程,當作一份職業來對待的話,你須要一本這樣的書

讀這本書的同時,能夠着手學習數據結構了,好比說數組、鏈表、樹、圖,以及哈希表等。爲何要學習數據結構呢?

清華大學鄧俊輝老師的答案:數據結構做爲構建高效算法的必要基礎,在計算機科學領域中,起到了技術體系的基石的做用。以 ACM/IEEE Computing Curricula(計算機教學大綱)2005 年版爲例,其中對於計算機科學、計算機工程、信息系統、信息技術、軟件工程等幾個相關專業的共同要求中,數據結構與算法做爲程序設計概念與技能的核心,緊隨在數學以後,排在第二位。

固然了,基本的算法也跑不了,好比說動態規劃、貪心算法,還有基本的排序算法。

我給你們推薦一個在線的學習網站,地址以下所示:

www.programiz.com/dsa/why-alg…

這是一個純英文的學習網站,截圖中爲何是中文的?哈哈,固然是我用 Safari 瀏覽器翻譯過的。英文功底能夠的同窗能夠直接看英文原版的。代碼示例有多種版本,Python、Java、C 和 C++ 的都有,徹底不用擔憂被編程語言困擾的問題。

有 C++ 基礎的同窗能夠直接看鄧俊輝老師親自錄製的課程,有配套書籍——《數據結構》第三版,清華大學的計算機系列教材,質量沒得說。

我貼一下課程的在線地址:

www.xuetangx.com/learn/THU08…

害,若是你想在畢業後或者跳槽的時候拿到滿意的 Offer,甚至體驗那種好多個 Offer 擺在面前,殊不知道選哪個的感受的話,我推薦的這三門課程、一個學習網站、兩本書,你值得擁有!

另外,就是必定要刷算法題,尤爲是若是你想要去大廠的話,算法題是必需要刷到本身都窒息的那種!

他喵的,BAT 大佬的這份刷題筆記太強了!

哇塞,原來學編程能夠這樣呀,學完直接原地起飛,小夥伴們,把贊點起來,可好?,嘻嘻~

相關文章
相關標籤/搜索