回覆列表
  • 1 # 悲了傷的碼丁

    站在程式設計師角度,常用演算法與數學沒有一毛錢的關係,僅是評估演算法是定量分析下。但對多數程式設計師而言,這些常用演算法還需要再自己評估嗎?平時只是呼叫庫函式而已。

    站在科研人負角度,解決某一具體問題,通常要採用數學模型進行建模分析,但這個模型與實用演算法之間通常有非常大的差距。

    結論:是程式設計師的話,深刻理解常見演算法,並應用其解決自己工作中的常見問題,不要老想到數學家的事!是科研人員的話,多多發論文,多申請基金,反正現在國家在基金支助上不差錢,就不要想著什麼實用了,這麼多年都證明:真正實用的是少數!

  • 2 # 精彩輯選

    謝謝,這是一個比較普遍的問題,而且被問了很多次,在大學裡面孩子們在選擇方向的時候,如果是知道程式設計這個方向,基本上都會問出這個問題。我自己本身,教過中學,目前在大學裡工作,雖然不是做程式設計的,但是主要做計算機設計與媒體方向,是和計算機相關。

    回到這個問題,我覺得應該從以下幾個方面去了解

    第一,我覺得程式設計的人一般都是具有良好的邏輯思維的人,因為,如何用程式語言的方式,把一件事情,說清楚,這本身就是一個邏輯問題。因為依靠程式去實現一個目的,所使用的方式不止一種。而數學,被認為與邏輯,非常相關的一個學科。

    第二,大學裡軟體類的程式設計相關專業中要學數學,比如高等數學,線性代數,離散數學,資料庫等,而且都是專業課和考試課。

    第三,程式設計和數學有關,但並不是說,不學數學,程式設計就沒法學,其實是越往高層,對數學的要求,就會越低,比如,以前網路程式設計系統程式設計,大都是封裝好的,但對於一個系統來說,整體的規劃和設計更關鍵,這就是說前期的需求分析,邏輯結構設計,和物理結構設計比編碼更重要。

    最後一點,我想補充的,很多人認為學設計,就和程式設計沒有關係,其實這也是不對的。特別是圖形學理論的學習,沒有線性代數基礎,是根本看不懂的,還有在三維檢視方面,又涉及到高等數學當中的座標知識。很多演算法,對於平面幾何分析水平的要求也是很高的,比如說,如果你想搞遊戲設計,動畫電影,很多時候也是要編寫指令碼的,否則畫面,是沒有那麼好的。

  • 3 # 薛定諤的小貓貓

    數學對於計算機演算法程式設計來說非常重要。我主要從下面兩個方面來說明它為何這麼重要

    一. 培養邏輯思維能力

    數學和演算法程式設計都需要較強的邏輯思維能力,程式程式碼的邏輯結構、前後聯絡及處理方式都需要較強的邏輯思維能力,而數學學得好,邏輯思維能力強,通常演算法程式設計領悟也會更深。

    二. 數學應用於演算法程式設計

    這一點應該是數學與演算法程式設計比較相關的重要原因,無論是計算機的底層還是非底層,數學知識到處都有體現。例如計算機底層的二進位制、機器學習和深度學習的梯度推導、SVD分解、張量分解、PCA求特徵值、最佳化問題、密碼學的大數分解、機率圖模型等等都是與數學特別相關。下面我隨便舉兩個例子,可以自己體會

    例1: 給定一個數x,開平方並取倒數。

    程式碼實現如下

    這是當年的經典遊戲雷神之錘3裡面的程式碼,經測試這段程式碼比(float)(1.0/sqrt(x))快4倍,計算效能有質的飛躍。為此還專門有一篇論文《Fast Inverse Square Root》講解這個程式碼的數學原理,感興趣的同學可以找一下這篇文章研究一下。

    例2:給定一個數n,n可能非常大,比如10的18次方這麼大,求x^2+y^2=n的解。

    如果不用數學知識,直接暴力搜尋,時間複雜度為O(n),效率低下,而且按目前的計算機水平也很難算出來。如果瞭解Brahmagupta–Fibonacci identity、Pollard-rho分解法、二次同餘方程的解、歐幾里德輾轉相除等數學知識,那麼求解這個問題的時間複雜度大大降低,保證0.2秒內出結果。

    如果工作是演算法崗位,數學更加特別重要,因為機器學習、資料探勘、NLP等方向的底層原理基本都與數學脫離不開關係。

  • 4 # 大學生程式設計指南

    現在資料多了也不一定是啥好事情,可能還會導致選擇糾結症,很多人初學者只是在選擇程式設計什麼程式語言上就能糾結好長時間,選擇了語言然後再去選擇資料,總之的一堆選擇糾結症。很多人即使已經找到了程式設計的工作,也沒有直接的感覺到數學和計算機演算法有多少直接關聯性。甚至多了很多年的程式設計師也覺得自己演算法不怎麼樣不也是照樣寫程式碼,遇到不懂的直接在網上找下相似的程式碼,看懂了修改下照樣能推動專案的進行,只能講程式設計的火候還沒到家。經歷過一次次的專案的洗禮之後,做技術很多東西只要有耐性和毅力基本上都能做到,既然什麼都能做到,程式設計到底難在哪裡。

    仔細靜下心來想程式設計的核心是什麼,總結起來就是程式設計思想和邏輯演算法,程式設計思想需要不斷的總結歸納,框架思想也是程式設計思想的一種,需要從千千萬萬的程式碼邏輯種抽象出解決問題的方案或者框架,說的通俗一點就是解決問題的能力,問題也是分為很多種,有直接簡單的問題,有長期複雜的問題,也有未來還沒有發生的問題,解決方案有直接的辦法,也有透過設計框架來解,所以格局低一點的人可能就是著重眼前實際問題的解決,格局高的人就會想著設計一個框架也就是業內常說的輪子來規避類似問題的發生,這就是普通程式設計師和頂級高手的差距,出發點和格局都不在一個步調上。

    至於具體解決問題的模式設計,就會涉及到邏輯演算法,簡單的可能非常容易理解,複雜一點或者多種組合了基本上就需要用到數學知識了,所以只有認識到這一層面才會覺得數學這東西對於程式設計顯得特別重要,特別針對一些複雜問題或者解決根本問題上,由於自身條件或者所處的工作崗位決定,有些程式設計師甚至一輩子都不會接觸到,但並不意味著不存在,數學對於程式設計邏輯的重要性不言而喻。

    總結的東西可能和主體不太搭配,既然是分析解決問題,還是喜歡從更大的格局來解決問題,不要小瞧數學對程式設計的影響,雖然不是每個程式設計角落都能和數學扯上關係,但對於重要場景一定不會缺席,但也沒有必要為了學習程式設計專門去學一遍數學,如果是在校學生看到可能意義會更加重大一些,所以講數學邏輯好的人,學習程式設計是有一定優勢的,喜歡邏輯推理的人從骨子看是非常適合做一名優秀的程式設計師,當然真的優秀,還需要發自內心的熱愛。

  • 5 # 嵌入式宏思微想

    科學計算,數值計算,幾何運算,線性代數,離散數學,機率論,統計論,高等數學,工程數學,向量和矩陣運算,時域變換,頻域變換……這些演算法中涉及的知識,都是數學。數學是一切學科的基礎及演變,計算機程式設計演算法也是基於數學之上。邏輯不是演算法僅有的特徵,數學更需要邏輯。

    如果是從事基礎演算法工作,必需要有深厚的數學理論功底。數學+業務知識,是演算法工作的標配。如果是從事演算法的應用,那麼則不需要太深入瞭解數學,但也要做到知而會用。

    實際工作中,大部分演算法崗位都算應用級別。利用現有開源庫,修修改改,拆分重組。借鑑多於研創,說得好聽點就是,合理充分利用資源,站在巨人的肩膀上,差異化創新。

    如果你想在演算法領域上走得遠站得高,請好好學習數學。

  • 6 # 樓雁南

    一般來說兩者是沒有聯絡的,只是兩者都需要很強的邏輯能力。對於日常使用計算機程式設計演算法不需要數學,只是在具體使用中由於用途中會使用數學公式或者數學方法,這時程式語言需要執行數學公式,兩者就結合在一起了,比如在用程式語言進行影象處理就常常會用到傅立葉變換,或者拉普拉斯運算元之類的數學方法。

    另外理工科領域在大學之後的計算常常要藉助計算機進行迴圈計算或者大批次資料處理,有時為了特定的目標需要自己編寫程式,比如使用神經演算法實現最佳化計算。常常需要程式設計進行統計學的計算。

  • 7 # 一笑不樂

    程式設計演算法強調的是邏輯,簡單說就是第一步怎麼做,第二步怎麼做,直到結束。數學演算法是利用數與數之間的關係進行比較快的運算。如果數學演算法有很好的基礎,對於程式設計是有很大的幫助的。例如判斷一個數n是否為質數,一般方法判斷[2,n-1]區間內的整數是否存在能整除n,不存在就是質數。如果有數學演算法的底子就知道,只需要判斷2到根號n之間的整數是否存在能整除n,不存在就是質數。這樣做的好處就是,搜尋的範圍小了,求解速度快。

  • 8 # 烏鴉嘴華子哥1

    嚴格的來說,計算機程式設計演算法,是數學的一個具體分枝,在高中數學中,大家都要學習程式框圖,而程式框圖,是程式設計的關鍵。在計算機早期的發展過程中,計算機程式設計是歸入數學系,要學習布林代數,邏輯等很多課程,隨著社會的發展,計算機的應用越來越廣泛,計算機和其他的知識結合越來越多,計算機發展成為一個專門的學科,但,它的基礎是數學,是邏輯思維。

  • 9 # 使用者2805601918522829

    大家都被高中那一大堆的代數題,幾何題,函式題給嚇怕了,這些根本用不上的。很多文科出身的軟體工程師,在邏輯思維能力、表達能力、溝通技巧等方面,甚至比起理科背景的軟體工程師更具優勢

  • 中秋節和大豐收的關聯?
  • 小寶寶食慾亢進怎麼辦?