計(jì)算機(jī)語言的發(fā)展過程是什么
語言是人們描述現(xiàn)實(shí)世界,表達(dá)自己思想觀念的工具。而計(jì)算機(jī)語言是人與計(jì)算機(jī)交流的工具。一方面人類使用各種計(jì)算機(jī)語言將所關(guān)心的現(xiàn)實(shí)世界映射到計(jì)算機(jī)世界;另一方面,人類又可以通過計(jì)算機(jī)語言創(chuàng)造現(xiàn)實(shí)世界中并不存在的虛擬世界。下面是學(xué)習(xí)啦小編為大家整理的計(jì)算機(jī)語言的發(fā)展歷程,希望對(duì)您有所幫助!
計(jì)算機(jī)語言的發(fā)展歷程
1.計(jì)算機(jī)語言的歷史回顧
早期程序員們使用機(jī)器語言來進(jìn)行編程運(yùn)算,直接對(duì)以數(shù)字表示的機(jī)器代碼進(jìn)行操作。后來為了便于閱讀,就將機(jī)器代碼以英文字符串來表示,于是出現(xiàn)了匯編語言。
1956年首先在IBM公司的計(jì)算機(jī)上實(shí)現(xiàn)的由美國的計(jì)算機(jī)科學(xué)家巴科斯設(shè)計(jì)FORTRAN語言,標(biāo)志著高級(jí)語言的到來。FORTRAN語言以它的簡(jiǎn)潔、高效性,成為此后幾十年科學(xué)和工程計(jì)算的主流語言, 除了FORTRAN以外,還有ALGOL60等科學(xué)和工程計(jì)算語言。隨著計(jì)算機(jī)應(yīng)用的深入,產(chǎn)生了使用計(jì)算機(jī)來進(jìn)行商業(yè)管理的需求,于是COBOL這類商業(yè)和行政管理語言出現(xiàn)了,并一直流行至今。
早期的這些計(jì)算機(jī)語言都是面向計(jì)算機(jī)專業(yè)人員,為了普及計(jì)算機(jī)語言,使計(jì)算機(jī)更為大眾化,出現(xiàn)了入門級(jí)的BASIC語言,至今BASIC語言仍然是絕大多數(shù)軟件開發(fā)人員接觸到的第一們計(jì)算機(jī)語言,同時(shí)也最流行的計(jì)算機(jī)語言。
七十年代初,結(jié)構(gòu)化程序設(shè)計(jì)的思想孵化出兩種結(jié)構(gòu)化程序設(shè)計(jì)語言,一種是PASCAL語言,另一種是C語言。這兩種語言的語法結(jié)構(gòu)基本上是等價(jià)的,它們都是通過函數(shù)和過程等語言特性來構(gòu)成結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)。但是很主要的區(qū)別在于PASCAL語言強(qiáng)調(diào)的是語言的可讀性,因此PASCAL語言至今成為學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)等軟件基礎(chǔ)知識(shí)的教學(xué)語言;而C語言強(qiáng)調(diào)的是語言的簡(jiǎn)潔性以及高效性,因此C語言成為之后幾十年中主流的軟件開發(fā)語言,高效性使C語言的地位已相當(dāng)于一種“高級(jí)匯編語言”。
雖然面向?qū)ο蟮乃枷肟梢宰匪莸搅甏敲嫦驅(qū)ο笏枷氡黄毡榻邮苓€是得益于面向?qū)ο笳Z言的功勞。在眾多的面向?qū)ο笳Z言當(dāng)中,最為突出的就是C++語言。C++語言是在八十年代初由AT&T貝爾實(shí)驗(yàn)室Bjarne Stroustrup在C語言的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)的。C++語言繼承了C語言的所有優(yōu)點(diǎn),如簡(jiǎn)潔性和高效性,同時(shí)引入了面向?qū)ο蟮乃枷?,如類、封裝、繼承、多態(tài)等。C++語言的這些特性使得C程序員在學(xué)習(xí)面向?qū)ο笏枷氲耐瑫r(shí)不必放棄已有的知識(shí)和經(jīng)驗(yàn),原有的軟件積累同樣可以利用,同時(shí)面向?qū)ο蟮脑O(shè)計(jì)開發(fā)方法使得軟件的分析、設(shè)計(jì)、構(gòu)造更為完美,因此,C++借助C語言的龐大程序員隊(duì)伍,成為主流的面向?qū)ο笳Z言,并促使面向?qū)ο蟮乃枷氡黄毡榻邮?。C++是一種混合型的面向?qū)ο笳Z言。象任何人類的自然語言一樣,C++語言提供一種表達(dá)思想和概念的方法,當(dāng)問題變得大而復(fù)雜時(shí),使用C++語言來解決問題將會(huì)比使用其它語言更加容易、更加靈活。在最早的面向?qū)ο笳Z言中,除了C++以外,還有一種純面向?qū)ο笳Z言也頗為流行,就是Smalltalk語言,產(chǎn)生并流行于七十末,八十年代初。
計(jì)算機(jī)語言的發(fā)展歷史也是人們不斷追求更高的模塊化、抽象和封裝的歷史。最初的抽象是以計(jì)算機(jī)為中心的:首先是將以0和1表示的二進(jìn)制值抽象為字節(jié)、整型、長整型、浮點(diǎn)型等各種預(yù)定義的數(shù)據(jù)類型,然后,為了表達(dá)更復(fù)雜的數(shù)據(jù),出現(xiàn)了以結(jié)構(gòu)表示的自定義數(shù)據(jù)類型。除了數(shù)據(jù)的抽象以外,計(jì)算機(jī)指令也有一個(gè)抽象過程:從表達(dá)式和語句,到函數(shù)和過程。結(jié)構(gòu)化程序設(shè)計(jì)是以計(jì)算機(jī)為中心的抽象方式的體現(xiàn),它所提倡的數(shù)據(jù)和代碼分開的思想和計(jì)算機(jī)硬件的處理機(jī)制是相符的。六十年代末開始出現(xiàn)的軟件危機(jī)迫使人們?nèi)ふ医鉀Q辦法。解決軟件危機(jī)的努力主要朝兩個(gè)方向發(fā)展,一是針對(duì)軟件開發(fā)過程的工程管理,提出軟件開發(fā)的生命周期模型,包括:瀑布式模型、快速原型法、螺旋模型、噴泉模型等等;另外一個(gè)解決方法是從對(duì)軟件開發(fā)過程中分析、設(shè)計(jì)的方法的研究入手,提出了結(jié)構(gòu)化程序設(shè)計(jì)方法,一時(shí)間,“算法+數(shù)據(jù)結(jié)構(gòu)=程序”幾乎成為軟件開發(fā)的唯一準(zhǔn)則。結(jié)構(gòu)化程序設(shè)計(jì)方法從計(jì)算機(jī)發(fā)展角度來看是自然而然的,但是,今天從抽象的角度來看,這種方法幾乎可以說是一個(gè)時(shí)代錯(cuò)誤。軟件開發(fā)的主要目的就是描述和反映現(xiàn)實(shí)世界,現(xiàn)實(shí)世界就是由大大小小的對(duì)象構(gòu)成:大到宇宙,小到原子,對(duì)象層層包裹;物質(zhì)世界如此,人類社會(huì)的組成也是這樣,從作為個(gè)體的人,到集體,到整個(gè)社會(huì),都可以用對(duì)象加以描述。因此,抽象的過程應(yīng)該是以現(xiàn)實(shí)世界的對(duì)象為中心的,于是面向?qū)ο蟮某橄蠓椒ň妥叩角芭_(tái)來,為軟件開發(fā)從分析建模到設(shè)計(jì)實(shí)現(xiàn)提供統(tǒng)一的工具。面向?qū)ο蠹夹g(shù)以及建立在它的基礎(chǔ)之上的組件技術(shù)為徹底解決軟件危機(jī)鋪平了道路。
大量應(yīng)用的需求,使得軟件開發(fā)效率提到日程上來。原有的高級(jí)語言,如BASIC、PASCAL等結(jié)合可視化的界面編程技術(shù)、面向?qū)ο笏枷?、?shù)據(jù)庫技術(shù),產(chǎn)生了所謂的第四代語言,如Visual Basic,Delphi等。Visual Basic的語言基礎(chǔ)是BASIC語言,Delphi的語言基礎(chǔ)是PASCAL,這兩種語言都是軟件開發(fā)人員所熟知的語言。Visual Basic和Delphi是目前應(yīng)用軟件的主流開發(fā)工具。
人工智能一直是人們長期以來的夢(mèng)想,從圖靈開始,半個(gè)多世紀(jì)以來,計(jì)算機(jī)科學(xué)家們對(duì)人工智能進(jìn)行不懈的探索,這期間,有兩種主要的人工智能研究的語言工具,一種是LISP表處理語言,另一種是PROGLOG語言。常有人稱二者為第五代語言,但是這兩種語言并沒有為人工智能的研究帶來實(shí)質(zhì)上的進(jìn)展,因此,不應(yīng)該稱其為第五代語言,我們只能期待著真正的第五代語言的出現(xiàn)。
Internet誕生在六十年代末,此后的二十幾年,一直是在緩慢地發(fā)展,直到九十年代,HTML語言以及HTML圖文瀏覽器Mosaic的出現(xiàn),使得Internet在此后十年間得到前所未有的發(fā)展。從HTML,到DHTML,再到XML,Web存儲(chǔ)格式語言為信息的發(fā)布、信息的交流起了極大的作用。這些Web存儲(chǔ)格式語言與以往的計(jì)算機(jī)語言有很大的不同,它們是通過標(biāo)簽來標(biāo)識(shí)內(nèi)容和數(shù)據(jù),從嚴(yán)格意義來說不應(yīng)該稱為計(jì)算機(jī)語言。
在Web技術(shù)的發(fā)展過程中,真正可以稱為計(jì)算機(jī)語言,并得到極大的普及的是Java語言。Java是面向?qū)ο蟮木W(wǎng)絡(luò)語言,它的獨(dú)特的網(wǎng)絡(luò)特性包括:平臺(tái)獨(dú)立性、動(dòng)態(tài)代碼下載、為多媒體功能而設(shè)計(jì)的多線程、為通過Internet快速傳送而設(shè)計(jì)的緊湊的代碼格式。Java的工作方式與現(xiàn)有的桌面軟件應(yīng)用程序的工作方式不同。Java程序不需要存儲(chǔ)在你的PC機(jī)上,而是存儲(chǔ)在中央網(wǎng)絡(luò)服務(wù)器。當(dāng)你通過瀏覽器訪問到一個(gè)帶有Java小程序的Web頁面時(shí),Java小程序就會(huì)自動(dòng)被下載運(yùn)行。因?yàn)镴ava程序通常都很小的小程序,因此下載運(yùn)行就會(huì)比大程序快得多。此外,版本控制在Java小程序這樣的中央存儲(chǔ)模式下更為容易??梢詮娜魏我慌_(tái)具有Java虛擬機(jī)的機(jī)器上訪問任何服務(wù)器上的Java程序。
九十年代,軟件復(fù)用的需求和呼聲促使組件技術(shù)從面向?qū)ο蠹夹g(shù)肥沃的土壤中迅速發(fā)芽、成長,并開始結(jié)出累累碩果。軟件組件定義為自包含的、可編程的、可重用的、與語言無關(guān)的代碼片段,這樣的軟件組件可以很容易地插入到應(yīng)用程序中。軟件組件暴露方法和屬性,觸發(fā)事件,并且通過名稱或ID號(hào)全局表示自己。已經(jīng)成為流行的標(biāo)準(zhǔn)的組件模型包括COM/DCOM組件模型和CORBA組件模型。組件技術(shù)是計(jì)算機(jī)軟件發(fā)展的最新結(jié)果,也是半個(gè)多世紀(jì)以來所尋求的有效的軟件構(gòu)造方法。
在計(jì)算機(jī)語言的發(fā)展過程中,先后出現(xiàn)的語言至少有幾千種,但是真正能普及應(yīng)用的計(jì)算機(jī)語言卻是屈指可數(shù)的。一種計(jì)算機(jī)語言要能流行普及,除了要有獨(dú)有的特色以外,還要切合當(dāng)時(shí)的應(yīng)用需求。
計(jì)算機(jī)語言不應(yīng)該只是思維放大工具,事實(shí)上,計(jì)算機(jī)語言已經(jīng)成為我們思維的一部分。計(jì)算機(jī)語言是朝著自然語言的方向發(fā)展,它的最終目標(biāo)應(yīng)該是成為人類與計(jì)算機(jī)之間的很自然的交流工具,人可以通過這樣的語言將自己所具有的知識(shí),或者自己的思想、情感、愿望等表達(dá)給計(jì)算機(jī),這樣的語言可以稱為知識(shí)語言或者是智能語言。到了這樣的境界,“計(jì)算機(jī)”的名稱應(yīng)該改成別的什么,因?yàn)樗c人類智能的界限已經(jīng)不那么明顯了。這就是人工智能,我們?nèi)祟愃鶋?mèng)寐以求的最高境界。
2.從數(shù)值運(yùn)算,符號(hào)運(yùn)算,到組件運(yùn)算
簡(jiǎn)單回顧一下運(yùn)算的歷史:最早的運(yùn)算屬于數(shù)值運(yùn)算,它針對(duì)阿拉伯?dāng)?shù)字進(jìn)行加、減、乘、除等等數(shù)學(xué)計(jì)算;將數(shù)值運(yùn)算抽象出來,數(shù)學(xué)家們發(fā)明了符號(hào)運(yùn)算,這種運(yùn)算的特征在于它并不指明實(shí)際的運(yùn)算對(duì)象,而是以抽象的符號(hào)作為運(yùn)算對(duì)象,通過對(duì)符號(hào)的演繹,數(shù)學(xué)家們構(gòu)建了規(guī)模巨大的數(shù)學(xué)公式庫,而物理學(xué)家們則利用符號(hào)運(yùn)算作為工具來研究物質(zhì)世界的作用機(jī)制。這兩種運(yùn)算的運(yùn)算對(duì)象分別是數(shù)字和字符串,以組件的眼光來看,它們屬于極特殊的兩種組件。
運(yùn)算是計(jì)算機(jī)語言的主要功能,早期的計(jì)算機(jī)語言如FORTRAN就主要是用于科學(xué)與工程計(jì)算,屬于數(shù)值運(yùn)算的范疇。對(duì)數(shù)學(xué)家以及工程人員來說,象公式推導(dǎo)這樣的符號(hào)運(yùn)算是極為有用,也是迫切需要的,于是相應(yīng)的語言工具就出現(xiàn)了,這其中Mathematica語言工具是一種廣泛流行的數(shù)學(xué)工具,它除了具有強(qiáng)大的數(shù)值運(yùn)算功能外,最重要的核心就是它能進(jìn)行公式推導(dǎo)。在Mathematica內(nèi)部,有一種模式匹配方法作為其數(shù)學(xué)運(yùn)算和公式推導(dǎo)的基礎(chǔ)。
既然數(shù)值運(yùn)算和符號(hào)運(yùn)算的運(yùn)算對(duì)象:數(shù)字和字符串屬于特殊的兩種組件類型,那么,除了數(shù)值運(yùn)算與符號(hào)運(yùn)算以外,還應(yīng)該有組件的運(yùn)算方式。目前只有KCOM Space這一軟件開發(fā)平臺(tái)實(shí)現(xiàn)了組件運(yùn)算。作為一種純粹的組件平臺(tái),KCOM Space的核心優(yōu)勢(shì)之一表現(xiàn)在它首先提出并實(shí)現(xiàn)了一種全新的運(yùn)算方式 --- 組件運(yùn)算。
在純粹的組件空間里,對(duì)象不再只有數(shù)字和字符串,而包含有種類和形態(tài)豐富多樣的組件。這就需要有一種對(duì)組件的運(yùn)算方式,為此,KCOM Space提出并實(shí)現(xiàn)了組件運(yùn)算:組件作為運(yùn)算對(duì)象參與運(yùn)算,比如定義組件變量、組件常量、組件數(shù)組,組件作為值賦給組件變量,組件作為參數(shù)用在方法調(diào)用中。
組件運(yùn)算是數(shù)值運(yùn)算和符號(hào)運(yùn)算的發(fā)展和擴(kuò)充,它包含前兩種運(yùn)算方式。組件運(yùn)算的最明顯的特征就是它的直觀明了,降低了學(xué)習(xí)運(yùn)用的難度,因此組件運(yùn)算語言也將成為大眾化的語言。通過組件運(yùn)算語言,每一個(gè)人都可以將它自己領(lǐng)域的知識(shí)表示出來,這樣表達(dá)出來的組件系統(tǒng)就是知識(shí)化的系統(tǒng),積少成多就可以構(gòu)成知識(shí)組件庫。
組件運(yùn)算的最直接的效果是帶來了代碼的可視化。面向?qū)ο缶幊陶Z言如C++,在代碼中使用組件都是通過一連串的代碼來完成的:首先聲明一個(gè)組件類的實(shí)例,然后每一個(gè)要設(shè)置的屬性都需要有一個(gè)賦值代碼行。相比之下,組件運(yùn)算使得組件可以直接插入到代碼之中,通過組件的屬性對(duì)話框就可以以可視的方式設(shè)置所有待設(shè)的屬性。這就是代碼的可視化。第四代語言的最重要的特征就是界面可視化,也就是能以所見即所得的方式編排用戶界面。組件運(yùn)算引入的代碼可視化,使可視化的程度又前進(jìn)了一步,實(shí)現(xiàn)了完全可視化。如果說界面可視化為應(yīng)用開發(fā)效率的提高帶來一次飛躍,那么代碼可視化再次為應(yīng)用開發(fā)效率的提高帶來又一次的飛躍。
組件運(yùn)算是一個(gè)全新的運(yùn)算領(lǐng)域,但卻又是必然的運(yùn)算發(fā)展趨勢(shì)。結(jié)合檢索和模式匹配以及控制機(jī)制,組件運(yùn)算將構(gòu)成未來知識(shí)系統(tǒng)的基礎(chǔ)。