數學對於編程有多重要?

只是一隻魚


編程就是用程序語言表達你解決一件事情的方法。如果你只會寫代碼,不會寫算法;那麼你就只會寫代碼了。而在算法學習的過程中,我們還是必須依靠數學來提供解決的方案。

但是要清楚的是編程中的if/else判斷是數學的邏輯判斷。但是並不是所有的編程崗位都需要數學的,比如說前端工程師,數據庫工程師這些還都並不是需要很強的數學基礎的,但是比如說AI崗位就必須要了。下圖可能就是你需要學的東西

當今時代什麼最火?什麼最紅?我想應該就是人工智能(Artificial Intelligence),簡稱Ai。

人工智能背後的數學算法



可見數學知識才是學習的的起點。如果你在學習機器學習,深度學習的過程中遭遇挫折,多半是由於數學知識的阻礙。

說到Ai就是計算機科學的一個分支,它也藉助大部分計算機的各種技術。那麼它的主要組成部分,基本上也與計算機相似,只是可能有些形態不太一樣而已。它們主要也是靠硬件與軟件的結合。硬件就是各種形態的展現,是實實在在看得見,摸得著的;

結論

新的時代,程序員想要跨入 AI 之門,只要稍微花點時間研究一下 AI 的門道,就能知道,數學基礎是第一個、也是最大的門檻。如果你看到有人說不懂數學也能搞 AI,一定要警惕,因為這可能是一種誤導。


個人見解,歡迎留言交流!說說你的崗位是否需要數學?


黑科技從業者


這個要分情況來看。

初級的編程不要太多深奧的數學知識,更多是一種邏輯思維的理解,對於各種規則的運用。這個時候編程有點像工具或者搭積木的感覺,很多初中甚至小學的變成天才,其實也沒有太高深的數學知識,但是照樣玩得轉。

但問題是,編程,或者說計算機科學,發展到最後,則幾乎要很大程度上地依賴數學。

有一位Facebook員工跟我講,決定一個程序員上限的有兩條:一個是代碼的感覺,另一個是數學的水平。

嚴格意義上來說呢,編程搞到最後也是兩條出路:工程型和學術型。

工程型的比如說大家都在上淘寶,為什麼你點開一個圖片,就打開了一個鏈接?那是web工程師的功勞,再比如你看很多手機頁面設計的美輪美奐,那或許是一個兼具工業設計和編程能力的人的成果。

工程型的程序員,其實沒有多少創新,他們其實就是把已知的一些編程技術熟練的掌握,要說數學知識,會在處理一些技術難題的時候用到。

還記得facebook創始人馬克扎克伯格創辦撕破臉時,借鑑的一個公式嗎?那就涉及到統計數學的一些原理。

另外一種就是學術型的編程。這個就厲害了,搞的東西會非常深奧,某種程度上就是在研究數學和計算機的結合。

舉個例子,每年雙十一,全國有好幾億人在短短的幾分鐘內湧入淘寶買東西,你想想看,如果發生在現實中,一個大樓估計都要被壓塌,這麼大的數據流量,如何保持系統不崩潰,沒有差錯?

這就涉及到非常高深的數學理論。而阿里巴巴,騰訊的高薪養的那些科學家級別的人才,就是成天和數學打交道。

當然了,普通人的話,不需要學到那麼高深,一個年薪五十萬的程序員,大概掌握以下知識就可以了:

  • 《算法競賽入門經典(第二版)》:把書啃透,然後把書上每道題在OJ上AC了。
  • 《機器學習》(周志華):把書上每個算法實現,每個公式推導一遍。
  • 《UNIX環境高級編程》:很多人都缺少的對操作系統的深入瞭解。(補充:我覺得光看這本書是比較片面的,前兩點像是在修煉內功,那麼這一條就是在修煉外功。而這本書作為起點是一個還不錯的選擇。)
  • 光搞數學也不行,英語還要好,託福 100+:跟進前沿paper,與國外同行交流

但是這幾條絕對不是明面上這麼簡單,前面說了,你在研究編程的同時,還要對數學涉獵有一定廣度和深度。

比如現在最火的人工智能,大家都曉得吧?要搞清楚人工智能的最厲害的書《機器學習》,你就需要對微積分,線性代數,概率論,數理統計,甚至是隨機過程都有一定的基礎。

清華學神韓衍雋跟我說:他編代碼的感覺不是很好,所以就走學術型編程道路,現在一大半時間都是在研究數學。


綜上所述,如果你只是想找個基礎的編程工作,並不需要對數學有太深瞭解;但是如果你想搞一些前沿的東西,那麼光編程還不行,還要補補數學的課。

堅持優質原創,分享我的經歷和見解。如果您喜歡我的答案,就請點贊和關注,並在評論區發表高見吧!


佩子臨


數學對於編程的重要性越來越強,數學是科學的基礎,很多研究都依賴數學,數學更像是一個基石,走向更高層面的基石,如同要成為一個物理學家首先是一個數學家,要學好編程,必須數學要懂,在這有兩個重要的字眼學好,要做編程數學不好也是可以做的,大部分的編程的場景對於高深數學應用相對比較少,所以很多數學不是特別好的人也能把編程做的不錯,但如果涉及到深層算法,或者高性能框架方面的東西,數學不強要玩轉相當費力,數學之於編程主要表現在兩個層面一個思維邏輯,一個是編程裡面複雜的數學算法需要數學基礎。

正常來講思維邏輯這個主要是一種習慣,編程畢竟屬於邏輯性非常強的,有了這種習慣對於從事編程職業有非常好基礎,編程要和電腦打交道需要更多理性的思維,數學思維對於編程有個提升作用。算法對於編程顯得異常重要,算法對於編程的影響越來越大。未來對於程序員的需求量只會越來越大,但是對於技能的要求也是越來越高,特別是現在人工智能的推進,對於各種算法的要求異常的迫切,未來的程序員對於數學是必備。

甚至很多人覺得數學不好,直接決定了程序員的上限,雖然說的有點誇張,但數學對於編程的重要性已經很突出了,而且這種重要性越來越強,現在很多大公司的面試裡面摻雜著對算法的考察一項,像頭條這種主要依賴算法為導向的公司算法就成了主打方向,所謂的智能很大程度依賴以強大的算法和規則。之所以很多人覺得學歷低就不能學好編程,學歷正常主要影響兩個因素,英語和數學,英語可能直接影響更大一點,畢竟編程語言還是英文為主,數學上來表現不是那麼明顯,後續才能看出來,編程裡面有很多和數學表現不是很明顯,所以很多人不服氣覺得數學一般編程做的也還可以,只能說做的面相對比較窄,還沒有全面鋪開。

數學對於編程的重要性不言而喻。

希望能幫到你。


大學生編程指南


數學是一切科學的基礎,也是計算機科學的基礎。

不僅一切算法基於數學,而且沒有數學,是無法編程的。

編程中的加減乘除運算基於數學。

編程中的if/else判斷是數學的邏輯判斷。

編程中的進制轉換是基於數學。

數據庫的left join等也是運用了數學中的集合。

光這些基礎的,可能有人不以為然。再看一道編程題。

給定表達式[x/2] + y + x * y, 其中x,y都是正整數。其中的中括號表示下取整,例如[3/2] = 1 , [5/2] = 2。
有些正整數可以用上述表達式表達出來,例如正整數2,當取x = y = 1時,可以把2表達出來 ( 解釋下:當x=y=1時, [x / 2] + y + x * y = [1 / 2] + 1 + 1 * 1 = 0+1+1 = 2 );
有些數可以有多種方式表達,例如13可以由 x = 2 y = 4 以及x = 3 y = 3來表示;
有些數無法用這個表達式表達出來,比如3。
從1開始第n個不能用這個表達式表示出來的數,我們叫做an,例如a1=1 a2=3,給定n,求an。
輸入:n值 1<=n<=40 輸出:an % 1000000007的結果(因為結果較大,輸出an %1000000007的結果)

這道題可以說不懂梅森質數,大數取模(a^n mod b)是不可能做出來的。

數據結構中的圖論等等基於數學,一切算法皆基於數學

“高等數學在數學計算機科學基本用不上”,這句話可以說大錯特錯。說出這句話的,要麼壓根就不是編程人員,要麼就是連編程的大門都找不著。

就拿現在最火爆的人工智能來說,先看最簡單的近鄰算法。

再看決策樹

再看貝葉斯

再看梯度上升/下降。

svm

可以說,沒有高等數學,連人工智能的門都找不著,如何編程?

數學不是異常糟糕的語言,更不是落後的語言,相反,數學是最簡潔最優雅的語言。

編程不過是數學實現的一種工具。

如果想在編程路上走,尤其想在人工智能這條路走,請好好啃數學

個人編程多年,一如老老實實啃數學。


IT老友


如果數學指的是加減乘除等日常數學,那無疑是非常重要的,沒有數學就沒有邏輯,寸步難行。

但是,如果數學指的是高等數學(矩陣,圖論等等),那就未必。不是說不用,是根據程序猿種類(怎麼這麼奇怪)不同而不同。比如你是前端工程師,數據全部由數據工程師以及後端小夥伴優化好了,你只是負責展示自己交互優化,那麼你就不需要特別高超的數學能力。

也不全然,比如你還是前端,但是憑自己能力爬了千萬級數據,然後打算做個軟件賺點錢,此時你又需要較強數學能力了。

簡單理解:跟數據打交道的程序猿需要高超的數學能力,其它未必需要。當然,有自然是更好。


前端紳士


我想起我們剛進大學時我的大學老師就說,你們不要把編程想成就是簡單的寫代碼,雖然你們現在要新學很多編程相關的基礎知識,但你們要記住,編程的核心是算法,代碼誰都可以寫,但是算法卻是大多數人做不出來的


看星星在天上起舞


數學知識可能高中就差不多了。但數學思維,多少都不會多,推理歸納,這可能就是碼農和程序員的區別了,最後拼到底就是這些內功了。


聽書問道


可以說數學知識不夠寫不出好的代碼。比如說譚浩強的教材中經典的例題,ABC三個數排序問題的最佳答案就是運用了冒泡算法而得到的。再比如,文件夾結構使用的圖論的樹形分支。數據庫索引使用的二叉樹原理。多線程併發和死鎖的證明中用到的時間邏輯。if else中的三段論邏輯思想。TRUE/FALSE/NULL使用的三值邏輯。可以說編程技術中數學無處不在。


日衝信息 黃


我感覺,數學對於業務層代碼幫助不大,但是對於涉及算法、高速數學計算部分還是很有幫助的,業務層一般用到數學的不多!但是不代表不重要,也不代表非常重要!編程的邏輯性強,但不一定和數學有關係;我個人認為數學不等於邏輯,邏輯也不等於數學。


鵬城程序猿


有一句話說過,一個數學家不一定是計算機專家,但一個好計算機專家一定是個數學家。你在程序裡要解決一個數學題,你都不會做,怎麼用程序來實現解題呢?所以說數學對編程來說,至關重要


分享到:


相關文章: