不知道在哪里看到过这样一句话,大意是如果开始一个新的学科时,最好去阅读它的发展历史,这样有助于对此学科提起兴趣,并且能够更好地理解这个学科的知识。对于C语言的学习,我认为这一点也是同样的。
C语言的诞生和发展过程中,有很多东西都是值得津津乐道的:贝尔实验室,这个现代信息产业的孕育地;UNIX,里程碑般的操作系统;Brian Kernighan和Dennis Ritchie,C语言之父……
关于C语言的发展史,很多资料和书里都已经有详细的介绍了。我这里只是总结一下,尤其是对各种标准的产生进行一下说明,因为这关系到以后C程序编写规范和编译方面的配置。
C语言的产生与UNIX是息息相关的。可以说,C语言从某种角度上是UNIX的副产品(这么理解不一定百分之百正确)。Kernighan和Ritchie是为了更好地编写UNIX,从汇编语言和B语言发展出了C语言,同时也出版了一部至今都是程序员必读的伟大著作《The C Programming Lanaguage》。
由于TCPL作为C语言最开始的权威图书,因此第一版书中的C语言标准便被称为K&R C标准。这是C语言的最早标准。
1989年,C语言被ANSI标准化,被称为ANSI C或C89;1990年,C语言又被ISO标准化,被称为ISO C或C90。由于两套标准制定的时间相隔不长,切改动相对较小,ANSI又表示接受ISO的标准,因此这两个标准被统称为ANSI/ISO C或C90,由于这一标准最早的制定者是ANSI,所以一般将这个标准成为ANSI C标准。譬如C语言中标准输入输出的字符集,便是以这个标准产生的。
1999年,C语言标准又被ANSI/ISO修改,以增添新的特性支持,这便是C99。但就目前来讲,很多编译器并不支持C99,因此C99得标准还没有得到完全的铺开。我们常用的仍是ANSI C标准.
注:GCC编译器已经支持了C99标准,只是在使用时要加上选项配置。
参考:
- C Primer Plus
- 维基百科
- The Development of the C Language