1. 程式人生 > >知其所以然地學習(以演算法學習為例)

知其所以然地學習(以演算法學習為例)

既然認識到,人類解決問題的兩大思維方式實際上都是有很大的試錯成分的(好聽一點叫“探索”),那麼就不難意識到,對一個問題的思考過程實際上是相當錯綜複雜的,而且充滿了無效分支——在思考的過程中我們也會不斷的對分支進行評估,做適當的剪枝——因此當我們找到問題的解之後,一來思維的漫長繁雜的過程已經在大腦裡面淡化得差不多了,只有那些引向最終結論的過程會被加“高亮”——我們在思考的過程中本就會不斷的拋棄無效的思路,只留下最有希望的思路。簡而言之就是最後證明沒用或者早先我們就不抱希望的一些想法就被從工作記憶中扔掉了。二來,思考過程是我們的空氣和水,而“魚是最後一個感覺到水的,我們感覺不到思維法則本身的存在,我們只是不知不覺運用它。三來,由於我們的目標是問題的解
,解才是我們為之興奮和狂喜的東西,而不是求解的過程,過程只是過程,目的才是目的。這就像一個尋寶者,在漫長曲折的尋寶曆程之後,在找到寶藏的時候,他會對寶藏感到狂喜(記得阿基米德的“找到了!”嗎?)而迫不及待地要展示出來,而漫長的思考本身卻成了註腳。我們是有目的的動物,目的達到了,其它的就相對不那麼重要了。最後,對於傳授知識的人,也許還有其四:感到介紹思維過程是不相干的,畢竟思維過程並不是演算法問題的解,演算法問題的解才是演算法問題的解。然而不幸的是,忽視到達解的那個過程實際上卻變成了捨本逐末。我們看到的是寥寥數行精妙絕倫的演算法,然後仰天長嘆自己想不出來啊想不出來。為什麼想不出來,因為你不知道那短短數行演算法背後經歷的事怎樣漫長的思考過程,如果問題求解是一部偵探小說,那麼演算法只是結局而已,而
思考過程才是情節