當前位置:
首頁 > 科技 > 作為程序員,你在編程時吃了哪些數學的虧?

作為程序員,你在編程時吃了哪些數學的虧?

「如果,你只想當個普通程序員,數學對你來說並不重要;但你要想做頂級程序員,數學對你來說就相當重要了。」這是幾年前我在矽谷技術交流 Meetup 上聽到的一個分享,而在聽到這番話之前,我很少思考數學和計算機編程之間的關係。

這二者之間的關係,到底有多緊密呢?我們可以從 Google 的一道工程師面試題談起。

2004 年 7 月,矽谷的交通動脈 101 公路上突然出現了一塊巨大的廣告牌,上面是一道數學題: .com。如果你不知道 e 是什麼,現在可以重新了解一下,e 是數學常數,是自然對數的底數,無限不循環小數。這道題的意思就是找到 e 中最先出現的 10 位質數,得出一個網址。

進入這個網址,你會看到 Google 為你出的第二道數學題。成功解鎖這兩步,Google 會告訴你,我們或許是「志同道合」的人,你可以將簡歷發到這個郵箱,我們一起來做點改變世界的事情。

可以看出,Google 是一個對工程師的數學素養非常重視的公司。

其實,數學對大部分程序員來說,都是「最熟悉的陌生人」。我們從小就開始學習數學,它還是中高考和研究生考試的必考科目,這麼說來,那些爛熟於心的數學定理和公式,陪伴我們至少 10 年了。

但很多程序員開始編程之後,就會把數學拋之腦後。畢竟,作為一個基礎學科,它可沒有操作系統、數據結構和計算機網路這類課程看起來「實用」。大學時,為了縮在圖書館看編程書,我還翹過數學課,那會兒我偏執地認為,數學這東西不過是「應試教育」的一部分,而我只喜歡計算機這種實操類課程。

碩士期間,我開始接觸機器學習,猛然發現:機器學習表面上是「寫程序」,但剝去外殼,本質上還是研究數學。從那時起,我對數學的認知逐漸客觀和理性了。

參加工作後,我寫了這麼多年代碼,其中一個重要體會就是:對數學的掌握程度,會直接決定一個程序員的發展潛力。往大了說,數學是一種思維模式,考驗的是歸納、總結和抽象的能力,放在程序員的世界中,就是解決問題的能力。

往小了說,無論是數據結構與演算法,還是程序設計,其底層原理和思路都源自數學。數學不行,理解冪等原理都比別人吃力。所以,很多大公司在招人時,都會優先考慮數學專業的畢業生。因為,數學基礎好,編程就更容易上手,越往高處走,數學的功力在工作中就會越發明顯地顯現。

所以我經常說,如果編程語言是血肉,數學的思想和知識就是靈魂。在大數據和智能化的時代,學好數學更是門檻本身。沒有數學基礎,機器學習、深度學習中涉及的數學公式你都看不懂,更不要說調教模型和訓練演算法了。

所以,我在極客時間開設了一門《程序員的數學基礎課》,想和你重點聊聊數學那些事兒。我知道,數學知識博大精深,所以在撰寫專欄之初,我就劃分好了內容的邊界,用一句話形容——「只做程序員需要的數學知識」。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

數據分析避雷指南:2大難關和5個「避坑」技巧
第二屆工業大數據創新競賽開幕,賦能工業智造風向標

TAG:InfoQ |