软件编程与数学思维
| 軟件編程與數(shù)學(xué)思維 □ 張水坤 《大眾科學(xué)·科學(xué)研究與實踐》 2007年第08期 [摘要]近年來,學(xué)科的高速發(fā)展已經(jīng)明確地反映出這樣一個特點:學(xué)科基礎(chǔ)研究和技術(shù)開發(fā)越來越多地同數(shù)學(xué)建立更為緊密的聯(lián)系,對各種數(shù)學(xué)工具的使用不僅越來越廣泛,而且越來越深入。要掌握好軟件編程,數(shù)學(xué)思維是非常重要的。先討論軟件編程與數(shù)學(xué)的聯(lián)系,再以一些具體的代碼作為例子,結(jié)合實際經(jīng)驗談點看法。? [關(guān)鍵詞]軟件編程 數(shù)學(xué)思維 耦合性? 中圖分類號:O14 文獻標(biāo)識碼:A文章編號:1002-6908(2007)0420-2? ? 一、引 言? ? 數(shù)學(xué)是一門工具性很強的科學(xué),它與別的科學(xué)比較起來還具有較高的抽象性等特征。起初是計算機科學(xué)工作者離不開數(shù)學(xué),而數(shù)學(xué)工作者認為計算機對他們可有可無,但是現(xiàn)在是互相都離不開對方了,計算機也提高了數(shù)學(xué)工作者在人們心目中的地位,大部分的數(shù)學(xué)工作者開始認識到計算機的重要性,并越來越多地進入到計算機領(lǐng)域發(fā)揮作用。但是隨著人工智能、GPS(全球定位系統(tǒng))等飛速的發(fā)展和計算機運算性能飛躍性的提升,計算機的優(yōu)勢越來越深入到思維領(lǐng)域,于是計算機將高深的數(shù)學(xué)理論用到實際中來,十分有效地解決了許多實際問題,例如著名難題四色問題就是被計算機證明的。問題的求解過程中有許多具有實用價值的數(shù)學(xué)分支如分析幾何、小波分析、離散數(shù)學(xué)、仿生計算、數(shù)值計算中的有限單元方法等。它讓人們知道計算機程序設(shè)計結(jié)合的就是數(shù)學(xué)知識和數(shù)學(xué)思想。? 軟件編程是基于數(shù)學(xué)模型的基礎(chǔ)上面的,所以,數(shù)學(xué)是計算機科學(xué)的主要基礎(chǔ),以離散數(shù)學(xué)為代表的應(yīng)用數(shù)學(xué)是描述學(xué)科理論、方法和技術(shù)的主要工具。軟件編程中不僅許多理論是用數(shù)學(xué)描述的,而且許多技術(shù)也是用數(shù)學(xué)描述的。從計算機各種應(yīng)用的程序設(shè)計方面考察,任何一個可在存儲程序式電子數(shù)字計算機上運行的程序,其對應(yīng)的計算方法首先都必須是構(gòu)造性的,數(shù)據(jù)表示必須離散化,計算操作必須使用邏輯或代數(shù)的方法進行,這些都應(yīng)體現(xiàn)在算法和程序之中。此外,到現(xiàn)在為止,算法的正確性、程序的語義及其正確性的理論基礎(chǔ)仍然是數(shù)理邏輯,或進一步的模型論。真正的程序語義是模型論意義上的語義。于是軟件編程思想運行的嚴(yán)密性、學(xué)科理論方法與實現(xiàn)技術(shù)的高度一致是計算機科學(xué)與技術(shù)學(xué)科同數(shù)學(xué)學(xué)科密切相關(guān)的根本原因。從學(xué)科特點和學(xué)科方法論的角度考察,軟件編程的主要基礎(chǔ)思想是數(shù)學(xué)思維,特別是數(shù)學(xué)中以代數(shù)、邏輯為代表的離散數(shù)學(xué),而程序技術(shù)和電子技術(shù)僅僅只是計算機科學(xué)與技術(shù)學(xué)科產(chǎn)品或?qū)崿F(xiàn)的一種技術(shù)表現(xiàn)形式。? ? 二、軟件編程與數(shù)學(xué)思維的聯(lián)系? ? (一)數(shù)學(xué)在計算機領(lǐng)域的發(fā)展? 如今形形色色的軟件,都與數(shù)學(xué)有必然的聯(lián)系,它們相互相成。例如,邏輯學(xué)在學(xué)科中的應(yīng)用從早期的數(shù)理邏輯發(fā)展到今天的程序設(shè)計模型論;數(shù)學(xué)在學(xué)科中的應(yīng)用從早期的抽象代數(shù)發(fā)展到今天的圖形學(xué)、工程問題方面;幾何學(xué)的應(yīng)用從早期的二維平面計算機繪圖發(fā)展到今天的三維動畫軟件系統(tǒng),并在與復(fù)分析的結(jié)合中產(chǎn)生了分形理論與技術(shù);在游戲、圖形軟件開發(fā)中引用了線性代數(shù)中大量的坐標(biāo)變換,矩陣運算;在數(shù)據(jù)壓縮與還原、信息安全方面引入了小波理論、代數(shù)編碼理論等。? (二)軟件編程的思維定式? 軟件編程的思維定式?jīng)Q定了一個人編程的水平,在編程過程中,數(shù)學(xué)思維清晰,編寫出來的程序讓人耳目一新。結(jié)合教學(xué),通過調(diào)查分析,了解到超過85%的學(xué)生,他們在編程時是根據(jù)語法而編寫程序,完全脫離了軟件編程的思維,這種思維定式使得他們編寫的程序相當(dāng)糟糕,沒有一點邏輯。? 之所以造成這種軟件編程的思維,是因為他們平時對數(shù)學(xué)思維的培養(yǎng)不夠重視。很多學(xué)計算機的學(xué)生想:學(xué)高數(shù),這有什么用?學(xué)線性代數(shù)有什么用?學(xué)離散數(shù)學(xué),有什么用?于是他們很少去上這些課,馬馬虎虎,整天悶在寢室里,玩玩游戲,裝裝軟件,看看C語言。只知道概率問題和矩陣知識在其它課程上起到了互補作用,學(xué)的不是很深。但是當(dāng)他們看到<<數(shù)據(jù)結(jié)構(gòu)和算法>>時,感到其中的內(nèi)容對他們而言感覺相當(dāng)?shù)钠D澀難懂,這時他們就隱約感覺到了數(shù)學(xué)思維的作用了。在此之前,他們不僅荒廢了大學(xué)的高等數(shù)學(xué),連初中的初等數(shù)學(xué)也忘的好多,當(dāng)他們進行高抽象思維時,確實感覺自己的思維已經(jīng)很遲鈍了。學(xué)計算機的學(xué)生之所以覺得《數(shù)據(jù)結(jié)構(gòu)》這門課程很難,就是因為他們的數(shù)學(xué)思維鍛煉的不夠!其實生活中有很多這樣的例子:對于一個剛畢業(yè)的,編應(yīng)用軟件的大學(xué)生,在編程中用到《線性代數(shù)》的矩陣時,恐怕便會想,在大學(xué)把線性代數(shù)學(xué)好就好了;當(dāng)在程序中用到動態(tài)鏈表、樹時,恐怕也會想“在大學(xué)時花點時間去學(xué)《數(shù)據(jù)結(jié)構(gòu)》,會多么的有意義”;當(dāng)學(xué)數(shù)據(jù)結(jié)構(gòu)時,恐怕也會想“學(xué)《離散數(shù)學(xué)》時為什么要逃那么多的課,要不然學(xué)離散的時候就會很輕松”。所以數(shù)學(xué)思維不夠,在軟件編程會有很多的疑慮,顯的有點縮手縮尾,而且寫的程序也不夠健全,缺乏邏輯。? (三)軟件編程與數(shù)學(xué)思維的融合? 很多專業(yè)人士覺得數(shù)學(xué)和軟件編程能力就像太極和拳擊,軟件編程能力很強就好比出拳速度很快很重,能直接給人以重擊;數(shù)學(xué)很好的話就好像一個太極高手,表面上看沒有太大的力量但是內(nèi)在的能量是更強大的,但是好的拳擊手是越年輕越好,而太極大師都是資歷越深越厲害。所以數(shù)學(xué)是成就大師的必備能力,雖然很多學(xué)生看上去感覺沒有什么用途,但是到了一定的水平之后就會體會它的力量了。? ? 三、數(shù)學(xué)思維在軟件編程中的應(yīng)用? ? 目前很多出名的IT公司在筆試的時候,都會在程序設(shè)計題中考察應(yīng)聘者的數(shù)學(xué)思維能力,因此,這應(yīng)該引起廣大學(xué)生在平時的學(xué)習(xí)中注意鍛煉自己的數(shù)學(xué)思維,有機會的話參加一下數(shù)學(xué)建模比賽,你便會有很深刻的體會---原來數(shù)學(xué)和計算機結(jié)合得這樣緊密。下面典型的代碼,在設(shè)計過程中充分的運用了數(shù)學(xué)思維。? 題目一:從3個紅球,5個白球,6個黑球中任意取出8個球,且其中必須有白球,輸出所有可能的方案。? 程序一:? #include "stdio.h" void main()? {? int i,j,k; //I代表紅球,j代表白球,k代表黑球? printf("\n red write black\n");? for(i=0;i<=3;i++)? for(j=1;j<=5;j++) //j=1是因為題目中要求必須要有白球? {? k=8-i-j; //黑球的個數(shù)? if(k>=0&&k<=6)? {? printf("%3d,%3d,%3d",i,j,k); //輸出組成方案? }? }? }? 從上面的例子中我們可以隱隱知道數(shù)學(xué)思維在軟件編程中的應(yīng)用。盡管學(xué)習(xí)數(shù)學(xué)帶給計算機專業(yè)人士的回報大過常人,但現(xiàn)今社會里每個人都能由此受益,是讓人們提高自己思維能力,變得聰穎的絕佳方法。這種思維能力能讓人們在各方面受益!但實際上,數(shù)學(xué)上功底扎實,在軟件編程上的優(yōu)勢盡顯,項目的設(shè)計模式格外地優(yōu)化,程序邏輯條理也格外地清晰。因為數(shù)學(xué)可以培養(yǎng)人的邏輯思維能力,而程序設(shè)計需要很強的邏輯思維能力。? 這些讓我們深刻的體會到數(shù)學(xué)思維與軟件編程的耦合性,其實我們國家的計算機軟件水平的落后不是因為我們?nèi)鄙俪绦騿T,而是因為缺乏懂?dāng)?shù)學(xué)的高質(zhì)量的程序員。一個具有數(shù)學(xué)修養(yǎng)的程序員在寫代碼時更有可能寫出邏輯嚴(yán)密的最簡化的高質(zhì)量代碼。而目前一些龍頭IT公司,比如微軟公司總裁比爾 蓋茨年青時就對數(shù)學(xué)很癡迷,而他們的項目經(jīng)理,必須得具備超強的數(shù)學(xué)思維,而且有些還是數(shù)學(xué)專業(yè)的博士,從這也可以看出微軟公司對于數(shù)學(xué)人才的重視程度。? ? 四、結(jié)束語? ? 軟件編程的思想最重要是算法,而算法是建立在數(shù)學(xué)思維上的,其實說白了,程序只是一件衣服,算法才是它的靈魂,算法就來自于數(shù)學(xué),沒有深厚的數(shù)學(xué)思維功底,是弄不懂算法的。所以,如果你想從事軟件編程,那么就認真的培養(yǎng)自己的數(shù)學(xué)思維吧!? ? 參考文獻:? [1] Keith Devlin,《數(shù)學(xué)基因:數(shù)學(xué)思考如何演進及數(shù)為什么像閑言碎語》(Basic Books, 2000) |
總結(jié)
- 上一篇: vsftpd默认用户名/密码
- 下一篇: 业务技术协同线上化的研发管理实战