此文章主要讲C语言的起源。
参考:
- https://www.multicians.org/history.html
- https://web.mit.edu/multics-history/
故事的开始
在1964年,MIT开始了一个预研项目:Multics(Multiplexed Information and Computing Sercive,多路复用信息和计算服务)是大型分时操作系统。该项目有一个宏大的目标,希望可以开发出一个大型主机上运行的操作系统,这个是多用户多任务的分时操作系统。
1965年秋,Multics计划以六篇论文的系列形式提交给当时的秋季联合计算机会议,而此时Multics作为MIT,通用电气与贝尔实验室的联合项目,贝尔实验室的开发人员Ken Thompson参加了这个项目。
目标
Multics这个操作系统,期望包含特性与内容:
- 使用对称多处理,多程序和分页管理所有硬件资源的主管程序
- 硬件支持的创新型分段存储器寻址系统
- 树状文件系统
- 外围设备和终端的设备支持
- 数百种命令程序,包括语言编译器和工具
- 数百个用户可调用的库例程
- 运营和支持工具
- 用户和系统文档
项目最终的目标是以下的输出:
-
方便的远程终端使用
-
连续运行类似于电源和电话服务
-
广泛的系统配置,无需重新组织系统或用户程序即可更改
-
高可靠性的内部文件系统
-
支持选择性信息共享
-
信息的层次结构,用于系统管理和用户活动的分散化
-
支持广泛的应用程序
-
支持多种编程环境和人机界面
-
随着技术和用户愿望的变化而发展系统的能力
Multics的结果
在1969年10月,Multics向付费用于开放,比计划晚了好几年。MIT系统早期有很多受人诟病的地方:崩溃,响应慢,不断更新,与开发人员沟通困难,以及莫名其妙的功能缺失。
该项目基本宣告失败。
UNIX / C的诞生
在进行Multics项目过程中,Ken Thompson开发了一个“星际旅行”(Startravel)的游戏,该游戏运行在Multics上。但是运行速度很慢。
在Multics项目结束后,为了让这个游戏继续运行,Ken Tompson找了一个PDP-7的裸机,用汇编语言写了一个操作系统。
受Multics项目的启发,DennisRitchie 和 KenThompson 在该游戏操作系统的基础上,进一步开发新功能,并最终在1970年开发了多用户,多任务的操作系统,称为UNIX。
C语言,是Dennis Ritchie在1972年开发的,当时Ritchie正在与Ken设计UNIX操作系统。C并不完全是Ritchie构想出来的,它来自于Thompson的B语言。
可以说,C语言是作为从事实际编程工作的程序员的工具而出现的,它的目标是成为有用的语言,与UNIX一起成长。
我的看法
UNIX与C语言的关系,有点像是鸡与蛋的关系。
因为UNIX的存在,C语言被开发出来。C语言的存在,进一步完善了UNIX的工具,也帮助UNIX取得了成功。
很多编译器和解释器都是用C语言编写的,因此C语言是最接近操作系统的高级语言,允许访问硬件,并可以操纵内存中的特定位,成为高效,可移植,灵活的语言。
但是随着硬件性能的逐步提升,软件复杂度的不断提高。C语言在应对复杂问题/模型的时候,也体现出不足。不同的语言,百花齐放,适应不同的场景。
这篇读书笔记探讨了C语言的起源,源于Ken Thompson为Multics项目开发的"星际旅行"游戏,以及后来Dennis Ritchie在开发UNIX操作系统时创建C语言的过程。C语言因其高效、可移植性成为UNIX的理想伙伴,但随着软件复杂度增加,其局限性也逐渐显现。
1819

被折叠的 条评论
为什么被折叠?



