打字猴:1.700437355e+09
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
1700437392 UNIX传奇:历史与回忆 [:1700434710]
1700437393 UNIX传奇:历史与回忆 6.5 可移植性
1700437394
1700437395
1700437396
1700437397
1700437398
1700437399
1700437400
1700437401 第6版Unix主要用C语言编写,也使用了有限的汇编语言来辅助实现诸如设置寄存器、内存映射等访问硬件的功能。同时,史蒂夫·约翰逊还创建了新版本的C语言编译器,这个版本具有“可移植性”,即可以直接重新针对PDP-11以外的架构生成汇编语言。这样一来,只需要重新编译C语言程序就可以把它们迁移到其他类型的计算机上。最有趣的移植程序显然是操作系统本身。这是否可行呢?
1700437402
1700437403 Unix的第一次移植由理查德·米勒(Richard Miller)在澳大利亚新南威尔士的伍伦贡大学完成,目标计算机是Interdata 7/32。米勒没有使用可移植版C语言编译器,而是修改丹尼斯·里奇的原始C语言编译器代码生成器,将Unix移植到Interdata。他的Unix版本在1977年4月就已经开始工作并能自给自足了。
1700437404
[ 上一页 ]  [ :1.700437355e+09 ]  [ 下一页 ]