作為程式設計師,你在程式設計時吃了哪些數學的虧?
“如果,你只想當個普通程式設計師,數學對你來說並不重要;但你要想做頂級程式設計師,數學對你來說就相當重要了。”這是幾年前我在矽谷技術交流 Meetup 上聽到的一個分享,而在聽到這番話之前,我很少思考數學和計算機程式設計之間的關係。
這二者之間的關係,到底有多緊密呢?我們可以從 Google 的一道工程師面試題談起。
2004 年 7 月,矽谷的交通動脈 101 公路上突然出現了一塊巨大的廣告牌,上面是一道數學題: {e 的連續數字中最先出現的 10 位質數}.com。如果你不知道 e 是什麼,現在可以重新瞭解一下,e 是數學常數,是自然對數的底數,無限不迴圈小數。這道題的意思就是找到 e 中最先出現的 10 位質數,得出一個網址。
進入這個網址,你會看到 Google 為你出的第二道數學題。成功解鎖這兩步,Google 會告訴你,我們或許是“志同道合”的人,你可以將簡歷發到這個郵箱,我們一起來做點改變世界的事情。
可以看出,Google 是一個對工程師的數學素養非常重視的公司。
其實,數學對大部分程式設計師來說,都是“最熟悉的陌生人”。我們從小就開始學習數學,它還是中高考和研究生考試的必考科目,這麼說來,那些爛熟於心的數學定理和公式,陪伴我們至少 10 年了。
但很多程式設計師開始程式設計之後,就會把數學拋之腦後。畢竟,作為一個基礎學科,它可沒有作業系統、資料結構和計算機網路這類課程看起來“實用”。大學時,為了縮在圖書館看程式設計書,我還翹過數學課,那會兒我偏執地認為,數學這東西不過是“
碩士期間,我開始接觸機器學習,猛然發現:機器學習表面上是“寫程式”,但剝去外殼,本質上還是研究數學。從那時起,我對數學的認知逐漸客觀和理性了。
參加工作後,我寫了這麼多年程式碼,其中一個重要體會就是:對數學的掌握程度,會直接決定一個程式設計師的發展潛力。往大了說,數學是一種思維模式,考驗的是歸納、總結和抽象的能力,放在程式設計師的世界中,就是解決問題的能力。
往小了說,無論是資料結構與演算法,還是程式設計,其底層原理和思路都源自數學。數學不行,理解冪等原理都比別人吃力。所以,很多大公司在招人時,都會優先考慮數學專業的畢業生。因為,數學基礎好,程式設計就更容易上手,越往高處走,數學的功力在工作中就會越發明顯地顯現。
所以我經常說,如果程式語言是血肉,數學的思想和知識就是靈魂。在大資料和智慧化的時代,學好數學更是門檻本身。沒有數學基礎,機器學習、深度學習中涉及的數學公式你都看不懂,更不要說調教模型和訓練演算法了。
所以,我在極客時間開設了一門《程式設計師的數學基礎課》,想和你重點聊聊數學那些事兒。我知道,數學知識博大精深,所以在撰寫專欄之初,我就劃分好了內容的邊界,用一句話形容——“只做程式設計師需要的數學知識”。
最後,如果有想一起學習web前端,HTML5及JavaScript的可以來一下我的前端群733581373,好友都會在裡面交流,分享一些學習的方法和需要注意的小細節,每天也會準時的講一些前端的炫酷特效,及前端直播課程學習
如果想看到更加系統的文章和學習方法經驗可以關注的微訊號:‘web前端技術圈’或者‘webxh6’關注後回覆‘2018’可以領取一套完整的學習視訊