为什么Unix是用C而不是更强大的C++编写的?总有人说C++比C强不了多少,功能多了。那么,为什么Unix不用C而不是用更强大的C++编写呢?为什么Unix是用C而不是C++编写的,显而易见的答案是C++在C之后出现。另一个原因是C语言实际上可能也是为了支持Unix的发展而发明的。C语言的起源与Unix操作系统的发展密切相关。当团队将Unix移植到PDP-11时,它还在组装中。Thompson和Ritchie想要在系统编程中使用一种高级语言,使程序员能够清楚地表达概念,而无需束缚于计算机的体系结构,而是高效的。Unix是使用高级语言实现的,因此打破了系统必须用汇编语言编写并且系统必须与特定计算机设计、字长或体系结构相关联的观念。第一次,整个编程环境,包括文件系统、内核、应用程序包、实用程序和用户界面,都被转移到完全不同类型的机器上。Thompson和Ritchie早在1969年就已经开发出一种名为“B”的编程语言,它本质上是BCPL的简化版本。基本上,BCPL去除了不必要的组件,以实现适合当时小型机的存储能力(BCPL是CPL的简化,本身是Algol60的简化)。Thompson和Rich正在考虑用B语言重写Unix。然而,B无法利用PDP-11的某些特性,尤其是字节寻址能力,导致了“C”编程语言的发展。C的名字只是简单地选择了B之后的下一个字母。C的发展始于1972年的PDP-11Unix系统,它首先出现在Version2Unix中。Unix的很大一部分是用C重写的。Unix开发的反馈对C的开发很有帮助。C语言“融合了一种系统重写,因此非常适合编写系统”。到1973年,随着“struct”类型的加入,C已经变得足够强大,以至于大多数Unix内核现在都使用C。Unix成为首批以非汇编语言实现的操作系统内核之一。Unix在1973年的操作系统原理研讨会上首次被正式介绍给外界,Ritchie和Thompson在会上发表了一篇论文。这导致了对该系统的要求,但根据1956年的和解协议,在解决反托拉斯案时,AT&T(贝尔实验室的母公司)被禁止从事“公共运营商通信服务”以外的任何业务。所以,Unix不能变成产品。贝尔实验室转向以媒体和运输成本运送系统。但在此之前,Unix仍然只能运行在DEC系统上。随着更多的操作系统用C重写(并且C被扩展以适应这一点),可移植性也得到了改善。1977年,贝尔实验室购买了Interdata8/32,目的是将Unix移植到与PDP-11尽可能不同的计算机上,使Unix在这个过程中更加独立于机器,从而实现Thompson的操作系统可靠性。移植梦想。所有PDP-11特定代码都从内核中删除并重写,以使Unix传输变得容易。Interdata测试后,他们将Unix迁移到IBM/370大型机上。通过每次试验,他们对C、Unix和一般可移植性有了更多的了解。渐渐地,Unix被移植到许多其他硬件系统,包括基于Intel8086的计算机、UNIVAC1100等。
