1700437345
UNIX传奇:历史与回忆 6.4 约翰·莱昂斯的评注
1700437346
1700437347
悉尼新南威尔士大学计算机科学教授约翰·莱昂斯(图6-3)是Unix的早期拥趸,在他的操作系统课程以及教育和研究支持中大量使用Unix。
1700437348
1700437349
1700437350
1700437351
1700437352
图6-3 约翰·莱昂斯 (UNSW供图)
1700437353
1700437354
1977年,约翰为第6版源代码逐行写了评注。源代码的每一部分都被详细解释,人们可以看清它如何工作,为什么是这样的,以及如何以不同方式完成工作。约翰桃李成林,其中有几个进了贝尔实验室。
1700437355
1700437356
初印本《评注》(Commentary)分作两卷,一本是代码,另一本是论述,可以对照阅读,不过1996年最终出现的审定版(图6-4)是单卷本。
1700437357
1700437358
虽然这本书可以在Unix许可持有人之间共享,但从技术上讲,其内容是商业秘密,因为它包含了AT&T的专有源代码。至少在理论上,复制受到严格控制;我现在还保留着我的带编号副本(#135)。不过,它在早期被大量复制。图6-4所示的封面上的地下出版物画像表明,这种复制是秘密进行的。几年后,米已成炊,约翰的书也正式出版了。
1700437359
1700437360
1700437361
1700437362
1700437363
图6-4 约翰·莱昂斯对第6版Unix的评注
1700437364
1700437365
1978年,约翰在墨里山度过了一个休假年,坐在我对面办公室。那间办公室后来属于丹尼斯·里奇。约翰于1998年去世,享年62岁。新南威尔士大学计算机科学系专设了一个教席来纪念他的贡献。这个教席的资金来自校友和朋友们的捐赠。为此,1998年泰德·杜洛塔拍卖了他的加利福尼亚州UNIX车牌,由约翰·马希拍得。
1700437366
1700437367
拜《评注》所赐,Unix源码中的一条注释出了大名。第2 238行写着
1700437368
1700437369
/* You are not expected to understand this. */[6]
1700437370
1700437371
1700437372
1700437373
1700437374
1700437375
如前所述,丹尼斯于2011年10月去世。次年,在贝尔实验室的纪念聚会上,我以这句话为主题发表讲话,悼念丹尼斯。
1700437376
1700437377
Unix内核代码由丹尼斯和肯·汤普森共同编写。据我所知,肯一直完全赞同这样的观点:好代码不需要过多注释。以此类推,伟大的代码根本不需要注释。我认为内核代码中的大部分注释都来自丹尼斯。你可以在第2 238行找到上述注释。它以干脆利落著称。多年以来,它被大量印刷在T恤衫之类地方。正如丹尼斯本人所说:
1700437378
1700437379
“人们经常引用它来抨击贝尔实验室科研版Unix注释的数量或质量。一般来说这样的推断大概不算过分,但就Unix而言纯属无理取闹。”
1700437380
1700437381
仔细阅读代码,你可以看到,这条注释紧跟在一条更长的注释后面。那条长注释描述了在两个进程之间交换控制权的上下文切换机制,它确实是想解释一些难以理解的事情。丹尼斯接着说,
1700437382
1700437383
“‘不指望你懂’是本着‘这个不会考’的初衷说的,并非无礼挑衅。”
1700437384
1700437385
我在前面提到,Nroff和Troff不易精通。《评注》致谢部分的最后一段表明,约翰会同意这一点:
1700437386
1700437387
“必须提及Nroff程序的协助。没有它,本书永远不可能以这种形式出现。然而,它如此不情愿地交出了其不传之秘,以至于作者的感激之情确实是五味杂陈。当然,Nroff本身必须为未来的程序文档艺术实践者提供一块沃土。”
1700437388
1700437389
1700437390
1700437391
1700437393
UNIX传奇:历史与回忆 6.5 可移植性
[
上一页 ]
[ :1.700437344e+09 ]
[
下一页 ]