1. 程式人生 > >計算機語言的發展史

計算機語言的發展史

流水線 表達式 二進制 挪威 計算機 過程 img 順序 編程

技術分享

1、機器語言

缺點可讀性差,不易記憶;編寫程序既難又繁,容易出錯;程序調試和修改難度巨大,不容易掌握和使用。機器語言直接依賴於中央處理器,所以用某種機器語言編寫的程序只能在相應的計算機上執行,無法在其他型號的計算機上執行,也就是說,可移植性差。

2、匯編語言

為了減輕使用機器語言編程的痛苦,20世紀50年代初,出現了匯編語言。匯編語言用比較容易識別、記憶的助記符替代特定的二進制串。例如使用ADD 來替代加法的二進制指令。通過這種助記符,人們就能較容易地讀懂程序,調試和維護也更方便了。但這些助記符號計算機無法識別,需要一個專門的程序將其翻譯成機器語言,這種翻譯程序被稱為匯編程序。盡管匯編語言比機器語言方便,但匯編語言仍然具有許多不便之處,程序編寫的效率遠遠不能滿足需要。匯編語言直接操作硬件,因此匯編語言只針對特定的計算機處理器,所以幾乎沒有可移植性。

3、早期高級語言

1954年,第一個高級語言—FORTRAN問世了。高級語言與自然語言和數學表達式相當接近,不依賴於計算機型號,通用性較好。高級語言的使用,大大提高了程序編寫的效率和程序的可讀性。與匯編語言一樣,計算機無法直接識別和執行高級語言,必須翻譯成等價的機器語言程序(稱為目標程序)才能執行。高級語言源程序翻譯成機器語言程序的方法有“解釋”和“編譯”兩種。解釋方法采用邊解釋邊執行的方法。編譯方法采用相應語言的編譯程序,先把源程序編譯成指定機型的機器語言目標程序,然後再把目標程序和各種標準庫函數連接裝配成完整的目標程序,在相應的機型上執行。

4、結構化高級語言

高級語言編寫程序的編寫效率雖然比匯編語言高,但隨著計算機硬件技術的日益發展,人們對大型、復雜的軟件需求量劇增,而同時因缺乏科學規範、系統規劃與測試,程序含有過多錯誤而無法使用,甚至帶來巨大損失。20世紀60年代中後期“軟件危機”的爆發,使人們認識到大型程序的編制不同於小程序。“軟件危機”的解決一方面需要對程序設計方法、程序的正確性和軟件的可靠性等問題進行深入研究,另一方面需要對軟件的編制、測試、維護和管理方法進行深入研究。結構化程序設計是一種程序設計的原則和方法。它討論了如何避免使用GOTO語句;如何將大規模、復雜的流程圖轉換成一種標準的形式,使得它們能夠用幾種標準的控制結構(順序、分支和循環)通過重復和嵌套來表示。C語言就是一種結構化語言。一般來說,計算機語言要處理兩個概念——數據和算法(程序=數據+算法)。數據是程序使用和處理的信息,而算法是程序使用的方法。C語言是過程性語言,這意味著它強調的是編程的算法方面。

但是,到了20世紀70年代末期,隨著計算機應用領域的不斷擴大,對軟件技術的要求越來越高,結構化程序設計語言和結構化程序設計方法又無法滿足用戶需求的變化了,其缺點也日益顯露出來:
(1)代碼的可重用性差。
(2)可維護性差。

(3)穩定性差。

(4)難以實現。

人的思維焦點通常是在於事物和實體,以及它們的屬性和活動,比如說當考慮會計部門的應用程序時,我們會考慮下列內容:
出納支付工資;職工出具憑證;財務主管批準支付;出納記賬。
但實際應用中,要決定如何通過數據結構、變量和函數來實現這個應用程序卻是很困難的。

5面向對象語言

結構化程序設計方法與語言是面向過程的,存在較多的缺點,同時程序的執行是流水線式的,在一個模塊被執行完成前,不能幹別的事,也無法動態地改變程序的執行方向。這和人們日常認識、處理事物的方式不一致。人們認為客觀世界是由各種各樣的對象(或稱實體、事物)組成的;每個對象都有自己的內部狀態和運動規律,不同對象間的相互聯系和相互作用構成了各種不同的系統,進而構成整個客觀世界;計算機軟件主要就是為了模擬現實世界中的不同系統,如物流系統、銀行系統、圖書管理系統、教學管理系統等。因此,計算機軟件可以認為是,現實世界中相互聯系的對象所組成的系統,在計算機中的模擬實現。

為了使計算機更易於模擬現實世界,1967年挪威計算中心開發出了Simula67語言,它提供了比子程序更高一級的抽象和封裝,引入了數據抽象和類的概念,被認為是第一個面向對象程序設計語言。它對後來出現的面向對象語言,如C++、Java、C#產生了深遠的影響。

隨著面向對象語言的出現,面向對象程序設計方法也應運而生且得到迅速發展,面向對象的思想也不斷向其他方面滲透。1980年Grady Booch提出了面向對象設計的概念,之後面向對象分析的概念也被提出。面向對象程序設計在軟件開發領域掀起了巨大的變革,極大地提高了軟件開發效率。

程序語言越低級,則必須對過程描述的越具體,指令也就越接近機器的硬件邏輯。相反,程序語言越高級,就越接近對問題的描述與表達,因而更直觀,更容易被人們所理解。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

轉載自:http://blog.csdn.net/hurlan/article/details/20941793

計算機語言的發展史