再过两年,C语言将迎来它的 50 岁生日,同样进行周年庆的还有 PL/M和Prolog。不过,C语言至今仍然非常受欢迎,它在几乎所有编程语言中的受欢迎程度,始终排在前十名。
大多数操作系统的内核(包括 Windows,MAC,Linux,IOS 和Android 等)都主要由使用C语言实现。此外,python 的CPython 解释器,perl,ruby,差不多一半的 R 语言,以及 mysql 的MysAm 代码,甚至 java 的第一个编译器都是使用C语言编写的。
C语言和C++打了个平手
C++ 在 C语言的领域中取得一些进展,特别是自从 C++11 中增加了移动语义,如果能够正确使用该语法,在处理指向大对象的指针时,C++能以更小的开销,带来更好的性能,并且C++也能够在传统的嵌入式C语言领域使用。
但是,C++程序代码编译后通常还是会比C语言的大一点,因为C++增加了异常处理,以及内联模板等C语言没有的机制。例如在 Visual C++的release 模式编译下面这段C++代码:
最终得到的 exe 可执行文件的大小达到 10752 字节。再来编译相同功能的 C语言代码:
得到的 exe 可执行文件大小为 9216 字节,只有 C++ 程序的 85%。这里的差别还不是特别大,但是可以肯定的是,使用C++编程时,一旦加入了其他类,它与C语言程序大小的差异会越来越大。
代码大小非常重要,因为物联网(IOT)设备的数量越来越多,微控制器的使用也越来越多,要知道这些微控制器的 RAM 和ROM 通常都是千字节级别的。所以在嵌入式领域,C语言在2005年至2018年期间获得的市场份额实际上是有所提升的。
C语言是编程界的通用语言
就像现实生活中,英语是世界是的通用语言一样,C语言是编程语言界的通用语言。许多其他编程语言编译器输出的其实是 C 语言代码,由C语言编译器进一步生成可执行程序。这不难理解,因为C语言是最低级别的可移植语言。(唯一更低级别的汇编语言与 CPU 紧密相关,不方便移植。)
Github 项目页面上列出了大约 60 个开源编译器,一小部分是 C++ 的,但是C语言占绝对的主导地位。
使用C语言提升效率