Ⅰ 編程所需要的數學知識
計數的能力: for循環中經常用, 小學生都會。
數字的加減乘除 : 每種編程語言都會內置支持, 都不需要你自己算
余數和模: 偶爾會用得到
集合運算: 交集、並集、差集 , 編程中用的不多。
布爾運算: AND , OR, 非
各種進制: 二進制、十進制、十六進制
還有哪些? 我想不起來了, 歡迎補充。
當然這和我從事的編程領域有極大關系, 如果我做的不是Web開發, 而是搜索,游戲, 安全,演算法,人工智慧等, 那對數學的要求估計就開始飆升了。
其實計算機的基礎是數學, 只是我們一直在應用層編程, 體會不到罷了。
比如說我們日常使用的計算機,絕大部分都是所謂馮諾依曼結構(參見文章《馮·馮諾依曼計算機的誕生》) ,這個結構可以說是圖靈機這個概念機器的具體實現,而圖靈機就是一個純數學的東西啊 ,沒有圖靈機這么偉大的抽象作為數學基礎, 現代的計算機是製造不出來的。
再比如說密碼領域需要很多數論的知識,RSA演算法就涉及到大素數的分解;
我們常用的Mysql, Oracle 等關系資料庫的底層基礎是離散數學的笛卡爾乘積;
通信系統中很重要的一個原理就是傅里葉變換。
編譯器會用到有限狀態機;
數據的壓縮會用到各種數學的演算法;
項目管理中的進度管理,甘特圖數學基礎就是圖論。
Ⅱ 數學建模比賽中,程序員具體需要做些什麼,以及程序員的數學水平應該達到什麼程度
在本科階段,我本人參與過數學建模,我們團隊最終也獲得了全國一等獎的榮譽。在數學建模比賽中,程序員起到的是至關重要的作用,因為大部分工作都是由程序員去完成的。
程序員具體應做好以下工作:
1、你要去建模(要會微分方程, 機器學習演算法, 圖論);
2、寫程序搞定你的模型(做A題的話你要會數值分析, 有些地方也叫計算方法. 至於決策樹, 圖論, PCA降維, 聚類分析什麼的, 那就是程序員的老本行了);
3、debug你的程序得到看上去正確的結果;
4、在論文裡面詳細的描述你的演算法和實現過程。
總結
個人認為,程序員在數學建模中起到最重要的作用,如果一個團隊裡面只有一個程序員,那麼這個人的工作量無疑是最大的。
Ⅲ 程序員需要怎樣的數學基礎
離散數學對程序員來說非常重要,還有組合數學、線性代數、概率論、數論等等,即使你將來不做研究,這些基礎知識也能極大地提高你的水平。計算機科學對離散數學的要求很高,建議你先學習前面提到的這些課程,然後學習計算機演算法和數據結構,再配合到網上的在線題庫做題,過程很艱辛,但是對你的幫助會很大。
推薦書目:
《具體數學》(先學完前面的數學課程,在水平有一定進步以後再看)
《演算法導論》(應該人手一本的好書)
簡單來說,學數學的目的,一方面是活躍你的思維;另一方面是為了深入學習演算法打基礎,設想一下,同樣的問題,普通人的程序要幾十分鍾甚至幾小時幾天才能解決出來,甚至根本無法解決,而你精心設計的程序卻能在1秒內解決出來,這就是數學的魅力、演算法的魅力。
其實,一切取決於你是否想做一個高級程序員。如果你做體力活(其實一般編程別人都認為是體力活),那你可以不學,因為你用不到,但是,你要是做技術上的創新,做個很強的程序員,沒有數學的支持,很難。
你既然學習了C,c++,你也知道演算法的重要性,同樣一個問題,我用13行程序解決了,我的同學居然用了33行,因為他不懂的用數學。你要達到什麼高等,取決於你的數學修養。當然,要做一個普通的程序員就不用學習了。要挑戰自己,做個好的,優秀的,學習數學吧!