读书笔记 《C Primer Plus》(4-C语言与UNIX)

这篇读书笔记探讨了C语言的起源,源于Ken Thompson为Multics项目开发的"星际旅行"游戏,以及后来Dennis Ritchie在开发UNIX操作系统时创建C语言的过程。C语言因其高效、可移植性成为UNIX的理想伙伴,但随着软件复杂度增加,其局限性也逐渐显现。

此文章主要讲C语言的起源。

参考:

  1. https://www.multicians.org/history.html
  2. https://web.mit.edu/multics-history/

故事的开始

在1964年,MIT开始了一个预研项目:Multics(Multiplexed Information and Computing Sercive,多路复用信息和计算服务)是大型分时操作系统。该项目有一个宏大的目标,希望可以开发出一个大型主机上运行的操作系统,这个是多用户多任务的分时操作系统。

1965年秋,Multics计划以六篇论文的系列形式提交给当时的秋季联合计算机会议,而此时Multics作为MIT,通用电气与贝尔实验室的联合项目,贝尔实验室的开发人员Ken Thompson参加了这个项目。

目标

Multics这个操作系统,期望包含特性与内容:

  1. 使用对称多处理,多程序和分页管理所有硬件资源的主管程序
  2. 硬件支持的创新型分段存储器寻址系统
  3. 树状文件系统
  4. 外围设备和终端的设备支持
  5. 数百种命令程序,包括语言编译器和工具
  6. 数百个用户可调用的库例程
  7. 运营和支持工具
  8. 用户和系统文档

项目最终的目标是以下的输出:

  • 方便的远程终端使用

  • 连续运行类似于电源和电话服务

  • 广泛的系统配置,无需重新组织系统或用户程序即可更改

  • 高可靠性的内部文件系统

  • 支持选择性信息共享

  • 信息的层次结构,用于系统管理和用户活动的分散化

  • 支持广泛的应用程序

  • 支持多种编程环境和人机界面

  • 随着技术和用户愿望的变化而发展系统的能力

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语言在应对复杂问题/模型的时候,也体现出不足。不同的语言,百花齐放,适应不同的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值