首先劳坑,無論是哪方面的程序員,都要大量的投資算法和數(shù)據(jù)結(jié)構(gòu)成畦。因為這是你的基本技能距芬,就像棋手需要知道每個棋子的走法一樣。在算法學(xué)習(xí)的過程中循帐,你繞不過的就是衡量算法的效率框仔,也就不可避免的學(xué)習(xí)Big O的知識。Big O拄养,需要你了解函數(shù)和極限的一些知識离斩,比如說,f(n) = O(g(n))是這樣定義的衷旅,當(dāng)n足夠大的時候捐腿,你總可以找到一個常數(shù)c,使得c * f(n) >g(n)柿顶。除了效率茄袖,還有如何證明算法的正確性。這就要求掌握一些證明方法嘁锯,比如反正法宪祥,遞推歸納法。
其次家乘,如果你遇到了性能方面的問題蝗羊,需要降低延遲,增加吞吐的時候仁锯,你很有可能需要去設(shè)計高性能的隊列系統(tǒng)耀找,這時排隊論的知識就顯得尤為重要了。排隊論要學(xué)好业崖,概率論是基石野芒。隊列在計算機(jī)系統(tǒng)中隨處可見,操作系統(tǒng)中的進(jìn)程調(diào)度問題双炕,基于隊列解藕生產(chǎn)者消費者的架構(gòu)問題等等狞悲。
接下來如果你對離散優(yōu)化問題感興趣,如說背包問題妇斤,旅行者問題摇锋,當(dāng)你需要優(yōu)化一個目標(biāo)函數(shù)的時候丹拯,你往往會用到梯度下降法,而理解梯度下降法荸恕,對微積分要有很好的理解乖酬。更不用說在人工智能,機(jī)器學(xué)習(xí)領(lǐng)域戚炫,到處都得優(yōu)化目標(biāo)函數(shù)剑刑,降低預(yù)測誤差,想走的遠(yuǎn)双肤,是必須要有數(shù)學(xué)基礎(chǔ)的。
然后再說一下钮惠,線性代數(shù)茅糜,特別是在人工智能里面,很多基本的模型都是線性的素挽,你會隨處看到矩陣的用處蔑赘,單純的只知道矩陣如何相乘是遠(yuǎn)遠(yuǎn)不夠的,要理解的跟深入预明,矩陣是一個函數(shù)缩赛,用來轉(zhuǎn)換矢量,既然是函數(shù)撰糠,就會具有很多函數(shù)的特點酥馍。
分布式系統(tǒng)中的鼻祖級論文,Lamport的時間阅酪,時鐘旨袒,和事件的順序,據(jù)他所說是他從相對論中的時間和空間的關(guān)系中得到的靈感术辐。由此可見砚尽,不僅是數(shù)學(xué),物理也很重要辉词。