初金來
(哈爾濱師范大學(xué)文理學(xué)院計算機系2006級,黑龍江 哈爾濱 150000)
學(xué)好離散數(shù)學(xué)是學(xué)好計算機的基礎(chǔ),這是為什么考計算機專業(yè)的研究生,離散數(shù)學(xué)都采用最難試題的原由,當(dāng)然這也能促使一些新的交叉學(xué)科--如數(shù)學(xué)與應(yīng)用軟件、信息與計算科學(xué)專業(yè)的飛速發(fā)展。程序設(shè)計中解決的相當(dāng)一大部分問題都會涉及各式各樣的科學(xué)計算,這都需要程序員具有怎么樣的基礎(chǔ)呢?大多數(shù)離散數(shù)學(xué)基礎(chǔ)很好的人,如果熟悉了某一種計算機語言,他可以很快地理解某些算法的精湛,并且能夠運用自如,不可能寫出時間與空間復(fù)雜度都有明顯改善的算法的實際問題都轉(zhuǎn)換成為程序的問題,只有這樣,我們才能建立一套設(shè)計完整的程序。要經(jīng)歷一個對問題抽象的行程,建立起完善的離散數(shù)學(xué)模型,其中我們不難看出數(shù)學(xué)學(xué)科在編程領(lǐng)域的不可取代的位置。計算理論與算法是計算機程序設(shè)計中的靈魂,是發(fā)揮程序設(shè)計員嚴謹,思維敏銳的最佳工具,所有的程序設(shè)計語言都試圖把它發(fā)揮得淋漓盡致。
程序設(shè)計者都需要一定的數(shù)學(xué)修養(yǎng),不僅僅是編程本身的需求,還是培養(yǎng)邏輯思維和嚴謹?shù)木幊塘?xí)慣的需要。離散數(shù)學(xué)可以磨練我們的思維能力,可以幫助我們更高的學(xué)習(xí)哲學(xué),可以幫助我們來解決現(xiàn)實中的實際問題。為何經(jīng)常有人對一些科學(xué)計算程序一籌莫展,他可以讀懂任意一行代碼,可是卻無法預(yù)測程序的結(jié)果,甚至對程序的功能和結(jié)構(gòu)也一知半解,給他一個比較復(fù)雜點的離散數(shù)學(xué)公式,也許他就不知道怎么將其變成計算機程序。很多程序員還停留在做做簡單的,寫寫簡單的classes或用SQL語句實現(xiàn)查詢等基礎(chǔ)的編程工作,對于一些需要用到離散數(shù)學(xué)知識的編程的工作就遠而避之,當(dāng)然實現(xiàn)中一個累加程序或者一個稅率的換算程序還不是程序員的離散數(shù)學(xué)修養(yǎng)一朝一夕就可以培養(yǎng)的。離散數(shù)學(xué)知識和離散數(shù)學(xué)修養(yǎng)不一樣,修養(yǎng)則需要一個長期的過程,而知識的學(xué)習(xí)可能只要一段短暫的學(xué)習(xí)時間。下面是我個人對于程序員怎么樣提高與培養(yǎng)自己的基本看法。
成為一個優(yōu)秀的程序員,一定的數(shù)學(xué)修養(yǎng)是非常重要也是必要的。離散數(shù)學(xué)是自然科學(xué)的基礎(chǔ),計算機科學(xué)實實上是離散數(shù)學(xué)的一個分支。計算機理論其實是很多數(shù)學(xué)知識的融合,軟件工程需要圖論,密碼學(xué)需要數(shù)論,軟件測試需要組合離散數(shù)學(xué),計算機程序的編制更需要很多的離散數(shù)學(xué)知識,如集合論、排隊論、離散數(shù)學(xué)、統(tǒng)計學(xué),當(dāng)然還有微積分。計算機科學(xué)一個最大的特征是信息與知識更新速度很快,隨著離散數(shù)學(xué)知識與計算機理論的進一步結(jié)合,數(shù)據(jù)挖掘、模式識別、神經(jīng)網(wǎng)絡(luò)等分支科學(xué)得到了迅速發(fā)展,控制論、模糊數(shù)學(xué)、耗散理論、分形科學(xué)都促進了計算機軟件理論、信息管理技術(shù)的發(fā)展。嚴格的說,一個離散數(shù)學(xué)基礎(chǔ)不扎實的程序不能算一個合格的程序員,很多介紹計算機算法的書籍本身也就是數(shù)學(xué)知識的應(yīng)用與計算機實現(xiàn)手冊。
數(shù)學(xué)是一門眾多分支的學(xué)科,我們無法在短短的一生中學(xué)會所有的數(shù)學(xué)知識,像混沌理論,泛函理論以及一些非線性數(shù)學(xué)問題不是一天半天就可以掌握的。數(shù)學(xué)是自然科學(xué)的基礎(chǔ),計算機技術(shù)將理論與實踐的結(jié)合,更需要把離散數(shù)學(xué)的精髓融入其中。數(shù)學(xué)修養(yǎng)的培養(yǎng)并不在于積累離散數(shù)學(xué)知識的多少,但是要求程序員具有良好的數(shù)學(xué)學(xué)習(xí)能力,能夠迅速地把一些離散數(shù)學(xué)知識和自己正在思考的問題聯(lián)系起來,很多理學(xué)教授雖然不是數(shù)學(xué)系出身,但是他們對離散數(shù)學(xué)都有靈活的理解能力與敏銳的觀察力,于是一系列新的學(xué)科就這樣產(chǎn)生了,例如計算化學(xué)、計算生物學(xué)、生物信息學(xué)、化學(xué)信息學(xué)、計算材料學(xué),計算物理學(xué)等等。從計算機的產(chǎn)生來看它就是在離散數(shù)學(xué)的基礎(chǔ)之上誕生的,最簡單的1,0進制就是一個悠久的數(shù)學(xué)問題。程序設(shè)計成為一項創(chuàng)造力超強的職業(yè),它不但需要程序員自身有一定的數(shù)學(xué)修養(yǎng),還要具有一定的離散數(shù)學(xué)知識的積累,可以完美地把一些數(shù)學(xué)定理和思想聯(lián)系于實際的計算機編程工作中來。學(xué)無止境,提高修養(yǎng)的必經(jīng)之路是不斷的學(xué)習(xí)。
有大部分高等學(xué)校開了一門這樣的課程——《數(shù)學(xué)模型》。它把很多學(xué)科與離散數(shù)學(xué)都聯(lián)系在一起,通過很多離散數(shù)學(xué)模型來解決實際生活中的生產(chǎn)與生活問題,很多問題的解決都需要計算機程序來實現(xiàn)。事實上,目前的程序設(shè)計從一些角度上來看就是個離散數(shù)學(xué)建模的過程,模型的好壞關(guān)系到系統(tǒng)的優(yōu)劣,現(xiàn)在的離散數(shù)學(xué)建模的思想已經(jīng)用于計算機的許多相互關(guān)聯(lián)關(guān)學(xué)科中,不只是計算機程序設(shè)計與算法分析。應(yīng)該知道,離散數(shù)學(xué)是一門需要在實踐中展露其特有魅力的學(xué)科,而計算機程序的設(shè)計也是為幫助解決實際問題而編制的。因此,盡量使它們結(jié)合起來,為我們在這個方面為所欲為,計算機密碼學(xué)是我認為運用離散數(shù)學(xué)知識最深最為廣泛的,每一個完美的加密算法的背后都有一個數(shù)學(xué)理論的依據(jù),例如橢圓曲線、背包問題、素數(shù)理論,函數(shù)等。作為一名優(yōu)秀的程序員,必須在實際的工作中根據(jù)需要靈活運用數(shù)學(xué)原理,養(yǎng)成一定的離散數(shù)學(xué)建模能力,善于歸納與總結(jié),慢慢使自己的數(shù)學(xué)知識更加全面,進而提高自身的編程能力。
許多程序員的培養(yǎng)體制都存在著很大的缺陷,一開始就要求學(xué)員能迅速精通某種語言,以語言為中心,對算法的核心思想與相關(guān)的數(shù)學(xué)知識都一筆帶過,講得很少,這造成很多程序員成為背程序的機器,這樣很不利于程序員自身的快速成長,也不利于程序員創(chuàng)新的解決問題。通過離散數(shù)學(xué)用問題來做編程的熱身運動,使學(xué)員在離散數(shù)學(xué)試題中激發(fā)自己的思維能力,記得有位專家曾經(jīng)說過,經(jīng)常做做離散數(shù)學(xué)題目會使自己變聰明,很長時間不去接觸離散數(shù)學(xué)問題會使自己思維遲鈍。很多初學(xué)程序者往往寫程序時有時候會有思維中斷,或者對一些稍難的程序就覺得無從下手,而我采用了一些課前解決離散數(shù)學(xué)小問題的方法來激起大家的學(xué)習(xí)興趣,這些小問題不僅僅是腦筋急轉(zhuǎn)彎,其中有不少是很有代表意義的離散數(shù)學(xué)思考題。我們可以通過實際的離散數(shù)學(xué)問題來培養(yǎng)學(xué)員的思維跳躍性和嚴謹性與完整性。為將來進行編程工作打下良好的基礎(chǔ)。
離散數(shù)學(xué)作為計算機專業(yè)很重要的一門基礎(chǔ)課,對于后續(xù)課程,如數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫原理,編譯等課程起到重要的影響,同時對培養(yǎng)學(xué)生編程過程中所需要的邏輯思維能力,抽象思維能力都起著非常重要的作用。
[1]左孝凌.離散數(shù)學(xué)的形成、發(fā)展及其在計算機科學(xué)中的作用與地位[J].自然雜志,2005.
[2]陳敏,李澤軍.離散數(shù)學(xué)在計算機學(xué)科中的應(yīng)用[J].電腦知識與技術(shù),2009.
[3]錢程東.基于動態(tài)劃分的數(shù)據(jù)挖掘及其在教務(wù)管理系統(tǒng)中的應(yīng)用[J].國防科學(xué)技術(shù)大學(xué),2006.