一勞永逸
首先心流理論沒有任何價值,其次繼續(xù)上次的思路:
我在寫代碼的時候,能進入一種狀態(tài):每一個類,類與類之間的依賴,每個方法的大致邏輯,每個字段被引用的地方......這一切的信息都放在腦子里的某個位置,能以極快的速度調(diào)取。
因此我在想,人的記憶是否可以去記住狀態(tài)而不是信息:
我沒有刻意記憶過這些,僅僅只是經(jīng)歷過寫這些東西的過程,而且有些代碼是幾個月以前的,再次使用時仍然有這些信息。是因為我現(xiàn)在處于跟當時一樣的狀態(tài),我基于這個狀態(tài)的一切經(jīng)歷都會被記錄,再次回到這個狀態(tài)就可以跟過去的經(jīng)歷產(chǎn)生交互。
這決不是那些人所說的心流,因為即使我同時分散注意力干別的,比如現(xiàn)在在這里打字,我依舊可以維持這個狀態(tài)。這種感覺很好,這應(yīng)該就是未來我需要抓住的狀態(tài)。
然后是心流理論的無價值:我在小學(xué)四年級的時候經(jīng)??梢赃M入一種全神貫注的狀態(tài),看書,打游戲,運動,都有過一樣忘記時間沉浸在另一個世界一樣的經(jīng)歷。當時我并不了解心流理論,但顯然我進入了心流所描述的狀態(tài)。
小學(xué)四年級的我原本就能做到的事,長大后的我沒有理由需要依賴理論才能做到。
而且最經(jīng)典的那個圖,只有難度適中的挑戰(zhàn)才能進入心流,這也是無價值的。
因為算法題有明確的難度劃分,因此用算法題來舉例,盡管我在做算法題時沒有進入過心流。
于我而言難度就是易于理解的程度,不理解一件事,那么那件事就是難,否則就是簡單,沒有所謂的適中。我在力扣刷了100多題,沒有做出來的題都只有一個原因:沒有理解到本質(zhì)。
第一次刷力扣是在20年,優(yōu)美的排列。解法是DFS,記憶化搜索,動態(tài)規(guī)劃。
我從這一題里面真正吸取到的東西只有狀態(tài)壓縮的思想,因為我從來沒有想過數(shù)組的索引也可以表示某種信息,被這種思路震撼到,于是后面可以本能地用到。
但是動態(tài)規(guī)劃或者說記憶化搜索的本質(zhì)是什么?我其實到現(xiàn)在都沒能搞懂。以前說不用糾結(jié)本質(zhì)是錯的,只是因為當時我腦中構(gòu)建的所有模型都解釋不了動態(tài)規(guī)劃。
現(xiàn)在,動態(tài)規(guī)劃類題目對我來說依舊是很難的,但是我知道我做不出來是因為沒看到本質(zhì),而沒有看到本質(zhì)是因為我缺少某些前置知識,動態(tài)規(guī)劃一定是基于某種我沒有看過的思想。
或者說的簡單點:缺少數(shù)學(xué)思想。在我的認知里編程與數(shù)學(xué)沒有任何關(guān)系,那么基于編程的算法肯定也是,刷了100題以后僅僅只是改掉了用軟件開發(fā)的思想來做算法題的習(xí)慣。
要修正對算法的認知還缺少數(shù)學(xué)這一塊拼圖。
這是其一,沒有難度適中,只有理解與不理解。其二是我前面所描述的狀態(tài),即使面對高難度挑戰(zhàn)仍然可以保持專注,因為理解力拉滿了,在遇到不理解的困難時可以專注地用腦子里已有的模型嘗試理解,沒用就去問Newbing,再沒用就去網(wǎng)上搜,去問別人,直到把困難解決——除非那個難度在另一個次元,比如直接讓我去畫素描,因為沒有足夠的訓(xùn)練所以不可能專注,但只要是跟自己領(lǐng)域相近的事物,即使很難只要進入那個狀態(tài)就可以很快理解一切。