我不擅長數學读拆,所以我嘗試用我的直覺、常識鸵闪、流程圖檐晕,更多其他類型的圖表來解決我作為一個程序員每天面臨的問題。這種情況持續(xù)了幾年蚌讼,我總結出了一些規(guī)則和想法辟灰,并在此基礎上建立了一個解決問題的模型。建立這個模型的目的只有一個:非常清楚篡石、非常簡要地說明問題是什么芥喇,解決方案又是什么。我創(chuàng)建了一個模型凰萨,將把問題作為輸入乃坤,輸出是包含英語、流程圖和許多其他類型圖表的解決方案沟蔑。這個模型有一定的假設、規(guī)則和條件狱杰,這些都是非常清楚的瘦材。清晰性和簡單性是重點。這是一種通用的仿畸、抽象機制食棕,可以應用于各種問題的解決方案。幾個月前错沽,在我讀完所有前面提到的所有數學文章后簿晓,我又看到了 Evan Miller的一篇文章,題目是《Don’t Kill Math 》千埃,這篇文章實際上是為了回應Bret Victor的《Kill Math》憔儿。
這兩篇文章對我沖擊很大。首先放可,Bret Victor試圖做我?guī)啄陙硪恢痹趪L試的事情谒臼,當然他比我更成功朝刊。我從來沒有搭建出可以被所有人使用的穩(wěn)定模型,而Bret已經做到了蜈缤。我很高興拾氓,因為我找到了我一直想要的,社準備跟隨Bret的腳步底哥,但我最終并沒有這樣做咙鞍。為什么?
有一個原因趾徽,我永遠無法搞出一個穩(wěn)定的模型续滋。我總是認為它缺乏一些東西。不管我做了什么附较,做了多少工作吃粒,我總覺得缺少一些非常基本的東西拒课。每當我研究薛定諤方程徐勃、麥克斯韋方程、牛頓定律早像、開普勒定律僻肖、不確定性原理或Shulba-Sutras時,我總是覺得所有這些方程都是完整的卢鹦,但我的模型卻不是臀脏。《Kill Math》和《Dont' Kill Math》這兩篇文章讓我意識到什么是完備性冀自。它就是《Dont' Kill Math》中提到的數學特性揉稚。Evan在這篇文章中提出的問題,以及他用非常簡單和基本的細節(jié)進行解釋的方式熬粗,為我尋找一個穩(wěn)定模型的過程畫上了句號搀玖。數學是一種簡明扼要的方法,用來解決問題和理解各種現象驻呐。這些直接清楚的特點是數學所固有的灌诅,就像靈魂是每個生命所固有的一樣。有了數學含末,你可以用更短猜拾、更好的方式來解決問題,而非其他方法了佣盒。
這讓我想到一個非晨嫱啵基本的問題。為什么我討厭數學?這是因為在學校和大學里教我數學的方式宋雏。我被教導的是死記硬背的數學芜飘,而不是真正的數學。這是學校的錯磨总,是我們教育系統(tǒng)的錯嗦明,不是學生的錯◎窖啵回到我們是否需要數學來成為一個偉大的程序員這個主要問題上娶牌,這就是世界最初是如何解決問題的:
然后出現了數學,這就是大多數數學家所做的事情:
而這也是幾乎所有的計算機程序員/軟件工程師/開發(fā)人員所做的:
Evan Miller說馆纳,你可以不用太多的數學知識就能成為一流的黑客诗良,我認為他是對的,這個觀點與所有其他作者也是一致的鲁驶。他強調的一點是數學在解決這個世界的問題中的作用鉴裹,數學在解決現實世界的問題中是非常有效的。作為程序員钥弯,我們要解決問題径荔,但如果我們用數學來解決問題,然后將編程方案應用到解決方案的數學模型中脆霎,那么我們就可以有一些巧妙漂亮的方法來提供更好的解決方案总处,這將使我們作為程序員的生活更輕松(作為一個彩頭)
最后總結下:
- 你不需要數學來也能成為一個一流的程序員,因為我們并不用直接使用很多數學知識睛蛛。如果你想成為程序員鹦马,那就學習編程。計算機編程與數學有很大的不同忆肾,作為一個計算機程序員荸频,你必須更多地關注如何寫出更好的程序,如何在一個特定的范式(如函數式客冈、OO式试溯、通用式、程序式郊酒、邏輯式、聲明式等)中思考键袱,找到更好的方法來創(chuàng)建軟件燎窘,你需要了解設計模式,更不用說學習和使用各種語言幾年后會給你的思維增加新的維度蹄咖。所有這些都與數學沒有任何關系褐健。你需要先學習這些,你需要花幾年的時間才能掌握它們,然后如果你想學數學蚜迅,你就可以學舵匾。閱讀Roberrt J. Chassell寫的《使用Emacs Lisp編程入門》,了解如何解決創(chuàng)建一個可定制的谁不、自我記錄的坐梯、不斷擴展的實時顯示文本編輯器的問題。閱讀GNU Make手冊刹帕,了解它為什么需要M4和Autoconf吵血。
- 數學是理解這個世界的本質和解決問題的最廣泛使用的載體。通過學習數學方法偷溺,我們可以學到更多解決問題的方法蹋辅。我自己已經開始學習概率,因為就像Steve Yegge說的那樣挫掏,一旦你理解了數學侦另,那么你就可以看看這個問題,看看它是一個概率問題尉共、微積分問題還是統(tǒng)計問題等等褒傅。數學與問題的本質有關,而不是軟件的本質爸邢,軟件有自己解決問題的方法和工具樊卓,記住這一點。
簡單一句話:兩個層面問題杠河,做程序員不會數學完全是可以的; 學了數學能提高解決問題的能力碌尔,這不僅僅是局限寫程序的范疇了。
日更127天 - (翻譯) 編程是否需要數學 (上)
日更126天 - 知識付費是士力架還是人參果
日更125天 - 整理下自己的手機券敌,別讓它碎片化了我們的生活
日更124天 - 打造自己小環(huán)境
日更123天 - 杠桿
日更122天 - 收入的四個象限
日更121天 - 時光穿梭唾戚,回顧和展望
前日更120天索引