为什么Unix不用功能更强大的C++而是用C编写
有人总会说C++不是要比C的作用大很多,功能也更多。那为什么Unix不用功能更强大的C++而是用C编写?关于Unix为什么用C而不是C ++编写的显而易见的答案是C ++是在C之后诞生的。另一个原因是,实际上C语言可能也是为了支持Unix的开发而发明的。
C的起源与Unix OS的开发紧密相关。当团队将Unix移植到PDP-11时,它仍在组装中。汤普森(Thompson)和里奇(Ritchie)希望在系统编程中使用高级语言,以使程序员可以清晰地表达概念,而不必与一台计算机的体系结构绑定,但要使效率很高。Unix使用高级语言实现,因此打破了这样一种观念,即必须使用汇编语言来编写系统,并且该系统必须与特定的计算机设计,字长或体系结构相关联。并且首次将包括文件系统,内核,应用程序包,实用程序和用户界面在内的整个编程环境移至完全不同类型的机器上。
汤普森(Thompson)和里奇(Ritchie)早在1969年就已经开发了一种称为“ B”的编程语言,它实质上是BCPL的简化版本。基本上,BCPL去除了不必要的组件,以使实现适合当时的小型计算机的存储能力(BCPL是CPL的简化,其本身是Algol 60的简化)。汤普森和里奇正在考虑使用B语言重写Unix。但是,B无法利用PDP-11的某些功能,尤其是字节寻址能力,导致了“ C”编程语言的发展。C的名称被简单地选择为B之后的下一个字母。
C的开发始于1972年的PDP-11 Unix系统,最早出现在Version 2 Unix中。Unix的很大一部分都用C重写了。来自Unix开发的反馈对C语言的开发很有帮助。C语言“与系统重写之一融合在一起,因此,它非常适合编写系统”。到1973年,由于增加了“结构”类型,C语言已经变得足够强大,以至于现在大多数Unix内核都使用C语言。Unix成为第一个使用非汇编语言实现的OS内核之一。
Unix最初是在1973年操作系统原理专题讨论会上正式向外界介绍的,Ritchie和Thompson在那里发表了一篇论文。这导致了对系统的要求,但是根据1956年的和解协议,在解决反托拉斯案件中,AT&T(贝尔实验室的母公司)被禁止从事除“公共运营商通信服务”之外的任何业务。因此,Unix无法变成产品。贝尔实验室转而以媒体和运输成本来运送系统。
但是在此之前,Unix仍然只能在DEC系统上运行。随着更多的操作系统用C语言重写(并扩展了C语言以适应这种情况),可移植性也有所提高。1977年,贝尔实验室购买了Interdata 8/32,其目的是将Unix移植到与PDP-11尽可能不同的计算机上,从而使Unix在此过程中更加独立于机器,从而实现了汤普森的OS可移植性梦想。所有专用于PDP-11的代码都已从内核中删除并进行了重写,以使Unix的传输变得容易。在进行Interdata测试之后,他们将Unix移至IBM / 370大型机。通过每次试用,他们了解了有关C,Unix和一般可移植性的更多信息。逐渐地,Unix被移植到许多其他硬件系统上,包括基于Intel 8086的计算机,UNIVAC 1100等。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十