計算機的畢業(yè)設(shè)計論文
在社會進入信息時代之后,計算機的應(yīng)用越來越廣泛。以下是小編精心準備的計算機的畢業(yè)設(shè)計論文,大家可以參考以下內(nèi)容哦!
摘要:教育計算機與計算機教育是不同的概念,前者是為教育而改造計算機知識,后者是為了計算機而改造教學(xué)法。文章從第一代教育計算機出發(fā),在編程教育層面上,論述了正在形成的教育計算機的最新成果和意義。
關(guān)鍵詞:教育數(shù)學(xué);計算機教育;教育計算機;程序設(shè)計
計算機教育和教育計算機是不同的概念。計算機教育是為了傳授計算機知識而作教育,它不創(chuàng)造計算機知識,只改造教學(xué)法。而教育計算機是為教育而做計算機,它要對計算機知識進行再創(chuàng)造,使之更適合于計算機教育。
下面筆者用吃核桃的例子來闡述計算機教育和教育計算機之間的例子。有種核桃,核仁與外殼結(jié)合得很緊,成都人叫它們“加米子核桃”,若砸的方法不當(dāng),即使砸開了也很難吃到核仁。計算機教育研究的是一套砸核桃的方法,但它既改變不了“加米子核桃”存在的事實,更改變不了核桃的味道和營養(yǎng)成分;而教育計算機則研究如何改良核桃的品種,目的是讓核桃容易被砸開、吃凈,而且使桃仁更美味、更營養(yǎng)。
筆者只從編程教育層面上來談計算機教育和教育計算機的關(guān)系,因為計算機文化是建立在程序基礎(chǔ)上的,所以這種研究是有代表性的。
1 、來自教育數(shù)學(xué)的啟示
教育計算機和教育數(shù)學(xué)有類似之處,我們從后者可以得到一些啟示。
以微積分為例。17世紀,由牛頓和萊布尼茨創(chuàng)建的微積分是第一代微積分,這是說不清楚原理的微積分。創(chuàng)建者說不清楚,使用微積分的數(shù)學(xué)家也說不清楚。微積分在說不清楚原理的情形下應(yīng)用發(fā)展了130多年。
到19世紀,柯西對積累了兩百年的微積分成果進行了再創(chuàng)造,寫出了邁向嚴密的微積分王國的第一部教程——《分析教程》。這是一部教育數(shù)學(xué)的經(jīng)典,形成了第二代微積分,但使用的極限ε-語言使概念和推理繁瑣迂回,多數(shù)學(xué)生聽不明白。第二代微積分在這種情況下發(fā)展了170多年。
直到今天,出現(xiàn)了正在創(chuàng)建的微積分——第三代微積分。人們希望微積分不但嚴謹,而且避開ε-語言關(guān)卡,直觀易懂,簡易明快,讓更多非數(shù)學(xué)專業(yè)的學(xué)子聽得明白。在我國,張景中和林群院士十幾年來一直從事第三代微積分的創(chuàng)建工作,而且卓有成效!吨眮碇比ノ⒎e分》一書是他們的代表作。
這三代微積分在具體計算方法上基本相同,不同的是對原理的說明:第一代微積分說不清楚;第二代微積分說清楚了,但是繁瑣迂回;第三代微積分深入淺出。
再以幾何為例。歐幾里得的《幾何原本》是第一個對數(shù)學(xué)知識進行再創(chuàng)造的教育數(shù)學(xué)范例。它影響數(shù)學(xué)家和科學(xué)家的思維方式長達兩千年之久。直到今天,它仍然是中學(xué)數(shù)學(xué)教育的主要內(nèi)容之一。但是,由于它沒有借助代數(shù)和三角,孤立無支,使學(xué)生學(xué)得很難,教師教得很苦,
我們知道,幾何與三角研究的都是圖形。幾何側(cè)重定性研究,三角側(cè)重定量研究。代數(shù)研究的是運算的規(guī)律和方法,它不僅是解決數(shù)學(xué)問題的基本工具,也是幾何和三角的基本工具。幾何、代數(shù)和三角應(yīng)該相互支撐,攜手共進。
然而,幾何、代數(shù)和三角的知識是在不同歷史時期和不同地域分別形成的,它們各有自己的體系、術(shù)語和記號。現(xiàn)在我們是根據(jù)它們在歷史上形成的順序分別講授,而且基本上保持著它們各自的體系。張景中院士對此提出質(zhì)疑:“學(xué)習(xí)數(shù)學(xué)的順序必須和數(shù)學(xué)知識在歷史上形成的先后一致嗎?這些在不同年代、不同地方,由不同的人,為不同的目的創(chuàng)造出來,而且其中很多是為了應(yīng)用而創(chuàng)造出來的知識,會自然而然地相互融合,相得益彰嗎?當(dāng)然不會。
幾何在沒有工具的情形下孤軍奮戰(zhàn)地作定性研究,不辛苦嗎?三角建立了有力的`定量工具但為時已晚,空懷絕技難以施展,不委屈嗎?幾何自顧自地推理,三角自顧自地計算,代數(shù)該用不用,不冷落嗎?
為使幾何、代數(shù)和三角攜手共進,張景中院士重建三角,請三角早出茅廬,因為三角是解決幾何問題的有力工具,是訓(xùn)練代數(shù)變換能力的天然平臺,也是溝通初等數(shù)學(xué)和高等數(shù)學(xué)的一條通道。
微積分和幾何,乃至整個數(shù)學(xué),進入20世紀后迅速發(fā)展,其再創(chuàng)造工作越來越重要。以布爾巴基命名的一個數(shù)學(xué)家集體,已經(jīng)出版了皇皇巨著《數(shù)學(xué)原理》的前40卷。他們的目標是對數(shù)學(xué)從頭探討,并給予完全證明。布爾巴基把數(shù)學(xué)歸結(jié)為“研究抽象結(jié)構(gòu)的理論”。他們認為,集合論是數(shù)學(xué)大廈的地基,大廈的骨架由三種母結(jié)構(gòu)組成:序結(jié)構(gòu)、代數(shù)結(jié)構(gòu)和拓撲結(jié)構(gòu)。比如,實數(shù)有大小,這是序結(jié)構(gòu);有四則運算,這是代數(shù)結(jié)構(gòu);有連續(xù)性,這是拓撲結(jié)構(gòu)。母結(jié)構(gòu)加進新的公理,產(chǎn)生子結(jié)構(gòu)。不同的結(jié)構(gòu)結(jié)合起來,產(chǎn)生復(fù)合結(jié)構(gòu)。布爾巴基認為,研究今天已有的和未來可能產(chǎn)生的種種結(jié)構(gòu),就是純數(shù)學(xué)的特征。有了結(jié)構(gòu)觀點,數(shù)學(xué)的核心部分就顯得條理化、系統(tǒng)化了。
教育數(shù)學(xué)給我們的啟示有兩點:①邏輯在發(fā)展;②綜合促創(chuàng)新。
2 、第一代教育計算機
第一代教育計算機始于20世紀60年代末和70年代初。為此作出貢獻的人很多,其中的3個人我們比較熟悉。
一是單源最短路徑算法的發(fā)明者E·W·迪克斯特拉(Dijkstra),他最先察覺goto語句的有害性,首創(chuàng)結(jié)構(gòu)化程序設(shè)計。他在《結(jié)構(gòu)程序設(shè)計札記》一文中提出了把程序的可靠性建立在程序的“有效結(jié)構(gòu)”基礎(chǔ)之上的觀點,揭開了程序設(shè)計革命的新篇章。
二是快速排序法和CASE語句的發(fā)明者霍爾,他的《計算機程序設(shè)計公理化基礎(chǔ)》一文使得對程序設(shè)計的分析可以在數(shù)學(xué)推理的基礎(chǔ)上進行。
三是N·沃思(Nicklaus Wirth),他在《算法+數(shù)據(jù)結(jié)構(gòu)=程序》一書中,第一次揭示了程序的本質(zhì)!八惴+數(shù)據(jù)結(jié)構(gòu)=程序”這個公式對計算機科學(xué)的影響程度類似愛因斯坦的質(zhì)能等價理論方程式“E=mc2”對物理學(xué)的影響。
第一代教育計算機確立的原則和方法對計算機教育產(chǎn)生了深遠的影響,意義至今尚存。但是有些原則和方法在計算機教育中被打了折扣。N·沃思的思想是:“程序設(shè)計這一領(lǐng)域極為紛繁多變,常常包含復(fù)雜的腦力勞動。因此,以為能夠把它壓縮成一種純粹‘開藥方’式的訓(xùn)練是錯誤的。我們所能采用的教學(xué)方法只能是仔細地選擇和描述標準的例子。N·沃思所說的標準例子都是依賴數(shù)據(jù)結(jié)構(gòu)的算法。但是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有兩個難點:算法的性能分析和算法的實現(xiàn)。 算法的性能分析是以極限概念為基礎(chǔ)的,非數(shù)學(xué)專業(yè)的學(xué)生很少能夠掌握極限概念,因此在數(shù)據(jù)結(jié)構(gòu)教學(xué)中進行算法的性能分析是讓教師很為難、讓學(xué)生很困惑的事情。
N·沃思非常強調(diào)算法實現(xiàn)的原則,他指出:“把程序表達為充分考慮細節(jié)的最終形式是很重要的,因為程序設(shè)計的錯誤正是隱藏在細節(jié)中。盡管對于學(xué)者來說,純粹描述算法原則及其數(shù)學(xué)分析可能具有刺激性和挑戰(zhàn)性,但對于實際工程人員來說,似乎是不切實際的。因此,我嚴格遵循這一原則:將程序的最終形式以某一語言表述出來,以便確實能在計算機上執(zhí)行。但是那時候的程序語言還只是過程式語言,用這種語言描述數(shù)據(jù)結(jié)構(gòu)需要很高的水平,實現(xiàn)一些比較大的數(shù)據(jù)結(jié)構(gòu)算法是單個人難以做到的。
結(jié)果是,非計算機專業(yè)很少講授數(shù)據(jù)結(jié)構(gòu),計算機專業(yè)講授的數(shù)據(jù)結(jié)構(gòu)讓許多學(xué)生感覺抽象難懂。
3 、正在形成的教育計算機
現(xiàn)在,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的兩個困難有了解決辦法。第三代直觀易懂的微積分便于更多的人掌握,進而使數(shù)據(jù)結(jié)構(gòu)中的算法性能分析更普及。C++的出現(xiàn)使數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)變得簡單。如本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)所說:“C++的設(shè)計就是為了使較大的程序能夠以一種合理的方式構(gòu)造出來,并因此使單獨一個人也可能對付相當(dāng)大的一批代碼!碧貏e是,C++最重要的發(fā)展就是STL——容器和算法的標準庫。它不僅使數(shù)據(jù)結(jié)構(gòu)和C++語言得到近乎完美的統(tǒng)一,而且促進了程序設(shè)計的發(fā)展。
但是新問題又出現(xiàn)了:程序語言多了,不知學(xué)習(xí)哪一種好;程序設(shè)計方法多了,不知道什么才是程序設(shè)計。
今天,流行的程序語言已經(jīng)有C、C++、C#、Java、Visual Basic、Delphi等。這使很多人困惑,不知道學(xué)習(xí)哪一種語言才好。有沒有最好的語言呢?對此,Alan Perlis的回答是:“如果某人說,‘我想要這樣一種程序設(shè)計語言,我只需說出我希望做什么,它就能幫我完成’,那么就給他一個棒棒糖吧!笨梢,要求一個萬能的程序設(shè)計語言是很天真的。
其實,幾乎每一種語言都是為特定的商業(yè)目的而設(shè)計,并不是為教育而設(shè)計。COBOL是為商業(yè)應(yīng)用而設(shè)計;FORTRAN是為數(shù)學(xué)運算而設(shè)計;Basic是為了易學(xué)易用而設(shè)計;Ada是為美國國防部開發(fā)的,主要用于國防項目;Visual Basic和Delphi用于開發(fā)圖形用戶界面,可以進行快速應(yīng)用開發(fā)。
現(xiàn)在很多人選擇C、C++或Java,主要還是因為它們具有更大的商業(yè)用途。C語言不僅具有匯編語言的強大功能,而且如高級語言一樣易學(xué)和易移植;C++適合開發(fā)系統(tǒng)軟件,如編寫編譯程序和操作系統(tǒng),Microsoft公司的Windows操作系統(tǒng)就是用C++編寫的;Java用于開發(fā)Internet應(yīng)用程序。
今天,程序設(shè)計除了以前的過程式設(shè)計,還有了數(shù)據(jù)抽象、面向?qū)ο笤O(shè)計、泛型設(shè)計等。那么什么才是程序設(shè)計呢?對此,Bjarne Stroustrup的回答是:“通常人們一提到程序設(shè)計風(fēng)格,都是將它們看作是毫無關(guān)聯(lián)的:你要么使用泛型程序設(shè)計,要么使用面向?qū)ο蟪绦蛟O(shè)計。但如果你的目標是盡可能好地表達解決方案,就需要組合多種風(fēng)格了。這里的‘好’是指代碼易讀、易編寫、易維護以及足夠高效!边@種組合多種風(fēng)格的程序設(shè)計是多范型程序設(shè)計。
面對新的問題,新的教育計算機正在形成,它要把用于商業(yè)目的的核心程序語言和程序設(shè)計方法再創(chuàng)造,使它們連貫起來,服務(wù)于計算機教育。
關(guān)于程序語言,Bjarne Stroustrup指出“在你已經(jīng)掌握了C和C++的公共子集和某些C++直接支持的高級技術(shù)之后,你會更容易去學(xué)習(xí)C中那些更詭秘的部分”,實際上,這是“人體解剖法”的秘密:事物的本質(zhì)只有在一個事物發(fā)展過程結(jié)束時才能最清晰地顯露出來,借此我們可以對整個歷史重新作出合乎邏輯的描述,展示出歷史的內(nèi)在規(guī)律性。Bruce Ecke1便利用這個方法,在《C++編程思想》一書中建立起一個從C結(jié)構(gòu)到C++類的平滑過渡模型:先實現(xiàn)一個袖珍的C庫,然后再將它轉(zhuǎn)換為C++代碼,通過比較分析而進入C++。這樣一來,從C到C++的一條脈絡(luò)就疏通了。Aninash C·Kak也是利用這個方法,在《面向?qū)ο缶幊藽++和Java比較教程》一書中,給我們指出了一條從C++到Java的道路。
用李未院士的三個語言環(huán)境理論,可以對從C到C++再到Java的線索作出嚴謹?shù)男问矫枋。“一般說來,一個語言在它作為對象語言時,它的符號和語法對象所取得的準確性和已被人們證明的結(jié)論,在它作為元語言時,就可以用來解釋和說明相應(yīng)對象語言的符號和語法對象,并用來證明該對象語言中不同語法對象之間的關(guān)系。這是人類從事科學(xué)研究的基本方法!崩,C、C++和Java是程序語言發(fā)展中的版本序列。如果把C++視為對象語言,那么從C++程序集合到C程序集合的一個解釋映射(記做IC++)和C程序集合就構(gòu)成C++的一個模型,而C語言就構(gòu)成了C++語言和它的模型的元語言;如果把Java視為對象語言,那么從Java程序集合到C++程序集合的一個解釋映射(記做IJ)和C++程序集合就構(gòu)成Java的一個模型,而C++語言就構(gòu)成了Java語言和它的模型的元語言。
從C到C++再到Java,這是新一代教育計算機給予計算機教育的一個方向性選擇。
關(guān)于程序設(shè)計,Stanley B·Lippman從發(fā)展的角度給予了定義:“縱觀短暫的計算機發(fā)展史,算法和數(shù)據(jù)這兩個主要方面一直保持不變。發(fā)展演化的只是它們之間的關(guān)系,就是所謂的程序設(shè)計!边@種觀點啟發(fā)我們對過程式設(shè)計、數(shù)據(jù)抽象、面向?qū)ο笤O(shè)計和泛型設(shè)計,不要僅僅把它們毫無關(guān)聯(lián)地排列起來,平等地看待,而是要由此及彼地把它們推出來,使它們互相隸屬,從低級形式發(fā)展出高級形式。把C和Java連接起來的C++,這個在計算機軟件領(lǐng)域中覆蓋面最為廣闊的編程語言,不僅支持多種不同的程序設(shè)計風(fēng)格,而且它記錄著程序設(shè)計從低級形式到高級形式的發(fā)展。用Stroustrup的話講:“它的特點是可以看作是更好的C;支持數(shù)據(jù)抽象;支持面向?qū)ο蟪绦蛟O(shè)計;支持泛型程序設(shè)計!币驗榧嫒萘薈,所以C++自然也支持過程式設(shè)計。
從過程式設(shè)計到數(shù)據(jù)抽象,從面向?qū)ο笤O(shè)計到泛型設(shè)計,這是新一代教育計算機為計算機教育指出的又一個方向性選擇。而且這個過程,因為C++的特性,所以又和從C到C++再到Java的過程相互融合為一個過程。
這個過程不是從概念出發(fā),而是從實際出發(fā),如Stroustrup在總結(jié)C++的一些設(shè)計原則時所說:“C++的每一步演化和發(fā)展都是由于實際問題所引起的。”“C++支持一種逐步推進的學(xué)習(xí)方式。你學(xué)習(xí)一個新語言的方式依賴于你已經(jīng)知道些什么,還依賴于你的學(xué)習(xí)目的!彼^逐步推進,就是從C到C++再到Java,而目的就是認識發(fā)展規(guī)律。
正在形成的教育計算機將使計算機教育沿著嚴謹、流暢、豐富和啟迪的方向發(fā)展。所謂嚴謹就是講邏輯,而邏輯是隨著事物發(fā)展而發(fā)展的,一個事物發(fā)展了,我們才可以觀察它的變化,研究和發(fā)現(xiàn)事物的本質(zhì)。所謂流暢就是不重復(fù),把C、C++和Java貫串起來學(xué)習(xí),就去除了不必要的重復(fù)。所謂豐富就是包含更多的典型程序設(shè)計實例,數(shù)據(jù)結(jié)構(gòu)包含著豐富的典型程序設(shè)計實例,C++不僅是我們描述數(shù)據(jù)結(jié)構(gòu)的有力工具,而且它的標準模板庫(STL)把數(shù)據(jù)結(jié)構(gòu)近乎完美的統(tǒng)一到C++語言中。所謂啟迪就是引導(dǎo)人們注重規(guī)律,從事物的發(fā)展和變化中來觀察事物。
4 、結(jié)語
新一代教育計算機不是純粹思考出來、想象出來的概念,而是計算機科學(xué)發(fā)展的必然產(chǎn)物。計算機科學(xué)的迅猛發(fā)展,積累了大量的實證的知識材料,以近乎系統(tǒng)的形式描繪出一幅相互聯(lián)系的清晰圖畫,任何人,只要依據(jù)材料的內(nèi)在聯(lián)系把這些材料加以整理,就可以達到上述的認識。
【計算機的畢業(yè)設(shè)計論文】相關(guān)文章: