亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
慕課專欄

目錄

索引目錄

用技術人的眼光看世界 • 程序員技術指北

原價 ¥ 99.00

立即訂閱
07 知識掌握的七個境界
更新時間:2020-04-01 10:25:41
理想的書籍是智慧的鑰匙。——列夫·托爾斯泰

最近,遇到了兩個來自同學的提問,我覺得都挺典型的。

一個同學問我,“學習的過程中,到底怎么樣才叫學會了?掌握了?”

還有兩個同學,不約而同地問我,“學習算法,是不是掌握了基本原理,面試的時候,能說出個大概就好了?”——對于這個問題,其實不止這兩個同學,在過去的兩年時間里,我也已經遇到很多次了。

今天這篇推文,就借這些問題,聊一聊我眼里的,知識掌握的七個境界。

第一重境界:擼串境界

知識掌握的第一重境界,我管它叫“擼串境界”。什么意思?就是,對于這個知識,你只有在擼串的時候,才能“無障礙”地提起。比如:

A:你知道嗎?昨天人類首張黑洞照片公布了!
B:是啊是啊,人類離宇宙的真相又近了一步。聽說黑洞和時間的奧秘也有深刻的聯系,可能我們離時空旅行又近了一步呢。

擼串的時候,我們可能會不自覺地聊起這種話題。但是,八成,A 和 B 對黑洞的了解,都是在“擼串境界”,真的正兒八經地說說黑洞到底是怎么回事兒,黑洞照片的歷史意義是怎樣的,對未來有可能有什么影響,黑洞和時間又有什么聯系,可能都不太清楚。對于黑洞,也就是在擼串的時候隨便聊聊。

圖片描述A:聽說XXX自己做人工智能,預測股票走勢,賺了一大筆錢!

B:我也聽說了,就是用現在最火的深度學習。Alpha Go 已經戰勝人類最強的圍棋選手了,Alpha Go 用的就是深度學習算法。

在這段對話里,A 和 B 對人工智能和深度學習的理解,八成也是“擼串境界”。

通常,看新聞就能幫助你進入擼串境界。

第二重境界:關鍵詞境界

知識掌握的第二重境界,我管他叫做“關鍵詞境界”。就是,對于這個知識,你掌握了非常重要的幾個關鍵詞。比如:

A:聽說XXX自己做人工智能,預測股票走勢,賺了一大筆錢!

B:我也聽說了,就是用現在最火的深度學習。好像是建立了一個叫 LSTM 的模型就好了。我也想找時間學習學習呢,搞不好就能賺 1 個億呢。

在這段對話里,B 對深度學習的理解,進入了“關鍵詞境界”。當然,在這里我只是舉例子,畢竟 LSTM 只是深度學習的一種方式,深度學習領域也有很多其他重要關鍵詞。在這里,我想強調的是:關鍵詞境界和擼串境界,是截然不同的。

為什么?因為如果你處于關鍵詞境界,這個知識對你來說,就不僅僅是只有在擼串的時候可以提及的一個縹緲的概念了。你可以利用這個關鍵詞,在網上查詢,進而深入學習。換句話說,這個關鍵詞已經可以指導你行動了——你已經可以開始具體的學習了。

很多時候,我們解決問題,就是缺少一兩個關鍵詞而已。比如,我本科的時候,做一個項目,其中一個子功能,要對用戶輸入的郵箱字符串是否合法做驗證。當時我花了很長時間自己設計“所謂的算法”去處理,其實就是一堆 if-else。到后來,我明白了,這事兒其實用正則表達式,一句話就搞定了。真要說其中的算法,也是一個專門的領域,叫模式匹配?!罢齽t表達式”,“模式匹配”,就是正確的關鍵詞。如果我早一些知道這些關鍵詞,我就可以直接去學習正則表達式的使用,或者直接去學習“模式匹配”算法,就會少走很多彎路。

在這里,我要強調,從學習的角度,我覺得這個彎路,也是值得的。因為通過我的思考和嘗試,再去看成熟的解決方案,我就能看到差距,總結自己思維上的缺陷,對知識的理解也會更深刻。我經常說,在大多數情況下,走一些彎路絕不是壞事,走彎路是進步的源泉,所謂失敗是成功之母。只不過,對于很多時間緊任務急的業務場景,可能現實不允許你走彎路。

第三重境界:原理境界

第三重境界,就是你不但知道了這個關鍵詞,你還知道了原理。

歸并排序對你來說不僅僅是一個名詞,你知道歸并排序是每次將整個數組分成兩部分,將這兩部分排好序以后,再合并起來;

快速排序對你來說不僅僅是一個名詞,你知道快速排序是每次以一個元素為標定點,把數組分成小于這個元素和大于這個元素兩部分,對這兩部分再去遞歸地進行排序;

二分搜索對你來說也不是一個名詞,你知道,二分搜索就是對一個有序數組,先檢查中間的元素,如果正好是你要查找的內容,就ok了;如果不是,你要查找的內容比它小,繼續到左邊找;你要查找的內容比它大,繼續到右邊找。

大部分同學通過在學校的專業學習,應該是至少能達到原理境界的。也就是,你知道這個名詞,了解這個名詞在解決什么問題,同時,也能用自然語言表述他的原理。

但是,在這里,我必須提醒大家,對于計算機專業的學習,必須要把基礎知識的掌握上升到第四重境界。

第四重境界:實踐境界

所謂的“實踐境界”,在計算機領域,其實就是,你不僅僅能說出原理,還能用代碼將他們正確實現出來。換句話說,你不僅僅知道“歸并排序”、“快速排序”、“二分搜索”,你還能寫出正確的代碼。

我在這篇推文開篇,兩個同學,不約而同地問我,“學習算法,是不是掌握了基本原理,面試的時候,能說出個大概就好了?”他們的問題,本質就是:對于算法知識的掌握,有沒有必要進入實踐境界?

我的答案是:太有必要了。因為,這是計算機專業跟非計算機專業的本質區別。也是你能吃這碗飯,別人不能吃這碗飯的關鍵。

計算機專業要做的,就是把抽象的邏輯轉換成可以正確實現這個邏輯的代碼。如果能顧及代碼的效率,可維護性,甚至是簡潔優雅,那就更好了。但如果你只是懂原理,能扯淡的話,恕我直言,別說數學系物理性能碾壓你,連文學系歷史系,甚至是一個素質高點兒的高中生乃至初中生,隨便看兩眼,可能都能碾壓你。但是讓他們轉行程序員,還是會費一番功夫的,為什么?正確,優雅,高效的代碼實現能力,不是一日之功。

如果到達原理境界就 ok 的話,我的所有算法課程,長度都可以直接縮減到 1/5。但是,能用代碼正確地實現出來,完全是另一回事兒。很多同學說得清楚原理,但是實現不出正確的代碼。這就是編程基礎不夠。由于你實現不出正確的代碼,我也不敢保證你的理解是完全正確的。

你跟我扯再多永動機的原理,要想讓我不質疑你,請實現出一個永動機證明給我看。你跟我扯再多煉金術的原理,要讓不懷疑你,請把這個易拉罐變成金子給我看。

同理,你說你懂快速排序,不要廢話,實現一個快速排序給我看。

Linus Torvalds說:talk is cheap, show me the code.

圖片描述大家一定要明白,計算機是工科,工科是靠東西說話的。我相信這也是很多同學選擇計算機專業的一個原因——它沒那么多虛的。你專業水平高,你就能實現出來,時間短,效率高,代碼整潔優雅,讓所有人都閉嘴。從某一個維度看,這確實是更公平的,不像在有一些行業或者領域,單靠嘴皮子,人和人能拉開很大的差距。(當然,一切都是相對的,公平這個話題太大了,有時間單聊。)

所以,大家在具體學習的時候,一定要明白:我是計算機專業的,能實現出來,才是我的立身之本。

第五重境界:靈活應用境界

第五重境界,就是靈活運用。知識是死的,能靈活地運用這些知識解決實際問題,甚至是解釋生活中的現象,對這個知識點,就達到了這重境界。

隨便舉幾個例子。

Leetcode 上 1011 號問題,大家可以看一看。在這里,我把中文版本的問題也截了一個圖(沒時間看具體問題直接跳過去,在這里只是舉個例子):

圖片描述對于這個問題,如果你能很快地反應出,應該使用二分查找法來解決的話,你對二分查找的理解,就已經進入了靈活運用的境界。相較而言,寫出正確的二分搜索代碼,是簡單的,但是,能快速反映出這類問題可以使用二分查找的思路去解決,還需要一定的專業訓練才能達到。實際上,類似這樣的使用二分查找法解決的問題,是算法競賽里常見的問題套路。二分查找本身,也絕不僅僅局限在在一個有序數組中找一個數而已。對這個問題的深入解析,我在文章中不具體分析了,有興趣的同學,可以自行搜索學習。

再比如,經典的“智力”題,過河問題:

農夫需要把狼、羊、菜和自己運到河對岸去,只有農夫能夠劃船,而且船比較小,除農夫之外每次只能運一種東西,還有一個棘手問題,就是如果沒有農夫看著,羊會偷吃菜,狼會吃羊。請考慮一種方法,讓農夫能夠安全地安排這些東西和他自己過河。

以及經典的“裝水問題”,版本眾多,我隨便取一個:

有兩個水桶一個裝5升一個裝3升怎么利用水桶得到4升水?

如果你看見這類問題,能很快地想到,他們的本質,是圖論中的一個路徑搜索問題,那么你對路徑搜索算法的掌握,就進入了靈活應用境界。給你一個圖,讓你找到從 s 到 t 的一個路徑,是簡單的;但是對于這類問題,可以使用圖論去建模,將其轉化成一個圖中的路徑搜索問題,是需要一定的專業訓練的。

再舉一個 Google 的面試問題:

一個硬幣,拋了 1000 次,結果有 560 次是正面,請問,你覺得這枚硬幣是不是“公平”的?

如果學過概率論的同學,可能都能說出什么是中心極限定理,都知道假設檢驗。但是,遇到這樣一個問題,能不能聯系已經掌握的知識,有理有據地說明白你得出結論的依據?需要你對相應的知識,達到靈活運用的境界。

第六重境界:發明創造境界

上面的幾重境界,都是對已有知識的掌握逐漸深入。但是,這個世界上尚未解決的問題還很多,能不能根據已有知識,發明創造出新知識,進而解決新的問題?這就是發明創造的境界。所有的諾貝爾獎,圖靈獎的獲獎者,對相關領域的知識掌握,都在發明創造的境界。

首先,必須承認,對于任何知識,我都達不到發明創造的境界。

事實上,對于大多數人來說,對某個領域的知識,能整體進入靈活應用的境界,就已經足夠了。因為能夠靈活運用,已經意味著你可以使用這些知識,解決大量實際問題了。這已經對整個社會有相當大的價值了。能否進入發明創造的境界,一方面看你是否有這方面的追求;另一方面,也看機緣和天賦,很多時候,是可遇不可求的。

不過,在這里,我想強調,所有的新知識,近乎都不是憑空出現的。都是靠大量的對前人知識的積累、理解、甚至是靈活運用之后才出現的。所以,不斷學習前人的知識和思想,是根本。沒有積累,突然發明了新知識,尤其是在當下這個知識爆炸的時代,近乎是不可能的。

所以,不要妄想把自己關起來,就能解決黎曼猜想。不要覺得自己是張無忌,找幾本世界經典教材,在“洞里”與世隔絕,苦讀三年五載,就能一鳴驚人。金庸的小說是成年人的童話。所謂的童話,就是騙人的。相較而言,不斷地去積累,甚至是跨領域的積累知識,從其他領域的知識中汲取靈感,才有可能更大概率地發明出新的知識,解決更難的問題。

第七重境界:遺忘境界

第七重境界,我稱之為遺忘境界。在這里,首先要說明,前六重境界,是層層遞進的關系。但是,在這里,我說的第七重境界,不是第六重境界的一個遞進,而只是一種狀態——遺忘而已。

相信很多同學都有這樣的苦惱:學了很多知識,很快就忘掉了。即使曾經達到靈活運用的境界,但是可能各種原因,幾年甚至十幾年沒有碰,最后也會遺忘。

在這里,我想強調的是:這是極其正常的。如果你不會遺忘的話,你就是一個超人了。或者你擁有機器貓中的記憶面包,你應該已經是全球首富了。

圖片描述關鍵在于,如何抵抗遺忘?首先,對一個知識的掌握,你的境界越高,越不容易遺忘。相較于已經達到靈活運用境界里的知識,只在原理境界的知識,更容易被遺忘。

另外,使用次數越多的知識,越不容易遺忘。其實在我國,大多數初等教育,都是在采用“重復使用”這種方法,來幫助你記憶知識的。你根本沒有具體應用過這些知識,但就是忘不了 how are you 后面,接的是 fine, thank you. and you? 對于這種機械式地使用,我的評價是中性的。有好有壞,有機會可以單獨寫文。

其實,遺忘并不可怕,遺忘境界是一種境界。如果你的遺忘境界中存在著某種知識,基本就意味著你能迅速地把它撿起來,重新回到原來的境界,這是很重要的。所謂的經驗,不過是遺忘境界的存儲。比如,紅黑樹的內部原理,很容易遺忘。但是,如果你跟著我的課程,認認真真學習了紅黑樹的原理,實現了紅黑樹的代碼,那么,即使你遺忘了,我相信,對于正常智力水平的同學,在需要的時候,比如面試前,一兩個小時的時間,足以讓你回到原有的水平。

最后,我想說的,雖然學習的目的不是遺忘,但學習的目的也絕不僅僅是記住。其實,“記住”,是學習的一個太低層級的收獲。關鍵是,在學習的過程中,你的大腦在消化、吸收知識的過程中,會連帶有很多附加的收獲。這些附加的收獲,在很多時候,都是更加重要的。

比如,對數學的學習,會逐漸讓你對數字更敏感,同時,形成如何用數學模型解決問題的思維方式(所謂的數學思維和數學素養);

對算法的學習,會逐漸培養你理清邏輯的習慣,對每一個變量作用的深刻理解,也能讓你寫出越來越優雅的代碼;

更不用提,在學習的過程中,你會逐漸總結出適合自己的學習方法,把他們應用在更多領域的學習上;

你會慢慢體會到如何能夠更加高效地查找資料,如何歸納,總結知識體系,幫助你更好的理解;

你會去提問。在提問的過程中,你會越來越多地理解:怎樣提問更加有效?什么是一個好的問題?;

你會給別人講解,在給別人講解的過程中,你也能鍛煉自己的表達能力;

你甚至能在學習過程中,逐漸找到自己的興趣,自己的天賦,自己的理想;

通過學習越來越多的東西,你也會越來越有自信,你能感受到天地之大,也能感知到自己之?。?/p>

所有的這些,都比學習某一個具體的知識點,重要太多了。

愛因斯坦說:所謂的教育,就是忘記了在學校所學的一切之后,剩下的東西。

大家加油?。海?/p>

}
立即訂閱 ¥ 99.00

你正在閱讀課程試讀內容,訂閱后解鎖課程全部內容

千學不如一看,千看不如一練

手機
閱讀

掃一掃 手機閱讀

用技術人的眼光看世界 • 程序員技術指北
立即訂閱 ¥ 99.00

舉報

0/150
提交
取消