一個(gè)大學(xué)生將來(lái)的作為與他的數(shù)學(xué)修養(yǎng)有很大的關(guān)系。
——四川大學(xué)數(shù)學(xué)學(xué)院曹廣福
數(shù)學(xué):必然考查的能力
下面是一道世界第一大軟件公司(微軟)招聘程序員的測(cè)試題:
中間只隔一個(gè)數(shù)字的兩個(gè)素?cái)?shù)被稱(chēng)為素?cái)?shù)對(duì),比如5和7,17和19,證明素?cái)?shù)對(duì)之間的數(shù)字總能被6整除(假設(shè)這兩個(gè)素?cái)?shù)都大于6)。
這樣的試題還有很多很多,這些題目看上去都是一些數(shù)學(xué)問(wèn)題。但是世界上一些著名的公司都把它們用于招聘測(cè)試,可見(jiàn)這些公司對(duì)新員工的數(shù)學(xué)基礎(chǔ)非常重視。數(shù)學(xué)試題與應(yīng)用程序試題是許多大型軟件公司面試中指向性最明顯的一類(lèi)試題,這些試題就是考查應(yīng)聘者的數(shù)學(xué)能力與計(jì)算機(jī)能力。
某咨詢公司的一名高級(jí)顧問(wèn)曾說(shuō)過(guò),微軟是一家電腦軟件公司,當(dāng)然要求其員工有一定的計(jì)算機(jī)和數(shù)學(xué)能力,面試中自然就會(huì)考查這類(lèi)能力。微軟的面試題目就考查了應(yīng)聘人員對(duì)基礎(chǔ)知識(shí)的掌握程度、對(duì)基礎(chǔ)知識(shí)的應(yīng)用能力,甚至暗含了對(duì)計(jì)算機(jī)基本原理的考查。所以,這樣的面試題目的確很“毒辣”,足以篩選到合適的人。
四川大學(xué)數(shù)學(xué)學(xué)院的曹廣福教授曾說(shuō)過(guò):“一個(gè)大學(xué)生將來(lái)的作為與他的數(shù)學(xué)修養(yǎng)有很大的關(guān)系。”大學(xué)計(jì)算機(jī)專(zhuān)業(yè)畢業(yè)生都有感觸,計(jì)算機(jī)專(zhuān)業(yè)課程中最難的幾門(mén)課程莫過(guò)于離散數(shù)學(xué)、編譯原理、數(shù)據(jù)結(jié)構(gòu)。當(dāng)然,像組合數(shù)學(xué)、密碼學(xué)、計(jì)算機(jī)圖形學(xué)等課程也令許多人學(xué)起來(lái)相當(dāng)吃力,很多自認(rèn)為數(shù)據(jù)庫(kù)學(xué)得很好的學(xué)生在范式、函數(shù)依賴、傳遞依賴等數(shù)學(xué)性比較強(qiáng)的概念面前感到力不從心,這些都是數(shù)學(xué)基礎(chǔ)不扎實(shí)或者說(shuō)缺乏數(shù)學(xué)知識(shí)所造成的。
數(shù)學(xué)是計(jì)算機(jī)的基礎(chǔ),這也是攻讀計(jì)算機(jī)專(zhuān)業(yè)研究生的數(shù)學(xué)試卷都采用最難試卷的原因。當(dāng)然這也能促使一些新的交叉學(xué)科如數(shù)學(xué)與應(yīng)用軟件、信息與計(jì)算科學(xué)專(zhuān)業(yè)等飛速發(fā)展。
基礎(chǔ):敏銳嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)思維
程序設(shè)計(jì)當(dāng)中解決的相當(dāng)一部分問(wèn)題都會(huì)涉及各種各樣的科學(xué)計(jì)算,這需要程序員具有什么樣的基礎(chǔ)呢?面對(duì)實(shí)際問(wèn)題,程序員往往需要建立完美的數(shù)學(xué)模型,只有這樣,才能設(shè)計(jì)出良好的程序。算法與計(jì)算理論是計(jì)算機(jī)程序設(shè)計(jì)領(lǐng)域的靈魂所在,是發(fā)揮程序設(shè)計(jì)者嚴(yán)謹(jǐn)、敏銳思維的有效工具,任何程序設(shè)計(jì)語(yǔ)言都試圖將之發(fā)揮得淋漓盡致。
程序員需要一定的數(shù)學(xué)修養(yǎng),不單是編程本身的需要,也是培養(yǎng)邏輯思維以及嚴(yán)謹(jǐn)?shù)木幊套黠L(fēng)的需要。數(shù)學(xué)可以鍛煉我們的思維能力,可以幫助我們解決現(xiàn)實(shí)中的問(wèn)題,可以幫助我們更好地學(xué)習(xí)知識(shí)與分析問(wèn)題。
一名有過(guò)十多年開(kāi)發(fā)經(jīng)驗(yàn)的老程序員曾說(shuō)過(guò),所有程序的本質(zhì)就是邏輯,盡管你已經(jīng)較好地掌握了編程技術(shù),但是只有提高了邏輯能力,你才能成為一名職業(yè)程序員。打一個(gè)比方吧,你會(huì)十八般武藝,刀槍棍棒都很精通,偏偏就是內(nèi)力不夠,所以永遠(yuǎn)都上不了戰(zhàn)場(chǎng)。這個(gè)內(nèi)力對(duì)程序員而言就是邏輯能力,其本質(zhì)是一個(gè)人的數(shù)學(xué)修養(yǎng),而不是簡(jiǎn)單的數(shù)學(xué)知識(shí)。
磨煉:成就數(shù)學(xué)素養(yǎng)
程序員的數(shù)學(xué)修養(yǎng)不是一朝一夕就可以培養(yǎng)出來(lái)的。數(shù)學(xué)修養(yǎng)與數(shù)學(xué)知識(shí)不一樣,修養(yǎng)需要一個(gè)長(zhǎng)期的過(guò)程,而知識(shí)的學(xué)習(xí)可能只是一段短暫的時(shí)間。
下面是一些對(duì)于程序員如何提高與培養(yǎng)自己的數(shù)學(xué)修養(yǎng)的基本看法。
首先,應(yīng)該意識(shí)到數(shù)學(xué)修養(yǎng)的重要性。若想成為優(yōu)秀的程序員,一定的數(shù)學(xué)修養(yǎng)是十分重要也是必要的。數(shù)學(xué)是自然科學(xué)的基礎(chǔ),計(jì)算機(jī)科學(xué)實(shí)際上是數(shù)學(xué)的一個(gè)分支。
計(jì)算機(jī)理論其實(shí)是很多數(shù)學(xué)知識(shí)的融合,軟件工程需要圖論,密碼學(xué)需要數(shù)論,軟件測(cè)試需要組合數(shù)學(xué),計(jì)算機(jī)程序的編制需要更多的數(shù)學(xué)知識(shí),如集合論、排隊(duì)論、離散數(shù)學(xué)、統(tǒng)計(jì)學(xué),當(dāng)然還有微積分。
計(jì)算機(jī)科學(xué)一個(gè)最大的特征是信息與知識(shí)更新速度很快,隨著數(shù)學(xué)知識(shí)與計(jì)算機(jī)理論的進(jìn)一步結(jié)合,數(shù)據(jù)挖掘、模式識(shí)別、神經(jīng)網(wǎng)絡(luò)等分支科學(xué)得到了迅速發(fā)展,控制論、模糊數(shù)學(xué)、耗散理論、分形科學(xué)都促進(jìn)了計(jì)算機(jī)軟件理論、信息管理技術(shù)等的發(fā)展。
嚴(yán)格的說(shuō),一個(gè)數(shù)學(xué)基礎(chǔ)不扎實(shí)的程序員不能算一個(gè)合格的程序員,很多介紹計(jì)算機(jī)程序設(shè)計(jì)的書(shū)籍本身也就是數(shù)學(xué)知識(shí)的應(yīng)用與計(jì)算機(jī)實(shí)踐的手冊(cè)。
其次,自身數(shù)學(xué)知識(shí)的積累,培養(yǎng)自己的空間思維能力和邏輯判斷能力。像泛函理論、混沌理論以及一些非線性數(shù)學(xué)問(wèn)題不是三五幾天就可以掌握的。數(shù)學(xué)修養(yǎng)的培養(yǎng)要求程序員有良好的數(shù)學(xué)學(xué)習(xí)能力,能夠很快地把一些數(shù)學(xué)知識(shí)和自己正在解決的問(wèn)題聯(lián)系起來(lái)。
很多理學(xué)大師雖然不是數(shù)學(xué)專(zhuān)業(yè)出身,但是他們對(duì)數(shù)學(xué)有敏銳的觀察力和很強(qiáng)的理解力,于是一系列新的學(xué)科誕生了,如計(jì)算化學(xué)、計(jì)算生物學(xué)、生物信息學(xué)、化學(xué)信息學(xué)、計(jì)算物理學(xué)、計(jì)算材料學(xué)等等。
從計(jì)算機(jī)的誕生來(lái)看,它就是在數(shù)學(xué)的基礎(chǔ)上產(chǎn)生的,最簡(jiǎn)單的0、1進(jìn)制就是一個(gè)古老的數(shù)學(xué)問(wèn)題。學(xué)無(wú)止境,不斷的學(xué)習(xí)是提高修養(yǎng)的必經(jīng)之路。
最后,多在實(shí)踐中運(yùn)用數(shù)學(xué)。有些高等學(xué)校開(kāi)設(shè)了數(shù)學(xué)建模課程,這門(mén)課程把很多相關(guān)的學(xué)科與數(shù)學(xué)都聯(lián)系在一起,通過(guò)很多數(shù)學(xué)模型來(lái)解決實(shí)際的生產(chǎn)生活問(wèn)題,很多問(wèn)題最終的解決需要計(jì)算機(jī)程序來(lái)實(shí)現(xiàn)。
實(shí)際上,現(xiàn)在的程序設(shè)計(jì)從某些角度來(lái)看就是一個(gè)數(shù)學(xué)建模的過(guò)程,模型的好壞關(guān)系到系統(tǒng)的優(yōu)劣成敗,現(xiàn)在的數(shù)學(xué)建模思想已經(jīng)用于計(jì)算機(jī)的許多相關(guān)學(xué)科中,不單是計(jì)算機(jī)程序設(shè)計(jì)與算法分析。應(yīng)該知道,數(shù)學(xué)是一門(mén)需要在實(shí)踐中展示其魅力的科學(xué),而計(jì)算機(jī)程序也是為了幫助解決實(shí)際問(wèn)題而編制的。因此,應(yīng)該盡量使它們充分結(jié)合起來(lái)。在這個(gè)方面,計(jì)算機(jī)密碼學(xué)是運(yùn)用數(shù)學(xué)知識(shí)最深最廣的,每一個(gè)好的加密算法后面都有一個(gè)數(shù)學(xué)理論的支持,如橢圓曲線、背包問(wèn)題、素?cái)?shù)理論等。
總之,要想成為一名有潛力和發(fā)展前途的程序員,或者想成為程序員中的佼佼者,就一定要培養(yǎng)良好的數(shù)學(xué)修養(yǎng)。