unix|两个语言与一种操作系统间的超时空纠缠:Unix为什么用C而不是C++( 二 )


直到这次 , Unix仍然只能在DEC系统上运行 。 随着更多的操作系统用C语言重写(并扩展了C语言以适应这种情况) , 可移植性也有所提高 。1977年 , 贝尔实验室购买了Interdata 8/32 , 目的是将Unix移植到与PDP-11尽可能不同的计算机上 , 从而使Unix在此过程中更加独立于机器 , 从而实现了汤普森(Thompson)的OS可移植性梦想和里奇 。 所有专用于PDP-11的代码都已从内核中删除并进行了重写 , 以使其易于传输Unix 。 在进行Interdata测试之后 , 他们将Unix移至IBM / 370大型机 。 通过每次试用 , 他们通常了解到有关C , Unix和可移植性的更多信息 。 逐渐地 , Unix被移植到许多其他硬件系统上 , 包括基于Intel 8086的计算机 , UNIVAC 1100等 。
1978年 , Brian Kernighan和Dennis Ritchie出版了第一版的“ The C Programming Language” 。 这本书被C程序员称为“ K&R” , 多年来一直是该语言的非正式规范 , 并成为经典 。
?C ++程式语言
1979年 , Bjarne Stroustrup在贝尔实验室开始从事“带类的C”工作 。Stroustrup创建“带有类的C”的动机源于他为博士学位编写程序的经验 。 论文 。Stroustrup发现Simula具有对大型软件开发非常有帮助的功能 , 但是该语言对于实际使用而言太慢了 , 而BCPL速度很快 , 但是级别太低 , 无法适合大型软件开发 。 在Bell Labs , 他有分析与分布式计算有关的UNIX内核的问题 。 记住他的博士学位根据经验 , Stroustrup开始使用类似于Simula的功能来增强C语言 。 选择C是因为它在1979年通用 , 快速 , 可移植并且被广泛使用 。
Simula是60年代在奥斯陆挪威计算中心开发的 , 实际上是一种语言 , 它引入了对象 , 类 , 继承 , 子类和虚拟过程的概念 。 它被认为是第一种面向对象的编程语言 。 顾名思义 , Simula专为进行仿真而设计(例如 , 在VLSI设计和过程建模中) , 该领域的需求为当今面向对象语言的许多功能提供了框架 。 但是 , Simula的影响通常被低估了 。
回到贝尔实验室 , 在分析UNIX内核时 , Stroustrup开始着手开发一种适当的工具来帮助他 。 他开发了一个称为Cpre的预处理器 , 将类似于Simula的类添加到C中 , 并在1980年对该预处理器进行了改进 , 使其可以支持一个实际项目和Bell Labs中的多个实验 。Cpre可以处理添加的面向对象的功能 , 例如类和派生类 。 在1980年4月至10月的这段时间里 , 他正在考虑将他的“工具”概念转变为一种合适的语言 , 但是“ C with Classes”仍然被认为主要是对C的扩展 , 用于表达模块性和并发性 。
1982年 , 在“软件:实践和经验”中发表了论文“向C语言添加类:语言进化的一种练习” 。 因此 , “具有类的C”被明确设计为允许更好地组织程序 , 而“计算”被认为是C解决的问题 。 发现“具有类的C”可以帮助组织比C更好的大型类程序 , 而无需C 。 运行时效率损失 , 并且没有因语言更改而引起的强烈组织异议 。
对于Stroustrup在那一年也很清楚 , 他希望 , 如果“ C with Classes”可以为足够多的用户服务 , 它将为适当的支持和开发组织付费 , 从而使他腾出空间 。 结果 , 在1983年 , 他开始设计一个经过清理和扩展的“带有类的C”的后继者 , 并使用传统的编译器技术而不是C编译器的预处理器来实现它 。 最初生成的语言最初仍称为“ C with Classes” , 但在Bell Labs管理层的礼貌要求后 , 将其命名为C84 。 之所以命名 , 是因为人们习惯了用“新C”类来称呼C 。 最终 , 名称C84被删除 , Stroustrup在1983年12月选择了C ++ 。 添加的一些新功能包括虚函数 , 函数名称和运算符重载 , 引用 , 常量 , 类型安全的自由存储内存分配(新建/删除) , 改进的类型检查 , 以及带有两个正斜杠(//)的BCPL样式单行注释 。
【unix|两个语言与一种操作系统间的超时空纠缠:Unix为什么用C而不是C++】1985年 , 第一版的《 C ++编程语言》发行 , 由于当时还没有正式的标准 , 因此成为该语言的权威参考 。 同年10月发布了C ++的第一个商业实现 。1989年 , C ++ 2.0发行 , 紧随其后