1971年,第一版

伴随着PDP-11/45的出现,系统也在慢慢成长。它慢慢发展出了指令集,子例程和游戏。对你来说了解这些信息的唯一途径是和作者们坐下来提出问题。

Joe Condon在去计算机研究组之前他的小组是PDP-7的拥有者。他回忆起Mike Mahoney,Bob Morris是如何启迪他开始思考Unix的。

因为手册写的并不是很清楚,我会过来问“你是怎么知道这些命令到底做了什么”。Morris说“你觉得怎样才是合理的?那就试着去做,joe”。这让我觉得他和其他一些人(应该也包括Dennis)对一个系统命令应该如何工作的设计哲学很是有趣--它的工作方式应该让人非常容易理解,它不应该包含了许多非常复杂的隐藏规则,以至于超出人们的认知领域。

我觉得Bob Morris告诉我的是黑盒自身应该足够简单,以至于你可以从黑盒的行为上判断黑盒内部是如何工作的。你不应该写一个让人困惑的程序,让人们猜测它到底在做些什么。你应该让他的功能一目了然。

据Ritchie说,是McIlroy抽空写了编程手册。而McIlroy说是Ritchie设计编写了第一个man page。看起来就像是cat--catenate(环状)。Ritchie说他想不起来是谁提出的格式。不管怎么说,起初的设计非常的优秀:我们依然在使用它。Doug McIlroy认为编程手册保持了连续完整。Ritchie做的事情是让风格更加连贯。今天看来man page有些过于简洁,但无论怎么说,他们都比其他操作系统的帮助信息要好很多很多了。

后来贝尔实验室研究部门的领导Sandy (A.G.) Fraser,和Mahoney谈论McIlroy和手册:

现在你可能认为那是一个文书工作,但那时错误的。实际上仅仅是他对于手册保持高标准,就意味着他会对手册中提及的任何程序都坚持高标准。接下来他们做的就如他们所说,为了编写下一版本手册重写了一系列的程序,以让它们保持同样高的标准。另外还要说的是,它可能是第一个包含bug章节的手册,你很难找到其他这么诚实的手册。他们不是简单的写下懒得去修正的bug,实际上它们修正了很多的bug。但有一些不是很简单修正就可以的,或者是不确定应该究竟怎么做,因此把它们写在文档里面。我想这种聪明的诚实是非常少有的。

Doug McIlroy也说到过手册:

把事情理清楚再去谈论正式Unix的特点。每次编写另一个版本的手册,每次写下丑陋的东西,你都会惊慌的说“我们不能把这打印出来”。为了更加容易讨论,你不得不对文档增增减减,这是做科研的美德。你不必保持旧软件的运行。

实际上,当我仔细翻看最早的四版手册(1971年11月到1973年11月),我强烈的感受到每次编写之前都有大量的变更:系统不断趋于完善,文档也反映出来。第一版手册的第二段记录着:“变更的频率是如此之快,以至于每当要写一章是前面的章节都要做大量的修改”。不过不稳定也代表着系统正在不断成长。阅读Thompson写在每一版手册前面的序言尤其能体现这一点。

第一版《UNIX编程手册 K.Thompson D.M.Ritchie著》出版日期是“1971年9月3日”。它以两页半的“简介”开头,然后是只有三页的“目录”。目录分成几节,这些章节包括命令系统调用子例程特殊文件文件格式用户程序,以及其他混杂。这些内容在领域内有着广泛的影响。十五年后的1986年,伯克利版本Unix(4.3BSD)的第七卷手册以同样的章节排列。虽然过了这么多年,这七节之外又有所添加,第六节明显成为游戏章节--起初它包含四个游戏:bj blackjack, chessmoo是一个猜谜游戏,还有ttt tic-tac-toe。这四个游戏和sort(将文件内容按字母排序),cal(输出日历)放在一起。chess尤其重要,因为Ken Thompson是一个专业的象棋选手,十年后他编写的Belle象棋程序获得了世界计算机象棋冠军(当在荷兰谈论Belle,Thompson被问及机器是不是一个人造威胁,他回答“只有从飞机上掉下去才是”)。

1973年有一个已经被提出的文本处理特性是构造交替式索引的能力,每一个项目都有一些列的曝光机会。因为在手册的不同章节中有很多相似的命令名字,标记命令章节是为了避免读者困惑。就像cp(1)意味着第一节的复制命令,dc(1)表示第一节的桌面计算器,而dc(4)则表示第四节中用于远程打印机的特殊文件(这个命令在第6版之后取消了)。cat(1)意味着“连接文件”,而cat(4)则代表“C/A/T 照相排字机接口”。

简介在各方面来说都是很好的文档,因为他给读者一个关键词对照表,就像下面这个:

key

Unix社区为贡献者保留他们个人信息的传统就是从这里开始的。在很多社区这个传统一直保持着,相比之下很多大公司就从文档,初始化界面,登陆页面中隐藏掉了这些名字(例如DEC,HP,IBM,Sun)。Lorinda Cherry评价说着包含的原理非常简单:“谁最后修改了,就属于谁”。并且所有者会被在登陆页列出来,因为他们有电子邮件或者像write这样的交互程序。

第一个版本酒精包含什么?我想最简单的描述就是:非常多。在系统所有的指令中,只有我们后面提到的pipes没有在这提及,在第一节一共有60个用户命令:

commands

这60条命令中,有许多我们仍然非常熟,虽然很少还有纸带阅读机,DEC RK05s,或者IBM 2741s存在。其他一些命令已经失去具体作用或者演变成其他的东西:dsw(delete using switches)被rm(remove)命令包含,db在第7版中成为adbfor在第2版中成为fc,第7版中成为f77。在第5版中lbppt成为restordbppt成为dump。许多命令消失了:dtf在第1版后就取消了,同样的还有huprkdrkfrkl,以及sdate

著名的create创建新文件命令出现在第二节,系统调用章节。Thompson脸上带着笑容回忆说他最大的错误是保留了create的-e选项。

Doug McIlroy告诉我Thompson最大的错误其实是“将Unix全部用大写字母拼写。Unix,Fortran,还有其他的计算机名词都是很好的名字。一张这样的纸比一张全是大写字母的纸更能吸引别人的兴趣”。这段评论导致我在这本书的大部分都用Unix代替了UNIX。就像之前说的,系统一直在持续演变,所以接下来的两年是非常让人兴奋的一段时间。

贝尔实验室Unix版本列表

注意:这是AT&T贝尔实验室十个版本的UNIX编程手册,第十版在1990年发行。从第一版到第六版的标题页都署名Thompson和Ritchie,第七版虽然有一个由B.W.Kernighan和M.D.McIlroy写的简短前言,标题页却只写了UNIXF分时系统而没有署名。第八版第九版的前言是由McIlroy一个人写的,同时在标题页注明了研究版本。第十版的前言署名是“A.G.Hume,M.D.McIlroy,1989年10月”。

第一版 1971,11,03
第二版 1972,06,12
第三版 1973,02
第四版 1973,11
第五版 1974,06
第六版 1975,05
第七版 1979,01
第八版 1985,01
第九版 1986,09
第十版 1989,10

译者注

results matching ""

    No results matching ""