C語言於1972年11月問世,1978年美國電話電報公司(AT&T)貝爾實驗室正式發布C語言,1983年由美國國家標准局(American National Standards Institute,簡稱ANSI)開始制定C語言標准,於1989年12月完成,並在1990年春天發布,稱之為ANSI C,有時也被稱為 C89 或 C90。
C語言之父——里奇
在學習C語言之前,我們先了解一下C語言的歷史。
C語言是一門通用的,模塊化,程序化的編程語言,被廣泛應用於操作系統和應用軟件的開發。由於其高效和可移植性,適應於不同硬件和軟件平台,深受開發員的青睞。
C語言早期發展
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
說明:丹尼斯·里奇(Dennis Ritchie),C語言之父,UNIX之父。1978年與布萊恩·科爾尼干(Brian Kernighan)一起出版了名著《C程序設計語言(The C Programming Language)》,現在此書已翻譯成多種語言,成為C語言方面最權威的教材之一。2011年10月12日(北京時間為10月13日),丹尼斯·里奇去世,享年70歲。
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。
C語言的誕生是和UNIX操作系統的開發密不可分的,原先的UNIX操作系統都是用匯編語言寫的,1973年UNIX操作系統的核心用C語言改寫,從此以后,C語言成為編寫操作系統的主要語言。
K&R C
1978年,丹尼斯·里奇(Dennis Ritchie)和布萊恩·科爾尼干(Brian Kernighan)出版了一本書,名叫《The C Programming Language》(中文譯名為《C程序設計語言》)。這本書被C語言開發者們稱為“K&R”,很多年來被當作C語言的非正式的標准說明。人們稱這個版本的C語言為“K&R C”。
1988年丹尼斯·里奇(Dennis Ritchie)和布萊恩·科爾尼干(Brian Kernighan)修改此書,出版了《The C Programming Language》第二版,第二版涵蓋了ANSI C語言標准。第二版從此成為大學計算機教育有關C語言的經典教材,多年后也沒再出現過更好的版本。
ANSI C 和 ISO C
1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
為統一C語言版本,1983年美國國家標准局(American National Standards Institute,簡稱ANSI)成立了一個委員會,來制定C語言標准。1989年C語言標准被批准,被稱為ANSI X3.159-1989 “Programming Language C”。這個版本的C語言標准通常被稱為ANSI C。又由於這個版本是 89 年完成制定的,因此也被稱為 C89。
后來 ANSI 把這個標准提交到 ISO(國際化標准組織),1990年被 ISO 采納為國際標准,稱為 ISO C。又因為這個版本是1990年發布的,因此也被稱為C90。
ANSI C(C89) 與 ISO C(C90)內容基本相同,主要是格式組織不一樣。
因為 ANSI 與 ISO 的C標准內容基本相同,所以對於C標准,可以稱為ANSI C,也可以說是ISO C,或者 ANSI / ISO C。
注意:以后大家看到 ANSI C、ISO C、C89、C90,要知道這些標准的內容都是一樣的。
目前,幾乎所有的開發工具都支持 ANSI / ISO C 標准。是C語言用得最廣泛的一個標准版本。
C99
在ANSI C標准確立之后,C語言的規范在很長一段時間內都沒有大的變動。1995年C程序設計語言工作組對 C語言進行了一些修改,成為后來的1999年發布的 ISO/IEC 9899:1999標准,通常被成為C99。
但是各個公司對C99的支持所表現出來的興趣不同。當GCC和其它一些商業編譯器支持C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣。
說明:GCC(GNU Compiler Collection,GNU編譯器集合)是一套由GNU工程開發的支持多種編程語言的編譯器。
綜上所述,目前廣泛使用的C語言版本是 ANSI / ISO C,最經典的C語言教材是《C程序設計語言(The C Programming Language) 第二版》。
C語言版本更迭史
C語言對其它語言的影響
很多編程語言都深受C語言的影響,比如C++(原先是C語言的一個擴展)、C#、Java、PHP、Javascript、Perl、LPC和UNIX的C Shell等。
也正因為C語言的影響力,掌握C語言的人,再學其它編程語言,大多能很快上手,觸類旁通,很多大學將C語言作為計算機教學的入門語言。