自1 9 4 6年世界上第一臺電子計算機問世以來,計算機科學及其應用的發(fā)展十分迅猛,計算機被廣泛地應用于人類生產(chǎn)、生活的各個領域,推動了社會的進步與發(fā)展。特別是隨著國際互聯(lián)網(wǎng)(I n t e r n e t)日益深入千家萬戶,傳統(tǒng)的信息收集、傳輸及交換方式正被革命性地改變,我們已經(jīng)難以擺脫對計算機的依賴,計算機已將人類帶入了一個新的時代—信息時代。
新的時代對于我們的基本要求之一是:自覺地、主動地學習和掌握計算機的基本知識和基本技能,并把它作為自己應該具備的基本素質(zhì)。要充分認識到,缺乏計算機知識,就是信息時代的“文盲”。
對于理工科的大學生而言,掌握一門高級語言及其基本的編程技能是必需的。大學學習,除了掌握本專業(yè)系統(tǒng)的基礎知識外,科學精神的培養(yǎng)、思維方法的鍛煉、嚴謹踏實的科研作風養(yǎng)成,以及分析問題、解決問題的能力的訓練,都是日后工作的基礎。學習計算機語言,正是一種十分有益的訓練方式,而語言本身又是與計算機進行交互的有力的工具。
一臺計算機是由硬件系統(tǒng)和軟件系統(tǒng)兩大部分構(gòu)成的,硬件是物質(zhì)基礎,而軟件可以說是計算機的靈魂,沒有軟件,計算機是一臺“裸機”,是什么也不能干的,有了軟件,才能靈動起來,成為一臺真正的“電腦”。所有的軟件,都是用計算機語言編寫的。
計算機程序設計語言的發(fā)展,經(jīng)歷了從機器語言、匯編語言到高級語言的歷程。
1. 機器語言
電子計算機所使用的是由“0”和“1”組成的二進制數(shù),二進制是計算機的語言的基礎。計算機發(fā)明之初,人們只能降貴紆尊,用計算機的語言去命令計算機干這干那,一句話,就是寫出一串串由“0”和“1”組成的指令序列交由計算機執(zhí)行,這種語言,就是機器語言。使用機器語言是十分痛苦的,特別是在程序有錯需要修改時,更是如此。而且,由于每臺計算機的指令系統(tǒng)往往各不相同,所以,在一臺計算機上執(zhí)行的程序,要想在另一臺計算機上執(zhí)行,必須另編程序,造成了重復工作。但由于使用的是針對特定型號計算機的語言,故而運算效率是所有語言中最高的。機器語言,是第一代計算機語言。
2. 匯編語言
為了減輕使用機器語言編程的痛苦,人們進行了一種有益的改進:用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串,比如,用“A D D”代表加法,“M O V”代表數(shù)據(jù)傳遞等等,這樣一來,人們很容易讀懂并理解程序在干什么,糾錯及維護都變得方便了,這種程序設計語言就稱為匯編語言,即第二代計算機語言。然而計算機是不認識這些符號的,這就需要一個專門的程序,專門負責將這些符號翻譯成二進制數(shù)的機器語言,這種翻譯程序被稱為匯編程序。
匯編語言同樣十分依賴于機器硬件,移植性不好,但效率仍十分高,針對計算機特定硬件而編制的匯編語言程序,能準確發(fā)揮計算機硬件的功能和特長,程序精煉而質(zhì)量高,所以至今仍是一種常用而強有力的軟件開發(fā)工具。
3. 高級語言
從最初與計算機交流的痛苦經(jīng)歷中,人們意識到,應該設計一種這樣的語言,這種語言接近于數(shù)學語言或人的自然語言,同時又不依賴于計算機硬件,編出的程序能在所有機器上通用。經(jīng)過努力,1 9 5 4年,第一個完全脫離機器硬件的高級語言—F O RT R A N問世了,4 0多年來,共有幾百種高級語言出現(xiàn),有重要意義的有幾十種,影響較大、使用較普遍的有F O RT R A N、A L G O L、C O B O L、B A S I C、L I S P、S N O B O L、P L / 1、P a s c a l、C、P R O L O G、A d a、C + +、V C、V B、D e l p h i、J AVA 等。
高級語言的發(fā)展也經(jīng)歷了從早期語言到結(jié)構(gòu)化程序設計語言,從面向過程到非過程化程序語言的過程。相應地,軟件的開發(fā)也由最初的個體手工作坊式的封閉式生產(chǎn),發(fā)展為產(chǎn)業(yè)化、流水線式的工業(yè)化生產(chǎn)。
6 0年代中后期,軟件越來越多,規(guī)模越來越大,而軟件的生產(chǎn)基本上是人自為戰(zhàn),缺乏科學規(guī)范的系統(tǒng)規(guī)劃與測試、評估標準,其惡果是大批耗費巨資建立起來的軟件系統(tǒng),由于含有錯誤而無法使用,甚至帶來巨大損失,軟件給人的感覺是越來越不可靠,以致幾乎沒有不出錯的軟件。這一切,極大地震動了計算機界,史稱“軟件危機”。人們認識到:大型程序的編制不同于寫小程序,它應該是一項新的技術(shù),應該像處理工程一樣處理軟件研制的全過程。程序的設計應易于保證正確性,也便于驗證正確性。1 9 6 9年,提出了結(jié)構(gòu)化程序設計方法,1 9 7 0年,第一個結(jié)構(gòu)化程序設計語言—P a s c a l語言出現(xiàn),標志著結(jié)構(gòu)化程序設計時期的開始。
8 0年代初開始,在軟件設計思想上,又產(chǎn)生了一次革命,其成果就是面向?qū)ο蟮某绦蛟O計。在此之前的高級語言,幾乎都是面向過程的,程序的執(zhí)行是流水線似的,在一個模塊被執(zhí)行完成前,人們不能干別的事,也無法動態(tài)地改變程序的執(zhí)行方向。這和人們?nèi)粘L幚硎挛锏姆绞绞遣灰恢碌?,對人而言是希望發(fā)生一件事就處理一件事,也就是說,不能面向過程,而應是面向具體的應用功能,也就是對象(o b j e c t)。其方法就是軟件的集成化,如同硬件的集成電路一樣,生產(chǎn)一些通用的、封裝緊密的功能模塊,稱之為軟件集成塊,它與具體應用無關,但能相互組合,完成具體的應用功能,同時又能重復使用。對使用者來說,只關心它的接口(輸入量、輸出量)及能實現(xiàn)的功能,至于如何實現(xiàn)的,那是它內(nèi)部的事,使用者完全不用關心,C + +、V B、D e l p h i就是典型代表。
高級語言的下一個發(fā)展目標是面向應用,也就是說:只需要告訴程序你要干什么,程序就能自動生成算法,自動進行處理,這就是非過程化的程序語言。