Learn a Little Bit Math Again
工作以後,做Web開發,做DBA,數學似乎沒有太多的用武之地,其他的學科如物理、化學、 生物就更不用說了,時間一長,它們就會很快被遺忘;若不是需要解決一些實際問題,恐怕很難再撿起來。當然,若是對此有興趣就另當別論,比如這位Matrix67,北大中文系應用學專業,卻是一位數學宅,認為生活中的數學無處不在,無時不影響著我們的生活。
計算機領域同樣如此,所以有人說,計算機是數學家一次失敗思考的產物,這涉及到計算機的理論基礎、發展歷史,是一個很巨集大的主題,以我的水平很難說出一二來。不過,倒是斷斷續續看過一點相關的東西,如《編碼:隱匿在計算機軟硬體背後的語言》 (英文版《Code: The Hidden Language of Computer Hardware and Software》
但實際情況是,我們往往會認為知易行難。這有點兒類似於理論與實踐的關係了,結果是,道理人人都懂,但並不是每個人都懂得如何運用。面對這種情況,有可能會導致另外一個極端,那就是隻重實踐而忽視理論。
對我們程式猿而言,似乎更容易這樣,因為”Talk is cheap, show me the code!”,所有的關注點都放在瞭如何實現上面;即使有設計,那時的設計也會輕易的深陷於某些語言或框架。我所接觸的Web專案大抵如此,這裡建議程式猿們不妨讀一讀劉未鵬的這篇方法論、方法論——程式設計師的阿喀琉斯之踵
(以上有點扯遠了,雖然提到的是效能問題,但歸結起來,也可以說是理論不足所致)後來的情況似乎會好轉一些,因為陸續新增了一些DBA,人手一多,每個人的責任範圍會縮小,投入的時間和精力會更加集中,經過反覆的瞎折騰,總能找到適合自己的一條路慢慢探索下去,只是不要成為另一種意義上的堆疊和叢集就好。作為一個打不死的小強,自認為還保留了一些”知其所以然” 的”超能力”,所以還不忘刨根問底,不忘多問一個為什麼,也不忘多看看基本原理和概念,只是眼下已經不做DBA了。
還是回到數學上來,這也是一種理論,但似乎比人盡皆知的道理更加難以運用。
大學學到的高等數學、線性代數、數理統計與概率論等等數學知識差不多已經忘光了,現在對數學再次產生學習的動力和興趣始於工作期間看過的關於貝葉斯推斷的一系列部落格以及由此擴散開來的一些閱讀:
- 最先看的一篇是 Peter的How to Write a Spelling Corrector,中文翻譯見徐宥:怎樣寫一個拼寫檢查器。初看到這個題目,有點無從下手,但只要你認真看看Peter在乘飛機途中娓娓道來的講解,你會驚訝於他是怎麼樣一步一步化猜測為理論模型並和貝葉斯扯上關係的;當你試著敲完程式碼 進行拼寫檢測時,會發現這個程式還真的會讀懂你的心思;但回過頭來看看,裡面運用的只是大夥兒所熟知的全概率公式,可是為什麼我就想不到呢。
- 再接著直接買了吳軍的《數學之美》,利用每天中午休息的時間看一點點,這時的情緒體驗會更加愉悅:初窺數學之美,瞭解了一些隱 藏在複雜問題背後的數學模型和原理。
- 直到最近看CS61A:SICP with Python,在講Functions的小節中遇到怎樣使用加減乘除運算來求一個數的平方根的問題,這時Newton’s method出現了(如果初小教育靠譜的話,應該有老師講過)。
以上部落格或書中提到的問題,沒有一些數學基礎,單從理論上就很難解決,直接程式設計實現就有點像無頭蒼蠅,若真碰巧解決了,我能說是瞎貓碰上死耗子嗎。近來掀起的Data science熱、Machine learning熱等等離開了數學根本就沒法玩。
鑑於以上原因,我需要再學習一點數學知識,打打理論基礎,並重理論和實踐,不玩瞎貓捉死耗子的遊戲。
發一張勵志的圖: