C語言的誕生


【LJ?Dragon】魚對水說你看不到我的眼淚,因為我在水里。水說我能感覺到你的眼淚,因為你在我心里。
【LJ?Dragon】You’re more than a shadow, I’ve just to believe.
【LJ?Dragon】A true friend is some one who reaches for your hand and touches your heart.


著名的計算機科學家丹尼斯·里奇(Dennis Ritchie)創造的

1967年, Ritchie進入貝爾實驗室工作。貝爾實驗室是當時世界上最有創造力的地方之一,著名的C語言、C++語言和Unix操作系統都誕生於此。一開始, 里奇和他的同事肯·湯普生開始研究DEC PDP-7機器,但是在這個機器上寫程序很困難,只能用很底層很高深的匯編語言。於是湯普生設計了一種高級程序語言,並把它命名為B語言。但是由於B語言本身設計的缺陷,使他在內存的限制面前一籌莫展。

1973年,里奇決定對B語言進行改良,他賦予了新語言強有力的系統控制方面的能力,並且新語言非常簡潔、高效,里奇把它命名為C語言,意為B語言的下一代。 在開發C語言的同時,里奇和湯普生、布朗(貝爾實驗室的另一名科學家)還接受了一個新任務,就是在DEC PDP-7上開發一個多任務、多用戶的操作系統,1969年,他們用匯編語言完成了這個操作系統的第一個版本,里奇受一個更早的項目Multics的啟發,將這個系統命名為Unix。 為了在全世界面前展現C語言強大的能力,里奇用C語言把Unix操作系統重寫了一遍,這就是Unix第三版。而之前的第二版是用B語言開發的。

1977年,為了推廣貝爾實驗室開發的Unix操作系統,里奇發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》,使C語言再向前跨出一大步,各種計算機都開始支持C語言。

1978年里奇和布朗一起出版了《C語言》一書,從而使C語言成為世界上應用最廣泛的高級程序設計語言,而該書也成為計算機科學界最暢銷的書籍之一。里奇把全部精力都放到Unix、C語言、C++語言的應用和推廣上,曾在很多國家進行過教學和講座活動。2000年,他來到了中國,在北京大學和復旦大學進行了題為《貝爾實驗室與操作系統》的講演,為推動中國Unix/Linux的應用和發展貢獻了力量。

1983年,人們將計算機科學方面的最高榮譽——圖靈獎頒發給了里奇,以表彰他對計算機科學所做出的傑出貢獻。 C語言的特色 C語言是高級程序語言,也就是說程序員不必知道具體的中央處理器型號也可以為計算機進行程序編制。它主要用來進行計算機的程序設計。C語言具有高效、靈活、功能豐富、表達力強和移植性好等的特點,在計算機語言中備受青睞。 在程序能夠運行前,源代碼必須有編譯器編譯成機器語言。相對於匯編語言只能針對具體型號的CPU才能運行,C語言的便捷性是很明顯的。 C語言的主要特性 C語言保留了低級語言的特性,例如涉及內存的指針。 C語言通過參數在函數里傳遞數值。 使用了預處理機制,使得程序里可以通過包含例如宏處理的方式來處理源程序。 C語言提供了一套標准庫,這些庫里提供了十分有用的功能。 但是並不是所有的這些特性都是有效的。例如,預處理通常作為一個獨立的程序被處理,這使得與處理的程序並不一定被完全編譯。 雖然C是高級語言,但是它同時擁有一些匯編語言的特性,對其它的語言來說這是接近低級語言的特點。例如,在C語言里,程序員可以對計算機內存進行管理。在默認的情況下,C語言不會對數組的范圍進行檢查,也就是說即使數組越界,C語言也不會作出錯誤提示。對計算機內存的管理使得程序員可以變出更快捷、更有效的程序,這對於設備驅動程序來說尤為重要。但是這也使得程序容易產生令人討厭的“臭蟲”,例如緩沖器溢出錯誤。然而,這些錯誤可以由一些工具來避免。 C語言的不足可以由由C語言發展而來的更新的編程語言改進。Cyclone語言的擁有提防對於內存錯誤的特性。C++和Objective C提供了用於面向對象的編程結構。Java和C#增加了面向對象的結構使得對內存的管理自動化。 C語言的版本 K&R C C不斷的從它的第一版本進行改進。

在1978年,Kernighan和里奇的C編程語言第一版出版。它介紹了下面的有關C語言版本的特性: struct數據類型 long int數據類型 unsigned int數據類型 把運算符=+改為+=,依次類推。因為=+使得編譯器混淆。 在以后的幾年里,C編程語言一直被廣泛作為C語言事實上的規范。在這本書中,C語言通常被表述成"K&R C"。(第二版的包括了ANSI C標准) K&R C通常被作為C編譯器所支持的最基本的C語言部分。雖然現在的編譯器並不一定都完全遵循ANSI標准,但K&R C作為C語言的最底要求仍然要編程人員掌握。但是無論怎樣,現在使用廣泛的C語言版本都已經與K&R C相距甚遠了,因為這些編譯器都使用ANSI C標准。 ANSI C和ISO C 1989年,C語言被ANSI標准化。(ANSI X3.159-1989)。標准化的一個目的是擴展K&R C。這個標准包括了一些新的特性。在K&R出版后,一些新的特征被“非官方”的加到C語言中。 void函數 函數返回struct或union類型 void *數據類型 在ANSI標准化自己的過程中,一些新的特征被加了進去。ANSI也標准了函數庫。ANSI C標准被ISO(國際標准化組織)采納成為ISO 9899。ISO的第一個版本文件在1990年出版。 C99 在ANSI標准化后,C語言的標准在一段相當的時間內都保持不變,盡管C++繼續在改進。(實際上,Normative Amendment1在1995年已經開發了一個新的C語言版本。但是這個版本很少為人所知。)標准在90年代才經歷了改進,這就是ISO9899:1999(1999年出版)。這個版本就是通常提及的C99。它被ANSI於2000年三月采用。 在C99中包括的特性有: 可變范圍的數組 新增加的數據類型,包括long long int,布爾類型和用於表示復數的類型 支持用//表示注釋(這個特性實際上在C89的很多編譯器上已經被支持了) snprintf 但是各個公司對C99的支持所表現出來的興趣不同。當GCC和其它一些商業編譯器支持C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM