1963年剑桥大学发明CPL,1967 年,剑桥的Matin Richards 对CPL做了简化,推出了BCPL。在20世纪60年代,贝尔实验室的Ken Thompson(肯·汤普森)对BCPL做了改进,发明了B语言。并用B语言编了个游戏,又因为他自己想玩这个游戏,他在实验室找到了台机器。但是这台机器没有操作系统,于是他便开发了操作系统,后来这个操作系统被命名为UNIX。1971年,汤普森的同事丹尼斯·里奇与汤普森两人合作开发UNIX,同时丹尼斯·里奇还改进了B语言。在1972年,被改进的新语言就被称为C语言。之所以叫C语言,是因为B语言来自BCPL语言,C是B的下一个字母。之后,肯·汤普森和丹尼斯·里奇用C语言完全重写了UNIX,他们不断地开发UNIX和C语言。随着UNIX的发展,C语言也在不断地完善。因为C语言有着强大的移植性,在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。在1982年,C标准委员会成立,建立了C语言的标准。1989年,美国国家标准学会ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”。1999年,国际标准组织ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。
C语言有以下优缺点:
优点
1、简洁
2、运算符丰富
3、数据类型丰富
4、生成目标代码质量高,程序效率高
5、表达方式灵活
6、允许直接访问物理地址
7、可移植性好
8、表达力强
缺点
1、程序的安全性不足
2、语法限制不严格
因为c语言是上世纪七十年代的产物,造成了c语言的局限性,但是又正因为c语言“悠久”的历史,和c语言有关的东西很多,学c语言又是值得的。和其他语言相比,C语言比较难学,对使用者要求高,在掌握一大部分概念、特性之前,压根写不出有用的东西,极大地破坏了人的编程兴趣。即“学习曲线陡峭”。可能你以后不会直接用c语言工作,但是你会经常间接地和c语言的各种产物接触。无论以后工作用的是什么语言,如果想要把它背后依靠的平台吃透,都不可避免地需要了解它的底层实现,而这些底层实现基本上都是离不开C语言。学习了C语言,可以更好地了解和学习大多数操作系统内核以及各种高级语言,能看懂服务器程序,还可以自己动手写操作系统。而且目前各种单片机的编程几乎都是c语言。很重要的是,真正复杂、高难度、对性能有苛刻要求的大项目,C语言仍然是不可替代的。若要学习真正能决定你将来能走多远的操作系统、数据库、编译器等基础原理方面的东西,几乎只有C一个选择。在彻底学通之后,任何技术、任何架构,都能一目了然。案例众多、学习资源丰富,这是C最为独特的优势。学了C语言,学其他的高级语言也会轻松很多。