首先弯洗,無論是哪方面的程序員,都要大量的投資算法和數據結構逢勾。因為這是你的基本技能牡整,就像棋手需要知道每個棋子的走法一樣。在算法學習的過程中溺拱,你繞不過的就是衡量算法的效率逃贝,也就不可避免的學習Big O的知識。Big O迫摔,需要你了解函數和極限的一些知識沐扳,比如說,f(n) = O(g(n))是這樣定義的句占,當n足夠大的時候沪摄,你總可以找到一個常數c,使得c * f(n) >g(n)纱烘。除了效率杨拐,還有如何證明算法的正確性。這就要求掌握一些證明方法擂啥,比如反正法哄陶,遞推歸納法。
其次啤它,如果你遇到了性能方面的問題奕筐,需要降低延遲,增加吞吐的時候变骡,你很有可能需要去設計高性能的隊列系統(tǒng)离赫,這時排隊論的知識就顯得尤為重要了。排隊論要學好塌碌,概率論是基石渊胸。隊列在計算機系統(tǒng)中隨處可見,操作系統(tǒng)中的進程調度問題台妆,基于隊列解藕生產者消費者的架構問題等等翎猛。
接下來如果你對離散優(yōu)化問題感興趣,如說背包問題接剩,旅行者問題切厘,當你需要優(yōu)化一個目標函數的時候,你往往會用到梯度下降法懊缺,而理解梯度下降法疫稿,對微積分要有很好的理解。更不用說在人工智能,機器學習領域遗座,到處都得優(yōu)化目標函數舀凛,降低預測誤差,想走的遠途蒋,是必須要有數學基礎的猛遍。
然后再說一下,線性代數号坡,特別是在人工智能里面懊烤,很多基本的模型都是線性的,你會隨處看到矩陣的用處筋帖,單純的只知道矩陣如何相乘是遠遠不夠的奸晴,要理解的跟深入,矩陣是一個函數日麸,用來轉換矢量,既然是函數逮光,就會具有很多函數的特點代箭。
分布式系統(tǒng)中的鼻祖級論文,Lamport的時間涕刚,時鐘嗡综,和事件的順序,據他所說是他從相對論中的時間和空間的關系中得到的靈感杜漠。由此可見极景,不僅是數學,物理也很重要驾茴。