任何新的发现都是源于旧方法无法很好的解决当前问题,而后创新尝试中产生。C的产生是由于一个项目的失败,专家们转而寻找其它方式解决问题时应运而生。
贝尔实验室和麻生理工学院创建了一个项目-Multics工程,目的是创立一个操作系统。他们试图在一个小硬件上创立一个庞大的操作系统,但是最终交付的不是满意。为此他们中的一些专家尝试用了新的方式,最终产生了unix的C。
语言 : BCPL--->B--->New B--->早期的C--->K&R C ---> ANSI C --->C++(Ada)
操作系统: Unix(PDP-7汇编)---->Unix(PDP-11汇编)--->Unix(C编写)--->
硬件: PDP-7 PDP-11 IBm360 HoneyWell 635
PDP-11出现后,处理器可以处理不同长度的数据类型为特色,此时的B语言无法表达不同类型数,效率低下,为此New B产生,它采用编译模式而不是解释模式,引入类型数据,每个变量在使用前必须先声明。
C语言很多特性是为了方便编译器设计者而建立的(一开始的几年C语言的主要客户是那些编译器设计者),这些特性包括:
1、数组下标是从0开始而不是从1开始;
2、C语言的基本数据类型直接和底层硬件相对应;
3、auto关键字显然是摆设;
4、表达式的数组名可以看作是指针;
5、float自动扩展为double;
6、不允许嵌套函数(函数内部包含另一个函数的定义);
7、register关键字;
第一个C编译器在1970年诞生,至今超过40年了。它对直接由硬件支持的底层操作的强调,带来了极高的效率和移植性,也帮助了unix获得巨大成功。