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 可移植性
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
1700437405
在不知道米勒做了什么的情况下,史蒂夫·约翰逊和丹尼斯·里奇将Unix移植到了类似的机器Interdata 8/32上。他们的目标是更具可移植性的Unix版本,而不像原来那样逐个做单一机型移植。他们的版本在1977年晚些时候开始运行。史蒂夫·约翰逊回忆了一些背景。
1700437406
1700437407
“还有一种压力迫使我们让Unix变得可移植。DEC的一些竞争者开始抱怨说,受管制的AT&T与DEC的关系过于融洽。我们指出,市场上没有其他像PDP-11这样的机器,但这种观点越来越没说服力。丹尼斯用一句话就把我勾进了可移植性的工作中:‘我认为,把Unix移到另一种硬件上,比重写在不同的操作系统上运行的应用要容易得多’。从那时起,我就全力以赴了。”
1700437408
1700437409
可移植性是很大的进步。在此之前,操作系统大多用汇编语言编写,即使是用高级语言编写的,也或多或少地被捆绑在特定的架构上。但米勒以及约翰逊和里奇等人完成相关项目后,将Unix移植到其他种类的计算机上虽然仍非易事,但基本可以直接实现。当时新老公司都开始制造比PDP-11和Interdata等微型计算机更小、更便宜,使用不同处理器的计算机。Unix变得可移植,对新兴的工作站市场产生了重大影响。
1700437410
1700437411
工作站是科学家和工程师的个人用机器,提供强大、通常不共享的计算环境。工作站款型很多,其中Sun微系统公司的工作站在商业上最为成功。其他制造商包括硅图(Silicon Graphics)公司、DEC、惠普公司、NeXT,甚至IBM。20世纪80年代初,第一批工作站的指标是1 MB主存储器、100万像素的显示屏和每秒一百万次浮点运算的速度,即所谓的“3M”[7]机器。相比之下,我的老款MacBook有8GB内存,每秒至少能做10亿次浮点运算;它的显示屏也不过百万像素,但像素点是24位彩色的,不是单色的。
1700437412
1700437413
工作站市场之所以出现,是因为技术的改进使人们有可能将强大的计算能力装入尺寸较小的物理包装中,并以适中的价格出售。整个系统的价格能够做到合理,部分原因是包括操作系统在内的软件已经存在。新制造商不需要创造新操作系统——只要将Unix及其附带的程序移植到计算机所用的处理器上就可以了。因此,Unix的出现极大地促进了工作站市场的发展。
1700437414
1700437415
IBM个人计算机(Personal Computer,PC)面世于1981年。PC及许多克隆机的价格通常是工作站的五分之一到十分之一。虽然最初在性能上完全没有竞争力,但它们逐渐改进,到20世纪90年代末就后来居上了。工作站和PC之间的界限最终变得模糊。今天,根据应用领域的不同,计算机上最常运行的是微软Windows、macOS、Unix或类Unix系统。
1700437416
1700437417
[1] 意为“备忘录宏”。——译者注
1700437418
1700437419
[2] 分离不定式(split infinitives)是在不定式(to + verb)中间插入修饰副词的结构,不是一种语法错误。WWB中的gram(grammer的简写)命令能帮助识别误用的冠词和分离不定式。——译者注
[
上一页 ]
[ :1.70043737e+09 ]
[
下一页 ]