數學不好該不該學計算機?


軟體工業里大概只有 0.1% 的問題需要真正的高深數學知識。

另外 0.5-1% 的問題是這樣的,用二維或者三維圖形可以讓絕大多數大一學生輕易理解。但是現在把輸入和輸出都變成等價的數組或者 bitmap 然後讓你用代碼中的公式解決,並且在過程中還要考慮諸如內存每次只能處理局部數據然後再組合到一起。能解決這種問題的人就已經被稱為程序員里的「數學牛人」了。其實需要的數學只是大一高數。

另外 99% 就是初中數學。

需要的是演算能力而不是數學能力。


我一直的觀點是:

數學只是計算機科學的一個工具,計算機科學還涉及很多非數學的知識,光數學好不能支撐你爬到行業的頂尖。

那麼是不是行業頂尖必須數學厲害呢?看你目標是什麼

搞科研數學不好恐怕不行,甚至你沒有個phd的學位都不行(對,搞科研更講論資排輩)。

搞項目?大家可以看看github上的著名開源項目,有多少是用到了大學數學的。你能說這些項目不是計算機科學的精華嗎?

所以,我認為【高等數學】既非學計算機的充分條件,也不是必要條件!


你要先確定,有多不好


我數學也學的不好,希望你耐心看到最後寫數學的,然後

應該堅持學編程這是以後社會的基石

應該堅持學編程這是以後社會的基石

應該堅持學編程這是以後社會的基石

作者:franzlisting 鏈接:https://zhuanlan.zhihu.com/p/25754525來源:知乎 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

學個python

會用列表。 會用字典。 會寫函數。 會導入第三方庫。 寫面對象程序。 會用pycharm之類的ide進行單步調試。 後面想寫一個python入門和進階。 可以關注一下我的專欄。

學個爬蟲

獲得新鮮的數據,你會學會get,post,cookie,session。 有的時候你拼不出來url或者破解不了規則你會用Selenium。 你會理解ajax,用戶認證,web漏洞。你可能會在這進行信息安全入門。

洗數據

你可能會學點正則,對編譯原理有好處。

學個linux

爬蟲在筆記本上開不了多久,你會學linux,買個伺服器,一直跑著,可能你就運維入門了。然後你可能會優化一下,ps,top,kill什麼的你的操作系統會有進步。

解析網頁

爬下來html以後,你自然會學html,css,js。用beautifulsoup解析用,python或者什麼其他的工具格式化。

存儲數據

你的數據洗好以後,你會需要存儲,可能是csv,可能是sqlite,然後不斷升級,mysql,mongodb。 單機不能滿足你會搞個hadoop。搞了hadoop你的運維可能進階。

開始學數據挖掘(這裡是數學)

寫個預測房價,你可能對微積分有新的認識。 學尋找相似用戶,你的線性代數會走上正軌。 學樸素貝葉斯識別垃圾郵件,你對概率論會有新的認識。 神經網路學了你可能對信號與系統有新的認識。

更多模型

KNN k臨近 這個問題直觀的來說就是一個圖裡有一些點,看他們能套在哪個圓裡面。根據這些圓分類這些點。你想應用的話就把你的問題變成平面上的點,然後照著demo做,然後應用的好沒準能寫個論文獲個獎。

NB 貝葉斯分類 這個我覺得沒啥可說的。基於概率分類。這事我覺高考那點概率就能理解的大概其。高中生物那會老算,捕捉標記概率什麼的。

HMM 隱馬爾科夫模型 這事一個狀態變換的模型

NN 神經網路 沒明白,我再看看。覺得和信號有關有階躍函數啥的。我信號掛了。

SVM 支持向量機 適合區分兩個問題分黑白用的,適合二分的問題

聚類 根據卡氏歐氏距離之類的分類 這個我在opencv裡面用過。

其他語言

你實習的公司可能會用java,go,scala。

創建於 2017-03-14

著作權歸作者所有


數學不好,或者說不打算學數學,那還是不建議學計算機。

你想啊計算機為什麼叫計算「機」?主要功能就是計算啊!數值計算,非數值計算…

另外我不相信你如果沒有數學基礎和思維,讓你去寫一個功能或什麼的,你寫的代碼會有良好的邏輯結構。

看看現在大火的深度學習機器學習人工智慧,你沒有深厚的統計知識基礎,現代基礎根本看不懂那些領域裡的理論知識好嗎,你就連一個公式都看不懂;如此這般你你怎麼去寫代碼運用?

很多人說學計算機又不一定要自己寫代碼,日常工作就是調用別人寫好的庫,函數就好了啊,你看我不是做的好好的嗎,工資高,美滋滋的。但是我說,這些人過兩年就會來知乎提問了「程序員是吃青春飯的嗎?程序員是不是只能做到30歲?如何看待華為裁掉34歲以上的員工?」

不說了,我去學習一下概率論與統計,還別說,挺難。


該啊,大多數用的到高深數學知識的地方都有人給你封裝好一個library了


畢竟現在更多的是面向 Google 編程,面向stackoverflow 編程,只要你理解能力不是太差數學再不好也還是能做出一些活計的…

我們不是生產者,我們只是 github 的搬運工


這個題目早已有類似的了

數學不好的人,是否還應該堅持學編程?https://www.zhihu.com/question/57020521


該。這個世界上有99%的編程種類的工作,只需要使用不超過初中數學,連充分條件和必要條件是什麼都不需要明白(經常可以在知乎上看到實例(逃)。


那就學數學啊……

很奇怪,為什麼你不會編程,卻覺得自己能學編程,而你自認為不會數學(或者數學不好),卻不去學數學。

難道有人說天生就會的嗎,不會就學,這不是很正常嗎?


做小規模問題不需要

但是


額,看來大部分人並不能搞清楚計算機科學與技術,軟體工程,網路工程,通信工程,控制工程,自動化,測控技術,智能工程這些專業有什麼區別和聯繫。計算機科學與技術和軟體工程分別是兩個大門類,區別還是比較大的,計算機科學與技術畢業一般頒發理學學位,軟體工程是工學學位,計算機科學與技術真的不是去學編程,如果只是想學好編程,藍翔足夠了,所以@vczh說學編程不需要會數學也沒錯,但是計算機專業不是學編程的專業,軟體工程也不是只學編程,當然學好編程就可以找到工作是事實,但是上大學也不是為了找工作,是為了培養思維。

所以回到題上,數學不好,是哪種不好?不要以高中數學成績給自己下定論,高中數學成績好,一般能代表數學比較好,但數學成績不好絕不代表數學不好,很可能只是不擅長計算,而數學是不等同於計算的,更多的是形式邏輯,所以你要好好審視自己是哪一種數學不好。

如果確實是自己沒法接受形式邏輯的思維,那學計算機科學會比較困難,如果僅僅是不擅長計算,在數理邏輯方面沒有困難的話,學計算機也應該是沒困難的。

至於說學編程,它並不需要什麼特別的思維特質,全世界軟體從業者過億,說明幾乎所有人都可以學會編程,但是軟體工程並不全然是學編程,而是更深層次的體系結構和軟體過程設計,軟體工程學習軟體工程更需要一種於平地處起高樓的設計師思維。

所以評估一下自己究竟適合哪個專業,選一個自己喜歡的專業是很開心的,可惜我們的應試教育讓大部分人直到高考結束之後都不知道自己想學點啥。祝好


計算機需要的數學只是數學的一個子集,說不定你比較擅長這個子集呢?

而且以後的工作里,需要比較多數學功底的也只是一個子集,大不了選那些不怎麼要數學的工作嘛。

不過說實話,你要是高數成績不好的話,跟那些數學成績比較好的人比起來還是有劣勢的。

就像明明二本也可以出人才,但學校/企業都會懶得從中挑拔尖的,而是直接設門檻,寧願招一本里稍差一些的人一樣。


很多人腦補出來的「數學」都是數學分析,線性代數這樣的數學,但其實「數學」二字的含義遠不止這些。

拿最常見的東西舉例,正則表達式的背後是有限自動機理論,這個是數學;SQL的背後是關係代數,這個也是數學…從這個角度來看,確實要學好數學的。


沒什麼不可以啊,身為一個目前在我國的5所top 3大學(還是7所來著……總之沒毛病)中的某一所里就讀,準備未來繼續去啃 CS Ph.D. 的學生而言,我的感想就是,數學好對於學CS是錦上添花的事情,是有優勢的(優勢有多大因研究方向而異),但對於學好CS而言,數學好是否是必要條件,我覺得未必。

我數學可以說是相當差的那種,高中所有科目里最差的就數學,上大學以後高數也只是堪堪過了及格線,概率統計依然6字當頭,線代和離散也只是勉勉強強的80上下。

但這些基本不怎麼影響我學計算機,我所有跟計算機直接相關的課大部分都在85以上,其中也有不少在90以上(雖然不得不說演算法我的確是學得不好……)。這個分數當然算不上學霸,但應該也不算太糟糕吧。大學四年混過幾個學校里的科研項目,也跑去實驗室里搬過磚,只要不是對數學有比較高要求的(比如一些理論型的研究),做起來也沒覺得有太大的障礙。

當然,數學好一定是有優勢的,這個必須承認。平心而論,數學好最大的優勢在於,當你想要設計一種新的演算法或者解決其他一些需要一定數學知識的問題時,你不會因為你不知道而想不出方案。

我也有做過機器學習相關的科研項目,也有被逼著去想新的模型與演算法來解決相關的問題。在這期間最大的感受就是,如果我數學足夠好的話,我糾結了一個月的問題,也許別人幾天就解決了;在我想著「也許這麼做結果會更好一點」的時候,別人或許早已能夠通過數學推斷出結果的好壞了。

這也是為什麼我在選未來研究方向的時候堅決不選機器學習或者 Data Science 之類的東西,不是我不想,而是寶寶我實在是做不到啊……/(ㄒoㄒ)/(雖然現在覺得機器學習這種類型的工具,似乎不管去到哪個領域裡都會用到,所以還是乖乖重新撿起概率統計學習去了……學一遍不懂,學兩遍三遍也總能夠弄懂了吧OTZ)

這些都是對走科研方向的人而言的,如果是作為一個碼農去找工作的話,感覺數學的重要性應該會更低一點吧。


沒有該不該的問題,如果你想學,就可以。

大部分情況下,並不需要用到多高深的數學知識。

可以等到你需要的時候再加強。


英語不好才不該學計算機。


講幾點吧:

1:計算機程序運行的本質是運算,當然和數學分不開。

2:如果只是想做做應用開發,當一當搬磚的碼農,那數學好不好沒多大關係。大學本科需要掌握的數據結構課程大概就是一般應用開發對數學要求的極限了吧。

3:就算數學不好也可以學,反正用得到的時候總會逼你去把數學學好的。(想我這種高中數學長期不及格的人,現在正在惡補線代)

4:如果不具備3所說的情況,又不甘於2所說的情況,那就不要學。

5:數學只是學好計算機的必要條件,而不是充分條件。

6:除了數學,還有一門課程叫哲學。這對程序設計能力的影響是很大的。今天就說個狠話吧,90%以上的程序員看不懂《設計原本》


一直搞不懂數學不好跟計算機有什麼關係,現在最經典並廣泛使用的圖靈機的模型,就是一張無限長的紙帶,然後在上面做運算修改操作,理論上來講,古代帝王只要集成幾百萬的人做一堆加減乘除,忽略人與人之間信息溝通的代價,也是可以實現今天的計算機模型的,這並不是多麼牛逼的東西

至於編程,以今天的計算機的計算能力來講,即使你完全不懂演算法,也不妨礙你做一名合格程序員,因為絕大部分程序員編寫的程序應對的運算規模並不是很大,何況今天機器性能已經很強了,編寫出正確的程序遠遠比編寫速度更快的程序要重要,更何況運用科班教科書上已知的演算法來解決未知的問題 並不需要多麼高深的數學知識。

未來程序員需要的計算機知識會越來越少,懂軟體架構 能夠管理軟體系統模塊複雜度 能更好理解開發業務模型的人才能有更多的發展空間


看了很多答案。

小菜鳥斗膽說兩句。

我現在的想法是,學計算機的人最重要的是快速學習的能力。

數學重要嗎?作為一個線代只能考50的文科轉系渣(蔽渣校要求低,40及格),我也能深切感受到數學在CS里的作用。圖形學人工智慧數據挖掘機器學習量化交易,所有這些領域與數學均密不可分。

數學從某種程度上決定上限,一個寫增刪查改的程序員也許收入也並不差,但是除了錢之外總有人會有點更高層次的自我價值追求。

但是數學卻不是一個工程師唯一重要的東西。你還需要看得懂英語寫的文檔,學會和別人合作,思考需求的邊界,轉化和建立實現的模型,設計整個系統的實現細節,選用合適的既有技術,會用Google快速找到答案,編碼,最後知道怎麼測試這個系統并迭代。

所以,我發現我本科所學的,多半是設計和機制層面上的東西。演算法是怎麼設計的,為什麼要這麼設計,適用於哪些問題;數據結構是怎麼設計的,為什麼要那麼設計,能幫助解決哪些問題;操作系統是怎麼設計的,為什麼要這麼設計,有哪些經典的設計原則和案例;資料庫是怎麼設計的,要注意什麼問題,有哪些經典的設計和案例;分散式系統是怎麼設計的,有哪些演算法和機制,哪些經典的設計和案例...諸如此類。

這些東西,在99%的工程里,比數學要重要一丟丟。

但是在剩下1%的工程里,數學好的人會是核心。

對於數學,也不必妄自菲薄。可能是我學得淺,沒有覺得離散,關係代數或者自動機理論會有多麼困難,本科有限範圍內的知識正常高中畢業應該是都可以學得會的。高中數學偏重計算和很多tricky的技巧,像我這種腦子慢的人確實很難掌握。但我的感受是,本科階段比較側重對概念的理解。

真正要用得時候卻不會怎麼辦,題主你看到有些回答嗎?我可以。。。現學啊(

學不通不要緊,反正能達到解決問題的基本level就行了(

學計算機,真正重要是這種快速學習的能力(


推薦閱讀:

貪心演算法 啟發式演算法 近似演算法 區別?
c語言基礎差,數據結構學不會怎麼辦?
為什麼windows 可以直接支持skylake 的驅動?
電腦卸載藍燈後,edge沒法上網了,TGP也沒法用,怎麼辦?
32位的cpu只能定址4GB的內存空間,那麼硬碟,flash這些存儲設備是如何定址的的?cpu怎樣讀取其中某個地址的數據?

TAG:計算機 | 軟體工程 | 計算機科學 |