1. 程式人生 > >只有數學學得好的人才能寫程式?

只有數學學得好的人才能寫程式?

數學學得好的人才能寫出結構優秀的程式,這是真理。但是有的人思想走極端了,變成了只有數學學得好的人才能寫程式。

個人感覺數學對於電腦科學來說是不可或缺的,畢竟可以訓練思維方式,而且涉及到大型軟體:搜尋引擎、電腦遊戲、線上交易、網上銀行、資料倉庫、宇航飛行、實時控制等等,都涉及到大批量資料和快速響應之間的矛盾,如果在這方面要進行程式優化,離開數學是不可想象的。 但是話說回來,脫離實際,一味拔高數學的地位而忽視了實際情況,甚至發展到貶斥其他學科對於電腦科學的影響的話,那我想肯定是走到另一個極端了。畢竟寫程式是要給人用的,你的一舉一動都離不開這個社會,片面強調自身特殊性,卻忽視了和其他專業人士的溝通能力,就會作繭自縛。而且我認為對於計算機學科而言,數學更接近於工具,什麼時候要用什麼時候不需要用,怎麼用?這些完全取決於開發者的個人領悟。決定一套軟體或者一個程式編寫得是否優秀的因素有許多,演算法設計是其中一個因素,但不是唯一因素。

本科在計算機科學系讀,當時也有一批數學不錯的牛人,不過怎麼說呢?其中有的人(不是所有)確實表現得有點難以與人相處。所以一畢業大家就各奔東西,每次同學聚會也少有人提及他們。雖然不能把數學學得好和不能與人相處聯絡到一起,但是我覺得至少說明在學校學習的時候一味強調某門學科學得好忽視其他方面學習,那離開學校後肯定會舉步維艱,至少前幾年肯定是這樣。

反過來,接觸過不少軟體學院的學生,感覺語言能力、溝通能力都比我們那時候讀本科要好,掌握的技能都比較貼近實際,工作上手比較快。但看看他們的課程安排,數學課比例相對不高。兩相對比,感覺軟體學院學生畢業後更能適應環境,但是如果不重視理論上升級的話,後勁可能有點不足;計算機系學生太重視理論,有脫離實際嫌疑,一進入社會前幾年會很被動,後面可能會好些。

這裡我要強調一下,我決不是替某一個學院或者專業搞促銷或者故意擡高某個專業貶低另一個專業。絕對不要硬性比較出誰比誰強,誰比誰差,有這樣想法的人心胸很狹隘。只能說各有特點。

回到數學,個人覺得大學學過那麼些數學課,用得多的還是離散數學、計算方法、數理統計、概率論、組合分析。電腦科學別的方面沒接觸過,不敢亂髮評論,學習軟體開發特別是程式設計,剛開始的還覺不出數學對於寫程式有多大意義,剛開始滿足於在eclipse上裝多少外掛來實現多麼複雜的圖形介面,用rose畫出類圖。後來開始覺得老是這樣只能是接觸了點皮毛,於是開始看《think in java》、看《面向物件原理》。再後來發現就算你對java、uml瞭解得滾瓜爛熟,但是涉及到演算法優化的話,就繞不開數學了。這時候開始覺得當時大學有的馬馬虎虎過關的課現在顯得挺珍貴的。

不過話說回來,個人感覺過去計算機專業培養思路確實不適應擴招後的形勢:明明是畢業後面嚮應用,卻要按照科學研發人才模式培養,造成巨大浪費。