本文从ALGOL 60语言谈起,简述C语言的起源和发展历程,然后对C语言的一些特性做了探讨,最后说说C语言为什么在众多编程语言中,起到了承上启下的作用。
本文介绍以下内容:
- C语言的起源
- C语言的发展
- C语言的特性
- C语言的重要性
C语言的起源
C语言的前身是B语言,B语言的英文全称是Basic Combined Programming Language,简称BCPL,它是一种早期的高级语言,1967年由剑桥大学的计算机科学家马丁·理察德在CPL语言上改进而来,下面我们聊一聊C语言的进化过程。图1-1描述了C语言的起源。
图 1-1 C语言的起源
CPL是1963年由英国剑桥大学研发的一种编程语言,实际上CPL语言也不是横空出世,它是在ALGOL 60语言基础上发展而来,ALGOL 60采用了结构化程序设计和模块,并提出了函数、递归、巴克斯范式、结构体等现代程序设计思想,可以说ALGOL 60是程序设计语言发展史上的一个里程碑。
ALGOL 60最大的缺点就是缺乏标准的输入输出能力,使用ALGOL 60编写的程序无法兼容不同的计算机外部设备,导致ALGOL 60最终失败。
ALGOL 60并没有随着它的命运一起终结,英国剑桥大学在ALGOL 60的基础上研发了CPL语言,CPL催生了BCPL语言,而 BCPL 语言又进一步发展成为 C 语言。
C语言的发展
美国贝尔实验室在1970年对BCPL语言进行了修改和扩充,将修改和扩充的语言命名为B语言,并使用B语言写了第一个UNIX操作系统。1973年美国贝尔实验室对B语言又进行了改进,改进后的语言被命名为C语言,并使用 C 语言成功重新编写了UNIX内核。使用 C 语言编写内核的 UNIX 版本非常稳定,并且具有良好的可移植性,展现了 C 语言与 UNIX 的完美结合及 C 语言在编写系统软件时得天独厚的优势。
重写后的UNIX系统在一些研究机构、大学、政府机关开始慢慢流行起来,并带动了C语言的发展,1978年《The C Programming Language》出版,又进一步推动了C语言的普及。
从70年代开始,C语言被广泛应用,也衍生了C语言很多不同的版本,为了统一C语言版本,1983年美国国家标准局(英文简称ANSI)开始制定C语言标准,标准于1989底完成,在1990年春季发布,这个标准称为“ANSIC”标准,因为该标准在1989完成,因此也称为“C89”标准。
“ANSIC”标准在1990年被ISO采纳为国际标准,称为“ISOC”标准,同时也被称为“C90”标准,ANSIC(C89)和ISOC(C90)内容基本相同,主要区别在于制定C标准的组织不同而已。
1999年ISO对“C90”标准进行了扩充,增加了语言和标准库功能,增强了数值处理能力,该标准被称为“C99”标准,同时该标准在2000年被ANSI采纳。
当前最新的C语言标准是“C11”标准,由ISO制定并发布。图1-2描述了C语言标准发展历程。
图 1-2 C语言标准发展历程
C语言的特性
C 语言是一门工程实用性极强的语言,提供了对操作系统和内存的精准控制,编译后的程序运行效率相比Java、Python等语言要高效的多,对理工科学生来说它也是一门必修课。C语言的特点概况如下;
- C语言是一种结构化语言,层次清晰,便于模块化方式组织程序,易于调试和维护。
- C语言功能强大,程序运行效率高,计算机操作系统一般都由C语言编写而成,如Windows操作系统、Linux操作系统。
- C语言数据结构丰富,能实现各种复杂的数据类型的运算,引入指针可以直接操作硬件,把高级语言的基本结构和语句与低级语言的实用性结合起来。
- C语言可移植性强。它适合于多种操作系统编程,如Windows、DOS、UNIX、Linux等等,在一种系统中编写的C程序稍作修改或不修改就能在其它系统运行。
- C语言允许直接访问物理地址,能进行位(bit)操作,可以实现汇编语言的大部分功能,直接对硬件进行操作,特别适合于编写嵌入式程序和控制硬件的程序。
C语言的重要性
C语言在编程语言中属于系统级语言,几乎所有的操作系统内核都用到了C语言,例如: Windows、Linux、macOS 等等。只有学会了C语言,才能更好掌握数据结构、计算机组成原理、操作系统等计算机专业课程。另外,Java、C++、C#、Python、Go等语言都受到了C语言的影响,掌握了C语言,再学习其它高级语言就会容易得多,C语言在众多编程语言中,起到了承上启下的作用。
在人工智能、大数据、物联网持续发展的今天,嵌入式开发愈来愈重要,由于嵌入式开发技术门槛高,嵌入式开发人才缺乏,企业对嵌入式开发工程师需求旺盛。要学习嵌入式开发,必须要掌握C语言,C语言是开发嵌入式程序的基础。