<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          數(shù)學(xué)對(duì)編程有多大作用?

          共 2027字,需瀏覽 5分鐘

           ·

          2020-10-28 22:47

          “程序員需要學(xué)數(shù)學(xué)嗎”一直是個(gè)行業(yè)熱門議題,正方說因?yàn)椴欢當(dāng)?shù)學(xué)繞過一些彎路,反方會(huì)說絕大多數(shù)工作都用不上那些原理。總之,做這個(gè) battle 就像西西弗斯推石頭,沒完沒了沒意義。
          我剛?cè)胄袝r(shí)覺得,數(shù)學(xué)是解決一些問題的工具,但是業(yè)余時(shí)間寧愿學(xué)寫設(shè)計(jì)模式,也不會(huì)花時(shí)間學(xué)數(shù)學(xué)原理。工作幾年后終于理解這句話:編程的本質(zhì)就是數(shù)學(xué)問題。
          舉個(gè)最基礎(chǔ)的例子,衡量代碼運(yùn)行效率的一個(gè)重要因素是復(fù)雜度。空間復(fù)雜度和時(shí)間復(fù)雜度的分析就源于數(shù)學(xué)的極限的概念。復(fù)雜度的計(jì)算就是一個(gè)關(guān)于輸入數(shù)據(jù)量 n 的函數(shù),只要你稍有數(shù)學(xué)思維,就能從平時(shí)的編程經(jīng)驗(yàn)中得出這些結(jié)論:
          一個(gè)順序結(jié)構(gòu)的代碼,時(shí)間復(fù)雜度是O(1),
          二分查找,時(shí)間復(fù)雜度是O(logn),
          一個(gè)簡(jiǎn)單的 for 循環(huán),時(shí)間復(fù)雜度是 O(n),
          兩個(gè)順序執(zhí)行的 for 循環(huán),時(shí)間復(fù)雜度是 O(n)+O(n)=O(2n),其實(shí)也是O(n),
          兩個(gè)嵌套的 for 循環(huán),時(shí)間復(fù)雜度是 O(n2)。

          具備這些意識(shí),工作中再去分析代碼的時(shí)間復(fù)雜度會(huì)容易很多。實(shí)現(xiàn)基本功能的代碼,誰都能寫,真正的能力門檻是把代碼寫得簡(jiǎn)潔、優(yōu)雅、可持續(xù)優(yōu)化。
          越往高處走,越是基本功的比拼。數(shù)學(xué)基礎(chǔ)好的人,邏輯思維不會(huì)差,在編程世界中,理解底層原理、數(shù)據(jù)結(jié)構(gòu)、算法,都會(huì)比別人快一步,這可能被被誤認(rèn)是優(yōu)秀程序員的“天分”,我更相信,這是數(shù)學(xué)功底帶來的養(yǎng)料。
          數(shù)學(xué)不好,怎么辦?
          數(shù)學(xué)這個(gè)龐大學(xué)科是出了名的高深,聽原理名詞就能勸退很多人,不過我們的目標(biāo)不是學(xué)成數(shù)學(xué)家,沒必要追求大而全。學(xué)好程序員用得上的數(shù)學(xué),就足以讓你成為我們這一行的專家。
          哪些知識(shí)是程序員用得上的數(shù)學(xué)?
          行業(yè)大佬最有發(fā)言權(quán),認(rèn)識(shí)這個(gè)大佬源于之前一個(gè)爆款課程《重學(xué)數(shù)據(jù)結(jié)構(gòu)與算法》,履歷很不錯(cuò),既是中科院博士,又是國內(nèi)一線互聯(lián)網(wǎng)公司的資深算法專家,學(xué)科背景扎實(shí),一線代碼經(jīng)驗(yàn)也很豐富。所以這次他做了這個(gè)專門給程序員的數(shù)學(xué)課,我是非常信賴的。
          這個(gè)課會(huì)怎么講?
          坦誠地講,我看了目錄后發(fā)現(xiàn),這個(gè)課對(duì)數(shù)學(xué)這個(gè)學(xué)科來說,只是冰山一角,而對(duì)程序員來說,卻是工作中用得上的絕對(duì)部分。
          實(shí)踐永遠(yuǎn)是真理的落腳點(diǎn),數(shù)學(xué)原理對(duì)我們不是空中樓閣,而是一定要用于代碼優(yōu)化。舉個(gè)簡(jiǎn)單例子,回到我們最初討論的,如何降低代碼復(fù)雜度:
          一個(gè)無序數(shù)組查找問題,數(shù)組中只有數(shù)字 obj 出現(xiàn)了一次,其他數(shù)字都出現(xiàn)了兩次,查找 obj ,常規(guī)解法的復(fù)雜度應(yīng)該是:O(n2) 時(shí)間復(fù)雜度、O(1) 空間復(fù)雜度,或者 O(n) 時(shí)間復(fù)雜度、O(n) 空間復(fù)雜度。但我們加個(gè)約束為O(n) 的時(shí)間復(fù)雜度、O(1) 的空間復(fù)雜度。
          如果你熟知數(shù)學(xué)的異或運(yùn)算的這兩個(gè)性質(zhì):任何數(shù)異或自己,為零,任何數(shù)異或零,是它自己。你就會(huì)輕易找到解決辦法,把數(shù)組中所有元素計(jì)算一下異或就可以了。實(shí)現(xiàn)代碼如下:
          a?=?[2,1,4,3,4,2,3]result = a[0]for i in range(1,len(a)):    result = result ^ a[i]print result

          ?

          通過這個(gè)例子是想告訴你,這個(gè)課不會(huì)給你講異或運(yùn)算的前世今生,就像去證明哥德巴赫猜想,而是讓你聚焦工作領(lǐng)域,夯實(shí)基本功,先把這些基礎(chǔ)知識(shí)搞定,你的邏輯、思想模式,將不拘泥于代碼本身,而是能用數(shù)學(xué)思想解決問題。
          這個(gè)課程會(huì)講些什么?
          ①?養(yǎng)成無處不在的數(shù)學(xué)思維。第一模塊通過數(shù)制轉(zhuǎn)化、數(shù)學(xué)邏輯、經(jīng)典公式等原理與業(yè)務(wù)代碼示例,講解數(shù)學(xué)思維是如何運(yùn)用在日常編程工作中的,讓你重新審視數(shù)學(xué)思維在工作中的作用。
          ②?程序員必備的數(shù)學(xué)原理:代數(shù)與統(tǒng)計(jì)。精簡(jiǎn)的數(shù)學(xué)知識(shí),比如求極值、向量與導(dǎo)數(shù),這些應(yīng)用于實(shí)際工作哪些方面:如何找到復(fù)雜業(yè)務(wù)最優(yōu)解,如何完成海量高維度數(shù)據(jù)計(jì)算。這一模塊將帶你認(rèn)識(shí)數(shù)學(xué)原理的實(shí)際應(yīng)用,更為你打好理論基礎(chǔ)
          ③?打好編程基本功:算法與數(shù)據(jù)結(jié)構(gòu)。這一模塊會(huì)講到二分法、動(dòng)態(tài)規(guī)劃、遞歸等通用算法和重要思想,從數(shù)學(xué)角度找到算法背后的規(guī)律,還會(huì)結(jié)合實(shí)戰(zhàn)場(chǎng)景,如:利用指數(shù)爆炸優(yōu)化程序,將數(shù)學(xué)原理、算法與實(shí)戰(zhàn)結(jié)合,事半功倍地夯實(shí)開發(fā)基本功。
          ④?AI 與機(jī)器學(xué)習(xí),熱門領(lǐng)域的核心技術(shù)。AI 與機(jī)器學(xué)習(xí)的技術(shù)核心其實(shí)是數(shù)學(xué)問題,這一模塊將通過幾個(gè)常用技術(shù)點(diǎn),邏輯回歸、決策樹等,帶你入門 AI 建模,從數(shù)學(xué)角度理解當(dāng)前熱門領(lǐng)域。?
          程序員用得上的數(shù)學(xué)知識(shí),都在這個(gè)大綱里
          詩人陸游曾說“工夫在詩外”,數(shù)學(xué)對(duì)程序員來說,也是如此,它不是你學(xué)完即用的技術(shù),卻是你必不可少的滋養(yǎng),希望數(shù)學(xué)這個(gè)“詩外之工”讓你離一流程序員,更近一步。
          ?額外福利:
          點(diǎn)擊“閱讀原文”免費(fèi)獲得:
          1.領(lǐng)取配套學(xué)習(xí)資料
          2.加入學(xué)習(xí)交流群、反饋學(xué)習(xí)難題
          3.不定期技術(shù)公開課免費(fèi)聽
          瀏覽 81
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲日本高清在线 | 青娱乐免费少妇 | 欧性猛交ⅩXXX乱大交 | 亚洲激情区| 亚洲欧美中文字幕在线观看 |