1700437255
在1127中心的实验室里待了几年后,Unix开始往贝尔实验室内部和外部传播。外部传播主要途径是高校。根据商业秘密协议,高校支付象征性的“媒介费”即可获得整个系统的源代码。这绝对不是“开放源码”:系统只能用于教育目的,被许可人只能与其他被许可的用户讨论经验和Unix用途。然而,社区迅速发展,用户群体在世界各地涌现,并发生了重大技术革新,例如将系统移植到不同类型的硬件上,以及增加访问互联网的新机制。
1700437256
1700437257
请记住,本章所述的许多活动与前一章提及的活动同时进行,甚至在前一章提及的活动之前数年就已发生。这可能会让时间顺序看起来有点乱。
1700437258
1700437259
1700437260
1700437261
1700437263
UNIX传奇:历史与回忆 6.1 程序员工作台
1700437264
1700437265
贝尔实验室的专利部门是科研中心之外的第一个“客户”,但其他团体也发现Unix很有用。系统很早就开始传播到贝尔实验室的开发部门和AT&T的其他机构。
1700437266
1700437267
AT&T公司拥有100多万名员工,是一家非常大的公司。AT&T运行许多计算机系统,用于管理支持电话服务的数据和操作。这些系统为AT&T提供了技术人员接口和支持能力,跟踪设备和客户、监控现场系统、记录事件、排除故障等,统称为业务支持系统。
1700437268
1700437269
距离墨里山大约25千米的新泽西州皮斯卡特维的一个小团队是科研中心以外首批主要Unix用户之一,他们从1973年开始研发程序员开发工具,服务那些为大规模生产环境开发软件的程序员。他们研发的工具包后来被称为程序员工作台,或谓PWB。
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
[
上一页 ]
[ :1.700437255e+09 ]
[
下一页 ]