當前位置:學問君>學習教育>畢業論文>

計算機的畢業設計論文

學問君 人氣:7.96K

在社會進入資訊時代之後,計算機的應用越來越廣泛。以下是小編精心準備的計算機的畢業設計論文,大家可以參考以下內容哦!

計算機的畢業設計論文

摘要:教育計算機與計算機教育是不同的概念,前者是爲教育而改造計算機知識,後者是爲了計算機而改造教學法。文章從第一代教育計算機出發,在編程教育層面上,論述了正在形成的教育計算機的最新成果和意義。

關鍵詞:教育數學;計算機教育;教育計算機;程序設計

計算機教育和教育計算機是不同的概念。計算機教育是爲了傳授計算機知識而作教育,它不創造計算機知識,只改造教學法。而教育計算機是爲教育而做計算機,它要對計算機知識進行再創造,使之更適合於計算機教育。

下面筆者用吃核桃的例子來闡述計算機教育和教育計算機之間的例子。有種核桃,核仁與外殼結合得很緊,成都人叫它們“加米子核桃”,若砸的方法不當,即使砸開了也很難吃到核仁。計算機教育研究的是一套砸核桃的方法,但它既改變不了“加米子核桃”存在的事實,更改變不了核桃的味道和營養成分;而教育計算機則研究如何改良核桃的品種,目的是讓核桃容易被砸開、吃淨,而且使桃仁更美味、更營養。

筆者只從編程教育層面上來談計算機教育和教育計算機的關係,因爲計算機文化是建立在程序基礎上的,所以這種研究是有代表性的。

1 、來自教育數學的啓示

教育計算機和教育數學有類似之處,我們從後者可以得到一些啓示。

以微積分爲例。17世紀,由牛頓和萊布尼茨創建的微積分是第一代微積分,這是說不清楚原理的微積分。創建者說不清楚,使用微積分的數學家也說不清楚。微積分在說不清楚原理的情形下應用發展了130多年。

到19世紀,柯西對積累了兩百年的微積分成果進行了再創造,寫出了邁向嚴密的微積分王國的第一部教程——《分析教程》。這是一部教育數學的經典,形成了第二代微積分,但使用的極限ε-語言使概念和推理繁瑣迂迴,多數學生聽不明白。第二代微積分在這種情況下發展了170多年。

直到今天,出現了正在創建的微積分——第三代微積分。人們希望微積分不但嚴謹,而且避開ε-語言關卡,直觀易懂,簡易明快,讓更多非數學專業的學子聽得明白。在我國,張景中和林羣院士十幾年來一直從事第三代微積分的創建工作,而且卓有成效。《直來直去微積分》一書是他們的代表作。

這三代微積分在具體計算方法上基本相同,不同的是對原理的說明:第一代微積分說不清楚;第二代微積分說清楚了,但是繁瑣迂迴;第三代微積分深入淺出。

再以幾何爲例。歐幾里得的《幾何原本》是第一個對數學知識進行再創造的教育數學範例。它影響數學家和科學家的思維方式長達兩千年之久。直到今天,它仍然是中學數學教育的主要內容之一。但是,由於它沒有藉助代數和三角,孤立無支,使學生學得很難,教師教得很苦,

我們知道,幾何與三角研究的都是圖形。幾何側重定性研究,三角側重定量研究。代數研究的是運算的規律和方法,它不僅是解決數學問題的基本工具,也是幾何和三角的基本工具。幾何、代數和三角應該相互支撐,攜手共進。

然而,幾何、代數和三角的知識是在不同歷史時期和不同地域分別形成的,它們各有自己的體系、術語和記號。現在我們是根據它們在歷史上形成的順序分別講授,而且基本上保持着它們各自的體系。張景中院士對此提出質疑:“學習數學的順序必須和數學知識在歷史上形成的先後一致嗎?這些在不同年代、不同地方,由不同的人,爲不同的目的創造出來,而且其中很多是爲了應用而創造出來的知識,會自然而然地相互融合,相得益彰嗎?當然不會。

幾何在沒有工具的情形下孤軍奮戰地作定性研究,不辛苦嗎?三角建立了有力的`定量工具但爲時已晚,空懷絕技難以施展,不委屈嗎?幾何自顧自地推理,三角自顧自地計算,代數該用不用,不冷落嗎?

爲使幾何、代數和三角攜手共進,張景中院士重建三角,請三角早出茅廬,因爲三角是解決幾何問題的有力工具,是訓練代數變換能力的天然平臺,也是溝通初等數學和高等數學的一條通道。

微積分和幾何,乃至整個數學,進入20世紀後迅速發展,其再創造工作越來越重要。以布爾巴基命名的一個數學家集體,已經出版了皇皇鉅著《數學原理》的前40卷。他們的目標是對數學從頭探討,並給予完全證明。布爾巴基把數學歸結爲“研究抽象結構的理論”。他們認爲,集合論是數學大廈的地基,大廈的骨架由三種母結構組成:序結構、代數結構和拓撲結構。比如,實數有大小,這是序結構;有四則運算,這是代數結構;有連續性,這是拓撲結構。母結構加進新的公理,產生子結構。不同的結構結合起來,產生複合結構。布爾巴基認爲,研究今天已有的和未來可能產生的種種結構,就是純數學的特徵。有了結構觀點,數學的核心部分就顯得條理化、系統化了。

教育數學給我們的啓示有兩點:①邏輯在發展;②綜合促創新。

2 、第一代教育計算機

第一代教育計算機始於20世紀60年代末和70年代初。爲此作出貢獻的人很多,其中的3個人我們比較熟悉。

一是單源最短路徑算法的發明者E·W·迪克斯特拉(Dijkstra),他最先察覺goto語句的有害性,首創結構化程序設計。他在《結構程序設計札記》一文中提出了把程序的可靠性建立在程序的“有效結構”基礎之上的觀點,揭開了程序設計革命的新篇章。

二是快速排序法和CASE語句的發明者霍爾,他的《計算機程序設計公理化基礎》一文使得對程序設計的分析可以在數學推理的基礎上進行。

三是N·沃思(Nicklaus Wirth),他在《算法+數據結構=程序》一書中,第一次揭示了程序的本質。“算法+數據結構=程序”這個公式對計算機科學的影響程度類似愛因斯坦的質能等價理論方程式“E=mc2”對物理學的影響。

第一代教育計算機確立的原則和方法對計算機教育產生了深遠的影響,意義至今尚存。但是有些原則和方法在計算機教育中被打了折扣。N·沃思的思想是:“程序設計這一領域極爲紛繁多變,常常包含複雜的腦力勞動。因此,以爲能夠把它壓縮成一種純粹‘開藥方’式的訓練是錯誤的。我們所能採用的教學方法只能是仔細地選擇和描述標準的例子。N·沃思所說的標準例子都是依賴數據結構的算法。但是學習數據結構有兩個難點:算法的性能分析和算法的實現。 算法的性能分析是以極限概念爲基礎的,非數學專業的學生很少能夠掌握極限概念,因此在數據結構教學中進行算法的性能分析是讓教師很爲難、讓學生很困惑的事情。

N·沃思非常強調算法實現的原則,他指出:“把程序表達爲充分考慮細節的最終形式是很重要的,因爲程序設計的錯誤正是隱藏在細節中。儘管對於學者來說,純粹描述算法原則及其數學分析可能具有刺激性和挑戰性,但對於實際工程人員來說,似乎是不切實際的。因此,我嚴格遵循這一原則:將程序的最終形式以某一語言表述出來,以便確實能在計算機上執行。但是那時候的程序語言還只是過程式語言,用這種語言描述數據結構需要很高的水平,實現一些比較大的數據結構算法是單個人難以做到的。

結果是,非計算機專業很少講授數據結構,計算機專業講授的數據結構讓許多學生感覺抽象難懂。

3 、正在形成的教育計算機

現在,學習數據結構的兩個困難有了解決辦法。第三代直觀易懂的微積分便於更多的人掌握,進而使數據結構中的算法性能分析更普及。C++的出現使數據結構的實現變得簡單。如本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)所說:“C++的設計就是爲了使較大的程序能夠以一種合理的方式構造出來,並因此使單獨一個人也可能對付相當大的一批代碼。”特別是,C++最重要的發展就是STL——容器和算法的標準庫。它不僅使數據結構和C++語言得到近乎完美的統一,而且促進了程序設計的發展。

但是新問題又出現了:程序語言多了,不知學習哪一種好;程序設計方法多了,不知道什麼纔是程序設計。

今天,流行的程序語言已經有C、C++、C#、Java、Visual Basic、Delphi等。這使很多人困惑,不知道學習哪一種語言纔好。有沒有最好的語言呢?對此,Alan Perlis的回答是:“如果某人說,‘我想要這樣一種程序設計語言,我只需說出我希望做什麼,它就能幫我完成’,那麼就給他一個棒棒糖吧。”可見,要求一個萬能的程序設計語言是很天真的。

其實,幾乎每一種語言都是爲特定的商業目的而設計,並不是爲教育而設計。COBOL是爲商業應用而設計;FORTRAN是爲數學運算而設計;Basic是爲了易學易用而設計;Ada是爲美國國防部開發的,主要用於國防項目;Visual Basic和Delphi用於開發圖形用戶介面,可以進行快速應用開發。

現在很多人選擇C、C++或Java,主要還是因爲它們具有更大的商業用途。C語言不僅具有彙編語言的強大功能,而且如進階語言一樣易學和易移植;C++適合開發系統軟件,如編寫編譯程序和操作系統,Microsoft公司的Windows操作系統就是用C++編寫的;Java用於開發Internet應用程序。

今天,程序設計除了以前的過程式設計,還有了數據抽象、面向對象設計、泛型設計等。那麼什麼纔是程序設計呢?對此,Bjarne Stroustrup的回答是:“通常人們一提到程序設計風格,都是將它們看作是毫無關聯的:你要麼使用泛型程序設計,要麼使用面向對象程序設計。但如果你的目標是儘可能好地表達解決方案,就需要組合多種風格了。這裏的‘好’是指代碼易讀、易編寫、易維護以及足夠高效。”這種組合多種風格的程序設計是多範型程序設計。

面對新的問題,新的教育計算機正在形成,它要把用於商業目的的核心程序語言和程序設計方法再創造,使它們連貫起來,服務於計算機教育。

關於程序語言,Bjarne Stroustrup指出“在你已經掌握了C和C++的公共子集和某些C++直接支援的進階技術之後,你會更容易去學習C中那些更詭祕的部分”,實際上,這是“人體解剖法”的祕密:事物的本質只有在一個事物發展過程結束時才能最清晰地顯露出來,藉此我們可以對整個歷史重新作出合乎邏輯的描述,展示出歷史的內在規律性。Bruce Ecke1便利用這個方法,在《C++編程思想》一書中建立起一個從C結構到C++類的平滑過渡模型:先實現一個袖珍的C庫,然後再將它轉換爲C++代碼,透過比較分析而進入C++。這樣一來,從C到C++的一條脈絡就疏通了。Aninash C·Kak也是利用這個方法,在《面向對象編程C++和Java比較教程》一書中,給我們指出了一條從C++到Java的道路。

用李未院士的三個語言環境理論,可以對從C到C++再到Java的線索作出嚴謹的形式描述。“一般說來,一個語言在它作爲對象語言時,它的符號和語法對象所取得的準確性和已被人們證明的結論,在它作爲元語言時,就可以用來解釋和說明相應對象語言的符號和語法對象,並用來證明該對象語言中不同語法對象之間的關係。這是人類從事科學研究的基本方法。”例如,C、C++和Java是程序語言發展中的版本序列。如果把C++視爲對象語言,那麼從C++程序集合到C程序集合的一個解釋映射(記做IC++)和C程序集合就構成C++的一個模型,而C語言就構成了C++語言和它的模型的元語言;如果把Java視爲對象語言,那麼從Java程序集合到C++程序集合的一個解釋映射(記做IJ)和C++程序集合就構成Java的一個模型,而C++語言就構成了Java語言和它的模型的元語言。

從C到C++再到Java,這是新一代教育計算機給予計算機教育的一個方向性選擇。

關於程序設計,Stanley B·Lippman從發展的角度給予了定義:“縱觀短暫的計算機發展史,算法和數據這兩個主要方面一直保持不變。發展演化的只是它們之間的關係,就是所謂的程序設計。”這種觀點啓發我們對過程式設計、數據抽象、面向對象設計和泛型設計,不要僅僅把它們毫無關聯地排列起來,平等地看待,而是要由此及彼地把它們推出來,使它們互相隸屬,從低級形式發展出進階形式。把C和Java連接起來的C++,這個在計算機軟件領域中覆蓋面最爲廣闊的編程語言,不僅支援多種不同的程序設計風格,而且它記錄着程序設計從低級形式到進階形式的發展。用Stroustrup的話講:“它的特點是可以看作是更好的C;支援數據抽象;支援面向對象程序設計;支援泛型程序設計。”因爲相容了C,所以C++自然也支援過程式設計。

從過程式設計到數據抽象,從面向對象設計到泛型設計,這是新一代教育計算機爲計算機教育指出的又一個方向性選擇。而且這個過程,因爲C++的特性,所以又和從C到C++再到Java的過程相互融合爲一個過程。

這個過程不是從概念出發,而是從實際出發,如Stroustrup在總結C++的一些設計原則時所說:“C++的每一步演化和發展都是由於實際問題所引起的。”“C++支援一種逐步推進的學習方式。你學習一個新語言的方式依賴於你已經知道些什麼,還依賴於你的學習目的。”所謂逐步推進,就是從C到C++再到Java,而目的就是認識發展規律。

正在形成的教育計算機將使計算機教育沿着嚴謹、流暢、豐富和啓迪的方向發展。所謂嚴謹就是講邏輯,而邏輯是隨着事物發展而發展的,一個事物發展了,我們纔可以觀察它的變化,研究和發現事物的本質。所謂流暢就是不重複,把C、C++和Java貫串起來學習,就去除了不必要的重複。所謂豐富就是包含更多的典型程序設計實例,數據結構包含着豐富的典型程序設計實例,C++不僅是我們描述數據結構的有力工具,而且它的標準模板庫(STL)把數據結構近乎完美的統一到C++語言中。所謂啓迪就是引導人們注重規律,從事物的發展和變化中來觀察事物。

4 、結語

新一代教育計算機不是純粹思考出來、想象出來的概念,而是計算機科學發展的必然產物。計算機科學的迅猛發展,積累了大量的實證的知識材料,以近乎系統的形式描繪出一幅相互聯繫的清晰圖畫,任何人,只要依據材料的內在聯繫把這些材料加以整理,就可以達到上述的認識。