引言
第一次知道劉未鵬這個人,是在讀了他博客的一篇文章《數學之美番外篇:平凡而又神奇的貝葉斯方法》。當時只是覺得這篇文章寫的很好,作者將一個本身比較晦澀的問題寫得深入淺出,對于問題的把控有自己相當獨到的理解,而在我看了下作者后,卻發現是一個并不知名的人物。直到偶然的機會看到他出的一本書叫《暗時間》,本著評價還不錯的情況下就買下來了。書中的每一篇文章都是從作者的博客中原封不動的拿過來的,因此就從書的內容來說并不具備連貫性,甚至在閱讀的過程中發現很多相同的例子用了三四次。如果你對這本書比較感興趣,其實完全可以去作者的個人博客http://mindhacks.cn/上去看。作者更新博客的速度很慢,但是能看出每一篇博文都是花了不少心思去寫的。作者雖然程序員出身,卻對心理學、思維方法、時間管理方面都有相當深入的研究。書中提到了很多不錯的思維方式,但個人認為都太過強調人的主觀能動性,作者的確是一個相當勤奮之人,就像有人評價:"84年出生的劉未鵬比很多48年出生人心智都要成熟",可惜,對于絕大多數人來說不現實,但不可否認這本書還是讓我感到受益匪淺。
暗時間
什么是暗時間?你走路、買菜、洗臉洗手、坐公交、旅游、逛街、持有、吃飯、睡覺,所有這些時間都是"暗時間",你可以充分利用這些時間進行思考,消化平時看和讀的東西。善于利用暗時間的人,可以無形中比別人多出更多更多時間,從而實際意義上比別人多活很多年。衡量一個人活了多少年,應該用思維時間來計算。。就像本書的封面是一個沙漏一樣,作者在開篇寫道:
我們每個人的生命比作了一個沙漏,里面裝的沙子總量是相當的,
不同的是,有些人的沙漏頸部較細,有些人的沙漏頸部較粗。
那些頸部較細的沙漏能夠抓住每一粒時間之沙,雖然沙子總量一樣,但相對卻擁有更長的生命。
如何有效地記憶和學習
我們在解決難題的時候,經常會有這樣的感受:有些問題解決不了并不是因為腦海中缺乏某個知識點,而是因為自己偏偏就想不到。因此你所擁有的知識并不取決于你記得多少,而在于它們能否在恰當的時候被回憶起來。正所謂“學以致用,活學活用”就是這個道理。如果我們在記憶的時候將許多線索(例如當時的場景、問題的背景,甚至所處的語言環境、空間位置)一并編碼進了記憶,這為以后的回憶提供了更多的提取線索,任何一個線索被觸發都可能順藤摸瓜地拎出整條記憶來。缺乏線索的記憶就像記憶海洋中的孤島,雖然在那里,但是難以訪問。而富含線索的記憶則是羅馬,條條大路通羅馬。下文是一些具體的實踐方法:
1. 養成習慣,經常主動回顧一段時間學到的東西。
2. 創造回憶的機會。
(1) 經常與別人討論或者講給別人聽
(2) 整理筆記
(3) 書寫
3. 設身處地地"虛擬經歷"別人經歷過的事情。
4. 抽象推廣。所謂抽象,抓住問題的本質,剔除無關緊要的細節。
5. 聯系/比較自身的經歷。
學習習慣
我將一些書中提到的,自身印象比較深刻的做了點總結。
看書挑剔,只看經典。對于我來說,我在買書的時候,都會先去豆瓣、知乎上看評價,事前做足了功夫以后再決定買哪一本,這就跟平時買衣服 一個道理。另外,對于買書的錢不需要心疼。在知識上的投資,帶來的回報總是無限大的。---富蘭克林
做讀書筆記。我以前看過很多書,但是看過基本就忘了,直到后來養成做讀書筆記的習慣。很多時候,僅僅是用自己的語言重新表述一下就能夠極大地加深印象和理解。二來,也讓自己的收獲沉淀下來,方便日后翻閱。
重視提前積累的強大力量。就拿編程來說,我發現很多計算機大牛其實從高中就開始接觸編程了。你比別人往后多看一年,你就比別人領先一年的時間來準備,這個差距是巨大的。
抓住不變量。還是以計算機專業來說,我見過很多人看到ios熱門就去學ios,看到前端熱門就去學前端,一旦自己手中的技術過時了,又重新去學新的。很多人感嘆跟不上新技術。應對這個問題的辦法只能是:抓住不變量。大量的新技術其實只是一層皮,背后的支撐技術其實都是十年來不變的東西。底層只是永遠都不過時;算法數據結構永遠都不過時;基本的程序設計理論永遠都不過時;分析問題和解決問題的能力永遠都不過時;強大的學習能力和旺盛的求知欲永遠都不過時;大腦的思維方式永遠都不過時。
Y Combinator
最后談一下Y Combinator吧。之前有個同事跟我說可以去關注一下這個東西。在百度上搜了一下,發現是一個國外的創業孵化器,就沒在意。上個月,我看了一篇王垠寫的文章《怎樣寫一個解釋器》(由于篇幅太長,這里我直接給出鏈接了,要我寫應該也沒人家寫的好)。看明白之后,自己動手用java語言寫了一個schema的解釋器。文中也有提到這只是一個相當初級的解釋器,針對一些像錯誤處理、遞歸都不支持。后來我一直在考慮如何去實現遞歸,我們知道遞歸就是調用自身,而lambda表達式本身是沒有名字的,就沒法在表達式中引用自身。有人說可以像在schema中define一個函數,函數是有名稱的,但是要知道函數不過是lambda的一個語法糖,解釋器在執行函數的時候還是會將其轉化為lambda表達式。
最終這個問題的答案是:根據不動點原理,鑄造一個Y Combinator,就得到了我們想要的遞歸函數。哈哈,是不是沒聽懂?沒關系,至于這個問題詳細是怎么解決的,不是我這篇文章要關注的。那為什么要提這個?因為從來沒有一個數學問題能像Y Combinator一樣對我帶來如此大的震撼和反思。除了Y Combinator,還有哥德爾的不完備性定理,圖靈的停機問題,乃至著名的羅素悖論,這些深奧的理論都是由一個至為簡單而又深刻的數學方法得到的,你將會看到最純粹的數學之美。有興趣的讀者可以去看原文(康托爾、哥德爾、圖靈——永恒的金色對角線),強烈推薦。