【原题】Reflections on Software Research
【译题】对软件研究的反思
【题注】孕育了UNIX项目的贝尔实验室环境是可以再次产生的么?
UNIX1操作系统突然之间变成新闻了,不过它不是新闻。它始自1969年,当 Ken Thompson 发现了一台很少使用的 PDP-7 计算机,并着手鼓捣出一个他喜欢的计算机环境。他的工作很快就吸引了我;我加入到了该事业,关于那件事的大多数想法和大多数工作都要归于他。不久以后,来自AT&T贝尔实验室的我们研究领域组织的其他人开始使用该系统;Joe Ossanna, Doug McIlroy, 和Bob Morris 做出了特别突出的贡献。在1971年,我们搞到了一台PDP-11,而且在该年年末我们就开始支持我们第一个真实用户了:授予专利应用的三个打字员。在1973年,系统用C语言重写了,也是在那一年,系统第一次公开的在操作系统 原理会议(the Operating Systems Principles conference)上被做出描述;结果文献【参见8】就出现在下一年的ACM通讯上了。
————–
旁注1:UNIX是AT&T贝尔实验室的一个商标。
其后,它的使用在贝尔实验室内外稳步增长。一个开发组被建立起来,以支持公司内的项目,而且多个研究版本出于外部使用而被授权。
最近的研究发布是第七版系统,出现在1979年;更近一些,AT&T开始对系统III进行市场化,而且现在提供了系统V,都是开发组的产品。所有的研究版本都是“照原来样子 as is”无支持版本;系统V是一个在数条不同的硬件线上的一个支持版本,最近的是包括了3B系统,由AT&T设计和构造。
UNIX使用广泛,甚而被说成是一种可能的工业标准。它是如何赢得这种声誉的?
实际上当然是其技术优点。由于该系统及其历史已经在文献【参见6,7,11】中得到了一些讨论,我就不会讨论这些问题了,除了一个以外:虽然其经常表面不一致(frequent surface inconsistency),Don Norman 带有色彩的在它的自动化处理数据文献中描述【参见4】,而且也除开它的华美(richness),UNIX 是简单一致的系统,把一些好的观念和模型发展到极致(pushes a few good ideas and models to the limit)。毕竟正是这个角度而言的系统,使得其受到了信徒的钟爱。
除了技术考虑外,也有社会的力量对其成功作了贡献。首先,在一个时期曾显示说替代大型中央化管理计算机中心是可能的;1970年代是微型计算机的时代(the 1970s were the decade of the minicomputer)。小的组织可以建立起来他们自己的计算设施。由于它们再度开始,而且由于制造业的软件顶好也就是无想象力和可怖的,某些人愿意做出的某些在一个“在操作系统上即便是不受支持的,也是新的和迷人的”冒险。
第二点,UNIX 首先是在出现在PDP-11上的,其是出现在1970年代最成功的新的微型机(minicomputers)之一,而且很快的,许多新出现的机器也带有这个便携性特点(soon its portability brought it to many new machines as they appeared)。在UNIX产生的时候,我们都努力争取一台机器,要么是一台 DEC PDP-IO或者是 SDS (就是后来的 Xerox)Sigma 7。在回顾中,确定的一点是,假设我们成功的得到了这样一台机器,UNIX 也可能写出来,不过会渐渐的消失。类似的,UNIX 有太多要归功于 Multics 【参见5】,就如我在【参见6,7】中的描述的“它夺走了太多其父母的光环,这是因为它不需要不寻常的硬件支持,其它品质亦如此”。
最后,UNIX 享受了一个不同寻常长的孕育期。在孕育期的大多数时间中(指1969到1979),该系统基于其设计者们的控制和他们的使用很是有效。发展所有这些观念和软件是花费时间的,但是即便是系统仍旧在开发中,人们就在贝尔实验室内外使用它了。因此,当有一个基于热心的和懂行的用户在一种平静的,交流的和非竞争环境中贡献观念时,我们试图捏紧核心观念。有些来自外部的贡献很多,比如来自于加大伯克利分校(the University of California at Berkeley)。我们的用户很广泛,虽然稀疏了点,分布在公司,大学,以及一些商业和政府组织中。由于其早期用户的这个网络,系统在智力的市场(intellectual marketplace )上,如果还不是在商业的市场(commercial marketplace)上,就变得重要了。
工业界科学研究是由什么组成的?有些人有印象说最初 的UNIX 工作是一个打擦边球性质的项目(a bootleg project),一个科研重地(skunk works)。并非如此。研究工作者被支持以发现或者发明新事物,而且不足的硬件贯穿了整个早期工作,我们不得不鼓起信心。与此同时,它肯定不像是一个开发项目。我们的目标是给我们自己创造出一个适宜的计算机环境,而且我们也希望其他人会喜欢。贝尔实验室的计算机科学实验中心里,我和Thompson 在三个大领域中做研究:理论;数值分析;系统语言和软件。尽管是出于自身目的去工作的,比方说,在一份学术性期刊中发表的一片文章,不仅仅是接纳了而且受到了欢迎,有强烈但完美微妙的压力去使我们思考某种程度上和我们公司相关的那些问题(there is strong though wonderfully subtle pressure to think about problems somehow relevant to our corporation)。自从我加入贝尔实验室后即是如此,已经有15年了,而且不应该感到奇怪:老的贝尔系统看上去已经有一个受保护的专利(a sheltered monopoly),但研究要以自己的方式去做(but research has always had to pay its way)。实际上,研究者喜欢找问题并因对之(researchers love to find problems to work on);在一个大公司搞研究的一个优势就是“会出现庞大范围的迷(the enormous range of the puzzles that turn up)”。比方说,理论家可以对编译器设计作了贡献,或者对 LSI 算法;数值分析研半导体中的电荷和电流分布(charge and current distribution);而且当然了,软件类型倾向于为人们的使用而设计系统和写程序。因此,贝尔实验室的计算机研究总是对世界有一个重要的承诺(a considerable commitment),不担心要求我们实用的命令(does not fear edicts commanding us to be practical)。
对我们有些人而言,实际上,一个实际的挫折是,无力去使别人信服说我们的研究产品会是实实在在的有用的。某些人可能发明一个新应用,写一个解说性程序,把它放到我们自己的实验室来用。许多这样的展示需要进一步的开发以及持续的支持以使得公司可以最好的利用这些新应用。在过去,这种使用可能是排他的仅仅在贝尔系统内部实用(exclusively inside the Bell System);更近期是有了为直接销售而开发一个产品的可能性( developing a product for direct sale)。
比如,某些年以前,Mike Lesk开发了一个自动目录辅助系统(automated directory-assistance system )【参见3】。程序有一个在线贝尔实验室电话本,并连接到了一条电话线上的带有语音解码器的一个语音合成器(was connected to a voice synthesizer on a telephone line with a tone decoder)。某人拨入该系统,在电话的键座上(key pad)键入姓名和位置码;返回该人的电话号码和办公地址(它不会试图对这个名字发音)。虽然对十二个按钮进行了哈希(In spite of the hashing through twelve buttons)(比如,ABC同时按下),它是精确可接受的:它会在5%的试错情况下放弃(it had to give up on around 5 percent of the tries)。这个程序引起了本地的轰动(a local hit)而且得到了良好的使用。不幸的是,我们发现没人能接手,即便是公司内部的维护服务,更不要说让公众提供了,而且它过度的耗用了我们的资源,所以最终这个电话拨入的新应用就被废弃了。(我之所以选择这个例子不仅仅是因为它足够的老以至于不会有雷同之嫌,也因为这个例子是很遇时的:公布了公司电话目录的组织最近询问我们这个系统是不是可以再用起来。)
当然不是每一个观念都值得发展和支持的。在任何事上,世界处于改变之中:我们的观念和建议被较之以前热心的多的在寻找。这种寻找增加的影响持续了好多年,部分是由于UNIX的成功,但是,更近期,是由于我们公司的剧烈结构变更。
AT&T 在1984年初放弃了它的电话操作公司。这引来了许多公众的关注说“这对贝尔实验室中的基础研究意味着什么(what this will mean for fundamental research at Bell Laboratories)”;《科学》【参见2】的一份报告就是典型。有时候表达出来的一个担心就是总体而言的基础研究可能会失去活力,因为其会对新的更小的 AT&T 导致不足的短平快项目(may languish because it yields insufficient short-term gains to the new, smaller AT&T)。要再次建立起公司的公众地位(The public position of the company is reassuring);此外,在贝尔实验的研究管理看上去深深的相信,而且有雄辩的证据说,支持基础研究的承诺是深刻的并将继续下去【参见1】。
在贝尔实验室的基础研究 如物理和化学以及数学可能实际上没有什么影响;然而,他可能需要面对的危险,而且它必需准备好应诉(the case against which it must be prepared to argue),是和公司目标不相关的那些东西。计算机科学研究和这些更传统的学科不同。哲学上计算机科学不同于物理学,因为计算机科学所寻求的不是去发现,去解释,或者开发自然界,而是对人类创造的机器的属性作研究(Philosophically it differs from the physical sciences because it seeks not to discover, explain, or exploit the natural world, but instead to study the properties of machines of human creation)。在这点上计算机科学和数学很像,而且也确实是计算机科学的“科学部分”之所在,对大多数部分,数学是灵魂(mathe matical in spirit)。但是计算机科学不可避免的一个角度是计算机程序的产生(the creation of computer programs):尽管是没有形状的,却是从属于商业交换的那种对象。
更甚于其它事物,对今日的好的计算机科学研究最大的危险可能是“关系太复杂(excessive relevance)”。对计算机在世界范围内激起的魅力之证据是随处可见,“从来自经济文献,甚至可能是新闻首页,到甚至是最著名的大学都经历过的对计算机科学教员之难求和保留”。最好的教授,不是去教育聪明的学生,而是加入了初创公司,而且常常发现他们最聪明的学生已近跑到他们前面去了。计算机科学处于重人注目之下,特别是那些“比如系统,语言,以及机器体系架构”可以很快有商业应用的方面。这种关注是“谄媚的(flattering)”,但却会损害好的研究。
随着在特定领域内的研究强度的加深,对这种结果保密的冲动也加强了。即便在大学中也如此(Watson对发现DNA结构的解释【参见12】提供了一个很好的例子),尽管在学术界有一股很强的反压力(although in academia there is a strong counterpressure):除非发表了,否则完全不知道其存在(Unless one publishes, one never becomes known at all)。在工业界,一个自然建立起来的冲动就是保卫专利信息。研究者对他/她们何时可以发表合物的合理限制有所理解,但是如果阻止研究人员将发现发明以适当的规矩进行交流的话,那他/她们会被激怒并用走人(become irritated and flee elsewhere),或者开始在一个不那么繁复的环境下工作,贝尔实验是的研究管理传统上就敏感于维持介于公司利益和和工业同价的学术自由之间的(between company interests and the industrial equivalent of academic freedom)谨慎平衡 。AT&T进入到计算机工业将会测,可能是破坏了(strain),这种平衡。
另外一个问题是这种或那种商业上的压力了会使最好的思考者从真正的创新(real innovation )转移到对当前时髦的迎合(exploitation of the current fad),从探矿变作挖掘已知的矿脉(from prospecting to mining a known lode)。这些压力不仅仅是在“教员消失到工业界里头”展示了它们自身,也在“被给定观念中付出良多的对智力或者金融的投资所赶超(overtakes those with well-paying investments ——intellectual or financial—— in a given idea)”的保守性中展示了自身。可能这个效用解释了为“何来自大计算机公司有趣的软件系统如此之少(why so few interesting software systems have come from the large computer companies)”;他们已经上船了(they are locked into the existing world)。即便是IBM,其支持一个被广泛视为是多产的研究环境,最近几年中的对人们认为的电脑之表现泛善可呈(has in recent years produced little to cause even a minor revolution )。新的重要工作例子看上去不是来自公司的努力(Visicalc 是一个好的例子)就是来自像贝尔实验室以及最特别的,“很深的涉及到计算机并且可以提供对它们的研究”Xerox,但是它们不把其看作是首要的业务。
另一方面,在小点的公司中,即便是最有精力研究支持也是高度依赖于市场条件的。纽约时报,在一篇描述 Alan Kay从Atari 到 Apple 的文章中,注意到了这个问题:“Kay 先生 … 说Atari的实验室失去了某些创新的空气,这种空气曾经吸引了业界中某些最顶尖的人才 ”。“当我上个月离开的时候,很明显他们在短期做出了努力”他说到“我猜研究之树必需有新鲜血液让其时时长新(I guess the tree of research must from time to time by refreshed with the blood of bean counters.)”【参见9】。
部分是由于它们是新的且仍旧未成熟的,而且部分是由于它们是“智力的,和通常在物理学和工程学中把介于“基础发现,高级开发和应用”之间的链条缩短的‘艺术的和科学的’软件” 的产物。软件应该如何工作这个观念的发明人发现说,去构建演示系统是有必要的(necessary to build demonstration systems)。对大系统以及观念的革新需要许多时日:可以说UNIX 是在70年代写的,以选出60年代最好的系统观念(the best systems ideas),从而可以在80年代成为司空见惯的东西。在Xerox PARC 中的对个人电脑、位图和编程环境的工作【参见10】显示了相似的进展,而且开始在稍后几年中得到了回馈。研究者和管理者都需要时间,对一个有长远价值的承诺的时间。
贝尔实验室提供了这种承诺还有更多:给我和我的同事一个稀有和独一无二的仿真研究环境。当其进入公司公开所宣称的“新竞争领域 (the new competitive era)”,其管理者和员工会留心UNIX 系统如何以及在什么情况下能够成功。如果我们保持活跃,能对新观念足够开放,对交流足够自由,对新奇到繁盛足够耐心,那么未来, Ken Thompson 发现一台很少用的 CRAY/I并且 鼓捣出一个和UNIX一样有创造力和流行的系统,就还是可能的。
索引(REFERENCES)
1. Bell Labs: New order augurs well. Nature 305, 5933 (Sept. 29, 1983).
2. Bell Labs on the brink. Science 221 (Sept. 23, 1983).
3. Lesk, M. E. User-activated BTL directory assistance. Bell Laboratories
internal memorandum (1972).
4. Norman, D. A. The truth about UNIX. Datamation 27, 12 (1981).
5. Organick, E. I. The Multics System. MIT Press, Cambridge, MA, 1972.
6. Ritchie, D. M. UNIX time-sharing system: A retrospective. Bell Syst.
Tech. J. 57, 6 (1978), 1947-1969.
7. Ritchie, D. M. The evolution of the UNIX time-sharing system. In
Language Design and Programming Methodology, Jeffrey M. Tobias, ed.,
Springer-Verlag, New York, (1980).
8. Ritchie, D. M. and Thompson k.
UNIX分时系统
Commun. ACM 17, 7 (July 1974), 365-375.
9. Sanger, D. E. Key Atari scientist switches to Apple. The New York
Times 133, 46, 033 (May 3, 1984).
10. Thacker, C. P, et el. Alto, a personal computer. Xerox PARC Technical
Report CSL-79-11.
11. Thompson, K. UNIX time-sharing system: UNIX implementation.
Bell Syst. Tech. J. 57, 6 (1978}, 1931-1946.
12. Watson, J. D. The Double Helix: A Personal Account of the Discovery of
the Structure of DNA. Atheneum Publishers, New York (1968}.
(完)