天天看點

《C語言程式設計與實踐(第2版)》——1.4 C語言的發展曆史、現狀與特點

本節書摘來自華章出版社《c語言程式設計與實踐(第2版)》一書中的第1章,第1.4節,作者:淩雲等著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

1.4.1 c語言的發展曆史和現狀

c語言的發展曆史可以追溯到1961年的algol 60,它是c語言的祖先。algol 60是一種面向問題的進階語言,與計算機硬體的距離比較遠,不适合用來編寫系統軟體。1963年,英國劍橋大學推出了cpl(combined programming language)。cpl對algol 60進行了改造,在algol 60基礎上接近硬體一些,但是規模較大,難以實作。1967年,英國劍橋大學的martin richards對cpl進行了簡化,在保持cpl的基本優點的基礎上推出了bcpl(basic combined programming language)。1970~1971年,美國at&t公司貝爾實驗室的ken thompson對bcpl進行進一步簡化,設計出了非常簡單而且很接近硬體的b語言(取bcpl的第一個字母),并用b語言改寫了unix作業系統。但b語言過于簡單,且功能有限。1972~1973年,貝爾實驗室的dennis m. ritchie在b語言的基礎上設計出了c語言(取bcpl的第二個字母)。c語言既保持了bcpl和b語言的優點(精練、接近硬體),又克服了它們的缺點(過于簡單、無資料類型等)。最初的c語言隻是為了描述和實作unix作業系統提供一種工作語言而設計的。1973年,ken thompson和dennis m. ritchie兩人合作把unix中90%以上的代碼用c語言改寫,即unix第5版(最初的unix作業系統全部采用pdp-7彙編語言編寫)。

後來,c語言曆經多次改進,但主要還是在貝爾實驗室内部使用。直到1975年,unix第6版公布以後,c語言的突出優點才引起人們的普遍關注。1975年,不依賴于具體機器的c語言編譯文本(可移植c語言編譯程式)出現了,使c語言移植到其他機器時所需做的工作大大簡化,這也推動了unix作業系統迅速在各種機器上實作。随着unix的廣泛使用,c語言也迅速得到推廣。c語言和unix可以說是一對孿生兄弟,在發展過程中相輔相成。1978年以後,c語言已先後移植到大、中、小和微型計算機上,已獨立于unix和pdp計算機了。

現在,c語言已風靡全世界,成為世界上應用最廣泛的幾種計算機語言之一。許多系統軟體和實用的軟體包,如microsoft windows等,都是用c語言編寫的。圖1-2表示了c語言的“家譜”。

《C語言程式設計與實踐(第2版)》——1.4 C語言的發展曆史、現狀與特點

以1978年發表的unix第7版中的c語言編譯程式為基礎,brian w. kernighan和dennis m. ritchie (合稱k&r)合著了影響深遠的經典著作《the c programming language》,這本書中介紹的c語言成為後來廣泛使用的各種c語言版本的基礎,被稱為舊标準c。1983年,美國國家标準協會(ansi)根據c語言問世以來各種版本對c的發展和擴充制定了新的标準,稱為ansi c。ansi c比舊标準c有了很大的發展。1987年,ansi又公布了新标準——87 ansi c,k&r于1988年修改了他們的經典著作《the c programming language》,按照87 ansi c标準重新寫了該書。目前流行的各種版本的c語言都是以它為基礎的。

目前,在各種不同型号的計算機上,以及不同的作業系統環境下,出現了多種版本的c語言,如在ibm pc系列微機上使用的就有microsoft c、turbo c、quick c等,雖然這些c語言的基本部分是相同的,但也有各自的特點。它們自身的不同版本之間也略有差異,如turbo c 2.0與turbo c 1.5相比增加了一些新的功能,visual c++中對c語言也修改和提供了一些新的功能。

1.4.2 c語言的特點

c語言之是以能存在和發展,并具有旺盛的生命力,成為當今世界上最流行的幾種語言之一,是因為其有不同于其他語言的特點。c語言的主要特點如下:

1)短小精悍而且功能齊全。c語言簡潔、緊湊,使用友善、靈活;具有豐富的資料運算符;除基本的資料類型外,c語言還允許使用者自己構造資料類型。

2)結構化的程式設計語言。具有結構化的控制語句(如if…else語句、while語句、do…while語句、switch語句和for語句)。用函數作為程式的子產品機關,便于實作程式的子產品化,符合現代程式設計風格的要求。

3)兼有進階語言和低級語言的特點。c語言允許直接通路實體位址,能進行位(bit)操作,能實作彙編語言的大部分功能,可以直接對硬體進行操作,是以c語言既具有進階語言的功能,又有低級語言的許多功能,可用來編寫系統軟體。例如unix作業系統就是用c語言編寫的。

4)程式執行效率高。生成目标代碼品質高,程式執行效率高,一般隻比彙程式設計式生成的目标代碼效率低10%~20%,這是其他進階語言無法比拟的。

5)程式可移植性好。c語言基本上不做修改就能用于各種型号的計算機和各種操作

系統。

c是一門有一定難度的語言,要想能夠娴熟地運用它,需要百分之百的投入。通過學習,我們應該努力成為c語言高手,掌握c語言的思維方式,并采用這種方式編寫程式和解決問題。

習題

1.1 試着從網絡上下載下傳并運作用c語言編寫的程式,體會一下用c語言能完成哪些工作。

1.2 通過與習題1.1下載下傳程式類比,列舉幾種生活中适合用c語言程式設計解決的問題。

1.3 查找網上知名c語言論壇,注冊一個賬号,體會一個程式設計愛好者的心境,了解c語言作為程式開發工具的優缺點。

1.4 請參照本章例題,編寫一個c程式,調用printf函數輸出以下資訊:

1.5 編寫一個程式,輸出你的姓名及位址。

繼續閱讀