编写操作系统最常用的编程语言就是C语言了。用C语言编写的第一个操作系统是 Unix,之后的 GNU/Linux 等操作系统也都是使用C语言编写的。
C语言不仅仅是操作系统语言,也是当今几乎所有流行的高级编程语言的先驱,这些编程语言多多少少都借鉴了C语言的架构和优点。甚至,有些编程语言的编译器(或者解释器)本身就是C语言编写的,例如 Perl、PHP(世界上最好的编程语言)、Python 和 Ruby 等。
所以为什么要学习C语言呢?
对比到人类语言,假设有人要学习西班牙语、意大利语、法语或者罗马尼亚语,你认为他之前学的拉丁语会有所帮助吗?答案是肯定的,因为拉丁语是前面列举的这些语言的基础,或者说来源。
同样的道理,C语言在高级编程语言史上足够年长,它是开发其他高级编程语言的参考,所以,学习了C语言不仅仅能够编写C语言程序,对学习其他编程语言也是帮助极大的,从其他编程语言里,多多少少都能看到C语言的影子。
可以说,如果把学习编程比作小说里的学习武功,那学会了C语言就相当于学会了“九阳神功”,再学习其他编程语言时就如有神助,事半功倍。
为什么不从汇编语言开始呢?
的确,汇编语言可以提供程序效率的最大限度控制,但是汇编程序的可移植性很差,而C语言则提供了程序的可移植性。
不同的处理器是用不同的汇编语言编程的,只学习一种处理器的汇编编程局限性就太大了。事实上,C语言的一个主要优点就是它将通用型和跨各种计算机体系结构的可移植性结合在一起,同时保留了汇编语言提供的绝大部分的硬件控制。
例如,程序员编写的C语言程序,可以在 HP 50G 计算机(ARM 处理器)、TI-89 计算机(68000 处理器)、Palm OS Cobalt智能手机(ARM处理器)、iMac(PowerPC)、Arduino(Atmel AVR)和 Intel iMac(Intel Core 2 Duo)等不同架构的设备上编译和运行。
如果使用汇编语言编写的程序,要想在这些不同架构的设备上运行,那么每一个设备都得单独编写程序,不仅开发困难,后期的维护也会非常难受。