數學在計算機科學中佔據什麼樣的地位?
王垠,你好!這幾個月一直在關注著你的博客,在你的觀點中lambda calculus佔據比較重要的地位,而你把它歸類為邏輯和語言(不知道我有沒有理解錯誤)。我很想問一下,在你看來,數學在計算機科學中佔據一個什麼樣的地位。很多人都覺得TAOCP是演算法和數學的一個巔峰,如果說你對TAOCP不是很感冒,那麼你對《Concrete Mathemtatics》的看法是什麼呢,你對數學的看法又是什麼?其實我是一個菜鳥,主要就是想了解一下你對數學的看法,要是你能對像我這樣的初學者給一些建議就更好啦(我看了你的《如何掌握程序語言》,已經看完TLS,開始看SICP了)。@王垠
補充:其實我問的問題並沒有那麼廣,我的問題是針對這篇文章的:丘奇和圖靈,看到那句「丘奇代表了「邏輯」和「語言」,而圖靈代表著「物理」和「機器」。」我當時就比較疑惑數學應該在哪裡。
類似提問已經很多了,但題主對具體的人感興趣,無奈不好重定向。
題目問單向的關係,但許多回答只涉及反向,我就回答一下雙向的關係吧。
本來這種 「誰對誰更重要更基礎」 「誰對誰的地位之類的討論」 都挺扯的。計算機是工具,狹義上是計算工具,廣義上是解決問題的工具。
數學也是工具,是抽象描述與思考的工具,最終用於解決問題。數學研究和其他各個學科,各個行業一樣,利用計算機提高工作效率。
計算機行業和其他各個學科,各個行業一樣,利用數學來抽象和思考。理論計算機科學,研究與計算機科學有關的數學問題,屬於數學的一個分支。這是計算機為數學提供的課題,是數學在計算機上的應用,兩把刀互相打磨。如同材料科學不是計算機科學的全部,理論計算機學不是計算機科學的全部,也不是數學的全部,甚至不是邏輯學,離散數學,組合數學的全部。同時,數學也不是計算機的全部。他們只是關係很密切,而已。
何必要爭誰對誰重要,誰是誰的全部,誰是誰的基礎,誰在誰心裡佔據什麼地位……
瓊瑤看多了吧,肉麻死了。在寫複雜演算法的時候,數學基礎和理論就很重要了,比如數據挖掘,很依賴於數學。但是平時開發估計用不上。
有的學校把數學專業設置為計算機科學,很明顯,計算機與數學是密不可分的。在計算機領域,網路神經,推薦演算法,人工智慧,機器人學習等等都是以數學為基礎。
學好數學,不僅能夠暢遊理科領域,工科領域也不在話下。理科中的資料庫就是通過對數字進行處理和管理的一門學科,和數學相關度及高,企業界對資料庫管理者的薪酬也是毫不吝嗇,起薪都有幾十萬,還是普通的。此外,數學相關聯的行業還有金融學,複雜的金融計算模型的構建都需要數學底子,金融領悟的研究員薪酬也是高的讓人羨慕。,
最一個學術界比較火熱的數學與計算機結合的例子就是數學建模大賽,每年都有舉行。建模大賽是對數學應用最好的展示,也是計算機與數學結合的最緊密的比賽。本人以前也參加過兩屆建模大賽,也小獲獎項。對此深有體會。第一次回答問題,希望能有所幫助。
我認為,要回答這個問題,首先要明白,我們所說的,是計算機科學中的數學,還是數學中的計算機科學。因為,數學和計算機科學的發展可以說是相輔相成,離開了數學自然不會有計算機科學,離開了計算機,數學中也不會有幾天的發展。
前一個方面,因為我不是科班出身,所以沒法深入地講解演算法、離散數學之類的東西,不過作為計算機科學中的數學基礎,作為一個希望未來投身IT的人來說,就像是內功一樣,是必修課。把這個方面作為自己主修的人,應該可以說就像是「氣宗」派。
而我本人應該算是「劍宗」,所以對計算機能幹什麼更感興趣,而且從中看到了一個更加廣闊的世界。這就是數學中的計算機科學,用計算機來解決數學的所有問題,例如最優化理論,離散優化理論,數值分析,機器學習,人工智慧,數據挖掘,計算機視覺,生物信息學,等等。沒有了計算機,這些理論依然存在,僅僅是這些領域的問題離開了計算機就無法求解而已,它們的本質仍然是數學(統計學、運籌學等)。
所以,從個人角度,更希望自己能手握名為「computer」的屠龍寶刀,及世間萬物之象。關於數學我想補充下,數學也有很多是抽象的分支,像抽象數學,集合論,拓撲學,我們學的線代和高等代數都是這些抽象內容具體化。所以說計算機科學雖然也有抽象的東西,但具體到計算機這個東西,肯定就會有很多限制性。計算機的一些抽象理論確實和數學一些抽象理論很類似,本質也討論一個東西,只不過著眼點不同,一般來說數學更廣泛。然後各類演算法也是建立在一些基礎數學理論上的,比如求最大公約數的演算法,其實是建立在同餘理論基礎的。但實際來說,數學的歷史並不一定是按照抽象到具體,或者是具體到抽象,伽羅瓦理論便是例子。只不過是人類的認知越來越高。說到物理,那跟數學就更加相關了,關於物理的研究可以推動數學的發展,牛頓的微分學,數學的理論又可以為物理提供工具來想像,愛因斯坦的理論,很多都是拿數學上的成果。計算機跟物理是一樣的,但又和物理不同,說到底計算機是人類發明的,物理是客觀的。但是計算機又是人類發展到一定階段,認知到這個一定階段,會有的產物,不是計算機就是類似計算機的東西。lambda calculus在數學中有體現,就是沒這麼具體化而已。也沒加以一些限制條件來做討論罷了。至於TAOCP,它的有名不是在於它有包羅所有演算法,其實這是很難的,時代在發展,作者寫得那麼慢,它的厲害之處是有了數學的嚴謹,但是一般看來會把問題複雜化,但往往到最後你可以看到演算法和數學之中令人驚嘆的地方。《Concrete Mathemtatics》只是作者認為對於計算機來說,比較有用的數學基礎罷了,要學好數學,大家還是先去看看人家數學專業學什麼了。TAOCP是具有啟發性和研究性的書。其實也沒有一本書敢說是演算法巔峰,包羅所有,但是TAOCP無疑是這些演算法書中最明亮最無法替代的一顆明珠。還有就是數學的發展,很多時候都不是某個猜想定理被證明,而是某個分支數學被創造,某個客觀的規律被抽象化,建模。
所有工科到達PhD level以後,全是數學,沒有別的。TAOCP, CLRS只是CS裡面一小點點數學的部分,看看Machine Learning, AI, Cryptography... 全是數學,計算機就是因為數學而生的嘛:)。換句話說,數學之下的CS是碼農(當然也有企業家),數學之上的CS是科學家(當然更有企業家了= =)
感覺數學不好可以補,智商不好才是硬傷!
菜鳥的觀點:俺們老師說過,大型IT團隊里,薪酬最多的是利用數學工具做架構的。另外,學校里安排招聘會的時候,最容易得到offer的往往是對數學研究比較深的學霸,而不是整天在程序海洋里遨遊的程序猿。
我來說說我的角度
1:做研究,數學很有用2:做項目,數學不會直接用。工作了5年了,感覺物理的思維方式還管用些。個人感覺看你主要的方向了,如果是網路方向的,可以主攻概率和統計、圖論啥的,通信方向的研究資訊理論,圖像視屏的看編碼,當然還有很多了,除了這些外,編程、演算法設計等等,學是學不完的。這就是理工科男的杯具生活:(
除了「計算機數學*,解決實際問題也要用到對應的數學啊。
比如做個控制系統,總得用到信號處理和控制演算法吧。除了安全領域用到數學比較多之外,其他計算機分支中用到的都只能叫做算術
推薦閱讀:
※為什麼要公理化實數而不是從自然數導出?
※搞數學、物理的人如何看待搞計算機的人?
※棱長為a的正方體任意擺放,在水平面投影面積最大值為多少?
※數學中很多技巧和輔助函數都是怎麼想出來的?
※在什麼條件下,最大似然估計值是無偏估計?