1700437270
1700437271
AT&T大部分运营支持系统都运行在IBM和Univac的大型主机上,这些主机有自己的专属操作系统,如IBM的OS/360。PWB提供了创建和管理这些计算机上运行的软件的能力。实际上,PWB Unix为各类大型非Unix计算机系统提供了统一的前端,主机被视为外围设备。
1700437272
1700437273
远程作业是PWB的主要服务之一。有一套命令用于向目标系统发送操作队列、状态报告、通知、日志和错误恢复等作业要求并返回结果。远程作业遵循Unix小工具使用方法,即以各种方式连接这些工具,封装成shell脚本,以方便非专业人员使用。
1700437274
1700437275
为了支持这种编程方式,约翰·马希(图6-1)改进第6版shell,创建了PWB shell。PWB shell拥有更强的编程能力,包括用于决策的if-then-else,用于循环的while,以及用于存储文本的shell变量。他还发明了一种路径搜索机制,通过设置特定shell变量,任何用户都可以指定一系列目录,系统会在这些目录中搜索命令。有了搜索路径,用户就能很容易地在项目目录中放置程序,而不必在系统目录中安装命令,因为他们可能根本没有系统目录的写权限。正如约翰所说,
1700437276
1700437277
1700437278
1700437279
1700437280
图6-1 约翰·马希,约2011年(Twitter)
1700437281
1700437282
“我们有一大批(1 000多)用户,他们不是那种在共享环境下分组工作的C语言程序员。他们希望与实验室、部门和小组共享自己的一套命令。他们经常与其他人共享系统,没谁是超级用户。”
1700437283
1700437284
约翰还添加了一种判断机制:如果文件被标记为可执行,那么它就会被当作常规命令执行;如果是脚本,则会被传递给shell。所有这些功能在1975年初就已经到位,接下来的一年里,随着越来越多的人开始使用PWB shell,功能不断完善。约翰的论文“Using a Command Language as a High-Level Programming Language”(将命令语言作为高级编程语言使用)阐述了使用1 700多个shell例程的经验:
1700437285
1700437286
“大型项目往往伴随大量编程苦差。PWB用户拿shell当编程语言来用,已经能够免除大部分苦差。许多手动操作被快速、廉价、方便地自动化了。由于shell程序非常容易创建和使用,每个项目都倾向于将通用PWB环境定制成适合自己需求、组织结构和术语体系的环境。”
1700437287
1700437288
正如上一章所指出的那样,约翰的改进很快融入了史蒂夫·伯恩写的shell中。
1700437289
1700437290
还有个重要的PWB产品是马克·罗奇金德1972年编写的源代码控制系统(Source Code Control System,SCCS)。SCCS是首个用于管理多用户大型代码库的程序。
1700437291
1700437292
SCCS的基本思想是,程序员签出代码库中的一部分,锁定这部分代码,其他程序员在锁持有者解锁之前不能修改它,这样就避免了多位程序员同时对代码做出不一致的修改。当然还是会出问题,如粗心大意或程序崩溃都可能会导致代码死锁。另外,如果锁定范围太大,就会拖慢同时修改的速度。不过,源代码控制的概念对于涉及多人在同一代码库上工作的软件开发来说至关重要。今天,随着更大的代码库分布在更大的开发者社区中,地理上更加分散,这个概念就更加重要了。从SCCS到RCS、CVS和Subversion,再到今天默认的标准版本控制系统Git,有一条清晰的演化路径。
1700437293
1700437294
马克·罗奇金德还发明了将正则表达式转换为C语言程序的工具。转换出来的程序可以扫描日志,寻找模式匹配,并在发现匹配时输出信息。这想法非常巧妙,阿尔·阿霍、彼得·温伯格和我把它“偷”过来,改成通用版本,应用到awk使用的模式-动作模型中。
1700437295
1700437296
PWB还包括一套名为“作家工作台”(Writer’s Workbench,WWB)的工具,目标是帮助人们更好地写作。约翰·马希和戴尔·史密斯(Dale Smith)在泰德·杜洛塔(Ted Dolotta)的鼓励下,创建了一组通用Troff命令,即Memorandum Macro[1]或mm包,在AT&T内部和外部广泛用于制作文档。
1700437297
1700437298
此外,WWB还提供了拼写检查器,以及用于查找标点符号错误、分离不定式[2]和单词重复(通常是笔误)的多个程序。还有一些工具用于检查语法和风格,以及评估可读性。核心组件是由洛琳达·彻丽编写的parts程序,它能对文本做词类统计。虽然不尽完善,但它可以统计出形容词、复合从句等结构的出现频率。WWB是在20世纪70年代末开发的,当时作家们正开始更频繁地使用计算机写作。WWB获得了媒体青睐,它的两位创造者洛琳达和尼娜·麦克唐纳(Nina McDonald)还受邀在美国全国广播公司(National Broadcasting Company,NBC)电视节目《今日秀》[3]中亮相,与全国观众见面。
1700437299
1700437300
1978年,泰德·杜洛塔和马希撰写论文,介绍了支持超过一千名用户的PWB开发环境[4],借以说明计算硬件如何随时间推移变得更便宜、更强大。“以各种衡量标准而言,它都是世界上已知的最大Unix装置。”它运行在由7台PDP-11组成的网络上,共拥有3.3 MB主存储器和20 MB磁盘。这大概是今天一台典型的笔记本式计算机的千分之一容量。你的笔记本式计算机能支持一百万用户吗?
1700437301
1700437302
1700437303
1700437304
1700437306
UNIX传奇:历史与回忆 6.2 高校授权
1700437307
1700437308
1973年,AT&T开始向高校发放Unix许可,只收取象征性的费用,不过大多数许可都针对1975年推出的第6版。也卖出一些第6版商业许可,索价高达2万美元,大概等于今时今日的10万美元。许可包括所有源代码,但不提供任何支持。
1700437309
1700437310
加利福尼亚大学伯克利分校是最活跃的许可获得者之一,该校的一些研究生对系统做出了重大贡献,最终演化出伯克利软件发行版(Berkeley Software Distribution,BSD)。BSD是由最初的科研版Unix演变而来的两个主要分支之一。
1700437311
1700437312
1975年和1976年,肯·汤普森在伯克利度过了一个休假年,教授操作系统课程。有个叫比尔·乔伊(Bill Joy)的研究生(图6-2)修改Unix的本地版本,添加了一些自己的程序,包括vi文本编辑器(现在仍然是最流行的Unix编辑器之一)和csh(C语言shell)。比尔后来为Unix设计了至今仍在使用的TCP/IP网络接口。有了他的socket接口,就能用与文件和设备I/O相同的读写系统调用来读写网络连接,因此很容易添加网络功能。
1700437313
1700437314
1700437315
1700437316
1700437317
图6-2 比尔·乔伊,约1980年(比尔·乔伊供图)
1700437318
1700437319
20世纪70年代中后期,比尔时不时会到访贝尔实验室。我记得有一天晚上,他向我展示了他正在研发的新文本编辑器。当时,视频显示终端已经取代了像Teletypes这样的纸质终端,能够实现更加互动的编辑风格。
[
上一页 ]
[ :1.70043727e+09 ]
[
下一页 ]