天天看點

C語言發展簡史

嵌入式Linux 1月27日

1、起源

C 語言最早的原型是 ALGOL 60 1963 年,劍橋大學将其發展成為 CPL(Combined Programing Language)。1967 年,劍橋大學的 Matin Richards 對 CPL 語言進行了簡化,産生了 BCPL 語言。

1970 年,美國貝爾實驗室(Bell Labs)的 Ken Thompson 将 BCPL 進行了修改,并取名叫做 B 語言,意思是提取 CPL 的精華(Boiling CPL down to its basic good features)。并用 B 語言寫了第一個 UNIX 系統。

1973 年,AT&T 貝爾實驗室的 Dennis Ritchie(D.M.RITCHIE) 在 BCPL 和 B 語言的基礎上設計出了一種新的語言,取 BCPL 中的第二個字母為名,這就是大名鼎鼎的 C 語言。

随後不久,UNIX 的核心(Kernel) 和應用程式全部用 C 語言改寫,從此,C 語言成為 UNIX 環境下使用最廣泛的主流程式設計語言。

2、K&R C

1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The C Programming Language》的第一版(按照慣例,經典著作一定有簡稱,該著作簡稱為 K&R),書末的參考指南 (Reference Manual) 一節給出了當時 C 語言的完整定義,成為那時 C 語言事實上的标準,人們稱之為 K&R C。從這一年以後,C 語言被移植到了各種機型上,并受到了廣泛的支援,使 C 語言在當時的軟體開發中幾乎一統天下。

3、C89 (ANSI C)

随着 C 語言在多個領域的推廣、應用,一些新的特性不斷被各種編譯器實作并添加進來。于是,建立一個新的“無歧義、于具體平台無關的 C 語言定義” 成為越來越重要的事情。1983 年,ASC X3(ANSI 屬下專門負責資訊技術标準化的機構,現已改名為 INCITS)成立了一個專門的技術委員會 J11(J11 是委員會編号,全稱是 X3J11),負責起草關于 C 語言的标準草案。1989 年,草案被 ANSI 正式通過成為美國國家标準,被稱為 C89 标準。

4、C90 (ISO C)

随後,《The C Programming Language》第二版開始出版發行,書中内容根據 ANSI C(C89)進行了更新。1990 年,在 ISO/IEC JTC1/SC22/WG14 (ISO/IEC 聯合技術第 I 委員會第 22 分委員會第 14 工作組) 的努力下,ISO 準許了 ANSI C 成為國際标準。于是 ISO C(又稱為 C90) 誕生了。除了标準文檔在印刷編排上的某些細節不同外,ISO C(C90) 和 ANSI C(C89) 在技術上完全一樣。

5、C95

之後,ISO 在 1994、1996 年 分别出版了 C90 的技術勘誤文檔,更正了一些印刷錯誤,并在1995 年通過了一份 C90 的技術補充,對 C90 進行了微小的擴充,經過擴充後的 ISO C 被稱為 C95。

6、C99

1999 年,ANSI 和 ISO 又通過了最新版本的 C 語言标準和技術勘誤文檔,該标準被稱為 C99 。這基本上是目前關于 C 語言的最新、最權威的定義了。

現在,各種 C 編譯器都提供了 C89(C90) 的完整支援,對 C99 還隻提供了部分支援,還有一部分提供了對某些 K&R C 風格的支援。

目前主要的C語言規範有c89(c90), c95(94)和c99。C89是最早的C語言規範,于89年提出,90年先由美國國家标準局推出ANSI版本,後來被接納為ISO國際标準 (ISO/IEC 9899:1990),因而有時也稱為c90。但在94和96年分别對c90進行了兩次錯誤修正,gcc支援的是修正後的c89(90)版本的C語言規範。在95年提出過對90版規範的修訂案,稱為 C95或者AMD1。gcc也支援c95規範。最新的一次C規範修訂在99年制定(ISO/IEC 9899:1999),即常稱的C99規範。在2001年對C99的錯誤進行了修正,gcc支援的修正後的c99規範,但是到目前為止,gcc還沒有完成對c99規範的完全支援。

C語言發展簡史

"Hello, World!" program by Brian Kernighan (1978)

Language

Year

Developed By

Algol

1960

International Group

BCPL

1967

Martin Richard

B

1970

Ken Thompson

Traditional C

1972

Dennis Ritchie

K & R C

1978

Kernighan & Dennis Ritchie

ANSI C

1989

ANSI Committee

ANSI/ISO C

1990

ISO Committee

C99

1999

Standardization Committee

推薦閱讀:專輯|Linux文章彙總專輯|程式人生專輯|C語言我的知識小密圈

繼續閱讀