Remove ads
来自维基百科,自由的百科全书
本文記述了C語言自20世紀70年代至今的歷史及發展。
C語言最早由丹尼斯·里奇(Dennis Ritchie)為了在PDP-11電腦上運行的Unix系統所設計出來的程式語言,第一次發展在1969年到1973年之間。
C源於BCPL語言,後者由馬丁·理察德(Martin Richards)於1967年左右設計實現。BCPL是一門"無類型"的程式語言:它僅能操作一種資料類型,即機器字(machine word)。1970年,肯·湯普遜為執行在PDP-7上的首個Unix系統設計了一個精簡版的BCPL,這個語言被稱為B語言,它也是無類型的。
Unix最早運行在PDP-7上,是以組合語言寫成。在PDP-11出現後,丹尼斯·里奇與肯·湯普遜着手將Unix移植到PDP-11上,無類型的語言在PDP-11上愈發顯得不合適。PDP-11提供了多種不同規格大小的基本對象:一位元組長的字元,兩位元組長的整型數以及四位元組長的浮點數。B語言無法處理這些不同規格大小的對象,也沒有提供單獨的運算子去操作它們。
C語言最初嘗試通過向B語言中增加資料類型的想法來處理那些不同類型的數據。和大多數語言一樣,在C中,每個對象都有一個類型以及一個值;類型決定了可用於值的操作的含義,以及對象佔用的儲存空間大小。
1973年,Unix作業系統的核心正式用C語言改寫,這是C語言第一次應用在作業系統的核心編寫上。
1975年C語言開始移植到其他機器上使用。史蒂芬·強生實現了一套「可移植編譯器」,這套編譯器修改起來相對容易,並且可以為不同的機器生成代碼。從那時起,C在大多數電腦上被使用,從最小的微型電腦到與CRAY-2超級電腦。C語言很規範,即使沒有一份正式的標準,你也可以寫出C程式,這些程式無須修改就可以執行在任何支援C語言和最小執行時環境的電腦上。
C最初在小型機器上實現,並且繼承了一系列小語種程式語言的特點;與功能相比,C的設計者更傾向於簡單和優雅。此外,從一開始,C語言就是為系統級編程而設計,程式的執行效率至關重要,因此,C語言與真實機器能力的良好匹配也就不足為奇。例如,C語言為典型硬件所直接支援的對象:字元,整數(也許有多種大小),以及浮點數(同樣可能有多種大小)提供了相應的基本資料類型。[1]
1978年,丹尼斯·里奇和布萊恩·柯林漢合作出版了《C程式語言》的第一版。書中介紹的C語言標準也被C語言程式設計師稱作「K&R C」(柯里C),第二版的書中也包含了一些ANSI C的標準。
K&R C主要引入了以下語言特性:
struct
)類型long int
)類型unsigned int
)類型=+
和=-
改為+=
和-=
。因為=+
和=-
會使得編譯器不知道用戶要處理i = -10
還是i =- 10
,使得處理上產生混淆。即使在後來ANSI C標準被提出的許多年後,K&R C仍然是許多編譯器的最低標準要求,許多老舊的編譯仍然運行K&R C的標準。[2]
1989年,C語言被美國國家標準協會(ANSI)標準化,編號為ANSI X3.159-1989。這個版本又稱為C89。標準化的一個目的是擴充K&R C,增加了一些新特性。
1990年,國際標準化組織(ISO)成立 ISO/IEC JTC1/SC22/WG14 工作群組,來規定國際標準的C語言,通過對ANSI標準的少量修改,最終製定了 ISO 9899:1990,又稱為C90。隨後,ANSI亦接受國際標準C,並不再發展新的C標準。[3]
K&R C語言到ANSI/ISO標準C語言的改進包括:
WG14工作小組之後又於1994年,對1985年頒佈的標準做了兩處技術修訂(缺陷修復)和一個補充(擴充)。下面是 1994 年做出的所有修改:
在ANSI的標準確立後,C語言的規範在一段時間內沒有大的變動,然而C++在自己的標準化建立過程中繼續發展壯大。《標準修正案一》在1994年為C語言建立了一個新標準,但是只修正了一些C89標準中的細節和增加更多更廣的國際字元集支援。不過,這個標準引出了1999年ISO 9899:1999的發表。它通常被稱為C99。C99被ANSI於2000年3月採用。
2011年12月8日,ISO正式發佈了新的C語言的新標準C11(之前被稱為C1X),官方名稱為ISO/IEC 9899:2011。新的標準提高了對C++的相容性,並增加了一些新的特性。這些新特性包括泛型、多線程、帶邊界檢查的函數、匿名結構等[5]。
C18沒有引入新的語言特性,只對C11進行了補充和修正[6]。
C2x引入了一些新特性。目前可以確定的是,C2x標準將加入符合IEEE標準的十進制浮點數,這使得電腦能夠精確地儲存浮點數[7]。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.