Bell Labs 中曾存在培養 UNIX 專案的環境,這種環境能否再次重現?
The UNIX operating system 最近成為新聞焦點,但它並非新事物。它始於 1969 年,當時 Ken Thompson 發現了一台鮮少使用的 PDP-7 電腦,並著手建立一個他喜歡的計算環境。他的工作很快吸引了我;我加入了這項事業,儘管大部分的想法和工作都源自於他。不久之後,我們 AT&T Bell Laboratories 研究領域的其他人也開始使用這個系統;Joe Ossanna、Doug McIlroy 和 Bob Morris 是特別熱心的評論者和貢獻者。到了 1971 年,我們購得了一台 PDP-11,並在該年底開始支援我們第一批真正的使用者:三位輸入專利申請的打字員。1973 年,該系統用 C language 重寫,同年,它首次在 Operating Systems Principles 會議上公開發表;相關論文 [8] 於次年發表在 Communications of the ACM 上。
此後,其使用量穩步增長,無論是 Bell Laboratories 內部還是外部。內部成立了一個開發團隊以支援公司內的專案,同時也授權了幾個研究版本供外部使用。最後一個研究版本是 1979 年發行的第七版系統;最近,AT&T 開始銷售 System III,現在則提供 System V,這兩者都是開發團隊的產品。所有研究版本均為「按原樣」提供,不提供支援;UNIX 是 AT&T Bell Laboratories 的註冊商標。
System V 是在多種不同硬體線路上受支援的產品,最近更包括了 AT&T 設計和建造的 3B 系統。
UNIX 廣泛使用,現在甚至被視為可能的業界標準。它是如何成功的?
UNIX 成功的因素
當然,它的技術優點是其中之一。由於該系統及其歷史已在文獻 [6, 7, 11] 中進行了相當詳盡的討論,我將不談論這些特質,除了其中一個:儘管其表面常有不一致之處(Doug Norman 在他的 Datamation 文章 [4] 中對此有生動的描述),儘管它功能豐富,UNIX 卻是一個簡單、連貫的系統,將幾個好的想法和模型推向極致。正是系統的這一面向,最重要的是,使其受到擁護者的喜愛。
除了技術考量外,還有社會學因素促成了它的成功。首先,它出現時,大型、集中管理的計算中心之外的替代方案正變得可行;1970 年代是小型電腦 (minicomputer) 的十年。小型團隊可以建立自己的計算設施。由於他們是從頭開始,且製造商的軟體充其量只是缺乏想像力,而且往往很糟糕,一些勇於冒險的人願意冒險嘗試一個新的、有趣的、即使不受支援的作業系統。
其次,UNIX 最初可在 PDP-11 上使用,這是 1970 年代出現的最成功的新型小型電腦之一,而且很快其可移植性使其能夠隨著新機器的出現而移植到許多新機器上。在 UNIX 創建時,我們正努力爭取一台機器,無論是 DEC PDP-10 或 SDS (後來成為 Xerox) Sigma 7。回想起來,可以肯定的是,如果我們成功獲得了這樣一台機器,UNIX 也許會被寫出來,但可能會逐漸消失。同樣,UNIX 很大程度上歸功於 Multics [5],正如我所描述的 [6, 7],它之所以超越其母體,很大程度上是因為它不需要非比尋常的硬體支援,而非任何其他特質。
最後,UNIX 享有異常長的醞釀期。在這段時期的大部分時間(例如 1969-1979 年),該系統實際上由其設計者控制並由他們使用。這需要時間來發展所有的想法和軟體,但即使系統仍在開發中,人們卻在使用它,無論是在 Bell Labs 內部還是在授權下外部使用。因此,我們設法將核心想法掌握在手中,同時累積了一批熱心、技術嫻熟的使用者基礎,他們在一個平靜、交流且非競爭性的環境中貢獻了想法和程式。一些外部貢獻是實質性的,例如來自 University of California at Berkeley 的貢獻。我們的使用者廣泛地分佈在公司內部、大學以及一些商業和政府組織中,儘管分佈密度不高。這個系統由於這個早期使用者的網絡,在知識界(如果尚未在商業上)變得重要。
Bell Labs 的研究環境
工業界的電腦科學研究包含哪些內容?有些人認為最初的 UNIX 工作是一個「私釀」(bootleg) 專案,一個「臭鼬工廠」(skunk works)。並非如此。研究人員應該發現或發明新事物,儘管早期我們的硬體資源匱乏,但我們始終得到管理層的鼓勵。同時,這也絕不像一個開發專案。我們的意圖是為自己創造一個愉快的計算環境,而我們的希望是其他人也能喜歡它。Thompson 和我所屬的 Bell Laboratories 計算科學研究中心研究三個廣泛的領域:理論;數值分析;以及系統、語言和軟體。儘管出於本身目的的研究(例如,在學術期刊上發表論文)不僅被容忍而且受到歡迎,但存在一種強烈但奇妙地微妙的壓力,要求我們思考與我們公司多少相關的問題。自我大約 15 年前加入 Bell Labs 以來,情況一直是這樣,這也不足為奇;老 Bell System 可能看起來像一個受到庇護的壟斷企業,但研究總是必須證明其價值。事實上,研究人員喜歡尋找問題來研究;在一家大公司做研究的一個優點是出現的問題範圍非常廣泛。例如,理論學家可能為編譯器設計或 LSI 算法做出貢獻;數值分析師研究半導體中的電荷和電流分佈;當然,軟體類型的人喜歡設計系統和編寫供人們使用的程式。因此,Bell Labs 的電腦研究始終對世界有相當大的貢獻,並且不害怕要求我們務實的法令。
事實上,對我們中的一些人來說,一個主要挫折是無法說服其他人我們的研究成果確實有用。有人可能會發明一種新的應用程式,編寫一個演示程式,並在我們自己的實驗室中使用它。許多這樣的演示需要進一步的開發和持續的支援,公司才能最佳地利用它們。過去,這種使用僅限於 Bell System 內部;最近,則有可能開發一個直接銷售的產品。
例如,多年前 Mike Lesk 開發了一個自動化目錄輔助系統 [3]。該程式有一個線上 Bell Labs 電話簿,並通過電話線與語音合成器連接,配有音調解碼器。人們撥打系統,並在電話鍵盤上輸入姓名和地點代碼;它會回覆該人員的電話號碼和辦公室地址(它不嘗試發音姓名)。儘管通過十二個按鈕輸入(例如,將「A」、「B」和「C」擠在一起),它的準確性是可以接受的:大約 5% 的嘗試會失敗。該程式在本地很受歡迎且使用頻繁。不幸的是,我們找不到任何人來接手它,即使是作為公司內部受支援的服務,更不用說公開發售了,而且它對我們的資源造成了過度消耗,所以最終被放棄了。(我選擇這個例子不僅因為它足夠老,不會加劇當前的爭執,而且因為它很及時:出版公司電話簿的組織最近問我們是否可以恢復這個系統。)
當然,並非每個想法都值得開發或支援。無論如何,世界正在改變:我們的想法和建議比以前更受歡迎。這種影響力的增加已經持續了幾年,部分是因為 UNIX 的成功,但最近,則是因為我們公司結構的戲劇性變化。
研究面臨的挑戰與變革
AT&T 於 1984 年初分拆了其電話營運公司。關於這對 Bell Laboratories 的基礎研究意味著什麼,已經有了相當多的公開猜測;《Science》雜誌的一篇報導 [2] 就是典型例子。一種時常表達的擔憂是,由於對新的、規模較小的 AT&T 而言短期收益不足,基礎研究整體可能會停滯不前。公司的公開立場令人放心;此外,Bell Labs 的研究管理層似乎深信不疑,並令人信服地辯稱,支持基礎研究的承諾是深遠的,並將持續下去 [1]。
Bell Labs 在物理、化學和數學方面的基礎研究確實可能不會受到威脅;然而,它可能面臨的危險以及必須準備抗辯的理由,是與公司目標無關緊要。電腦科學研究與這些更傳統的學科不同。哲學上,它與物理科學不同,因為它不尋求發現、解釋或利用自然世界,而是研究人類創造的機器的性質。在這方面,它類似於數學,事實上,電腦科學的「科學」部分,在很大程度上,在精神上是數學性的。但電腦科學的一個必然面向是電腦程式的創建:這些物件雖然無形,但可以進行商業交換。
今天,對優秀電腦科學研究最大的危險,可能比任何其他因素都更嚴重,那就是過度的相關性。全世界對電腦的迷戀隨處可見,從報紙財經版甚至頭版上的文章,到即使是最有聲望的大學在尋找和留住電腦科學教員方面所經歷的困難。最好的教授,不再教導聰明的學生,而是加入新創公司,並且經常發現他們最聰明的學生已經捷足先登。電腦科學受到矚目,特別是那些具有立即商業應用前景的方面,如系統、語言和機器架構。這種關注令人 flattered,但可能損害優秀的研究。
隨著特定領域研究強度的增加,保密研究成果的衝動也隨之增加。即使在大學裡也是如此 (Watson 關於 DNA 結構發現的記述 [12] 提供了一個著名的例子),儘管學術界有強烈的反作用力:除非發表,否則根本不會被認識。在工業界,既有體制的一個自然衝動是保護專有資訊。研究人員理解對發表內容和時間的合理限制,但如果被阻止以適當方式交流他們的發現和發明,許多人會感到惱怒並轉投他處,或開始研究較不敏感的領域。Bell Labs 的研究管理層傳統上對在公司利益和工業界學術自由等同物之間維持謹慎平衡很敏感。AT&T 進入電腦產業將考驗,甚至可能讓這種平衡變得緊張。
另一個危險是,各種商業壓力會分散優秀思考者的注意力,從真正的創新轉向對當前潮流的利用,從探勘轉向開採已知礦脈。這些壓力不僅表現為教員流失到產業,也表現為那些在特定想法上擁有豐厚投資(無論是智力還是財務)的人所採取的保守態度。也許這種效應解釋了為什麼大型電腦公司很少能產生有趣的軟體系統;它們被鎖定在現有的世界中。即使是 IBM,雖然支持一個受好評且富有成效的研究機構,但近年來也鮮有能引起人們對電腦思考方式產生 minor 革命的成果。重要新系統的實際例子似乎要麼來自創業努力 (Visicalc 是一個很好的例子),要麼來自像 Bell Labs 和特別是 Xerox 這樣的大公司,這些公司與電腦密切相關,並且有能力進行相關研究,但並不將電腦視為其主要業務。
另一方面,在較小的公司中,即使是最有力的研究支持也高度依賴市場狀況。《The New York Times》在一篇描述 Alan Kay 從 Atari 轉至 Apple 的文章中提到了這個問題:「Kay 先生說... Atari 的實驗室失去了一些曾經吸引業界最優秀人才的創新氛圍。」他說,「我上個月離開時,很明顯他們會將精力放在短期目標上... 我想,研究之樹必須不時用『會計師的鮮血』來滋潤。」[9]
經驗教訓與未來展望
部分原因是因為它們是新的且尚未成熟,部分原因是因為它們是智力的創造物,軟體的藝術和科學縮短了通常在物理學和工程學中從基礎發現、高級開發到應用的鏈條。關於軟體應該如何工作的想法發明者通常發現有必要建立演示系統。對於大型系統和革命性的想法,需要很多時間:可以說 UNIX 是在 70 年代編寫的,以提煉 60 年代最好的系統思想,並在 80 年代成為 commonplace。Xerox PARC 在個人電腦、位圖圖形和程式設計環境方面的工作 [10] 也顯示了類似的進程,起步並在幾年後開花結果。研究人員及其管理層都需要時間,以及對研究長期價值的承諾。
Bell Labs 提供了這種承諾及更多:為我和我的同事提供了一個難得且獨特刺激的研究環境。隨著它進入公司出版物所稱的「新的競爭時代」,其管理層和員工最好記住 UNIX 系統是如何以及在什麼條件下成功的。如果我們能保持足夠的開放性接納新想法,足夠的交流自由,足夠的耐心讓新穎事物 thriving,未來 Ken Thompson 仍有可能找到一台鮮少使用的 CRAY/I 電腦,並建立一個像 UNIX 一樣具有創造性且影響深遠的系統。
參考文獻
- Bell Labs: New order augurs well. Nature 305, 5933 (Sept. 29, 1983).
- Bell Labs on the brink. Science 221 (Sept. 23, 1983).
- Lesk, M. E. User.activated BTL directory assistance. Bell Laboratories internal memorandum (1972).
- Norman, D. A. The truth about UNIX. Datamation 27, 12 (1981).
- Organick, E. I. The Multics System. MIT Press, Cambridge, MA, 1972.
- Ritchie. D. M. UNIX time-sharing system: A retrospective. Bell Syst. Tech. J. 57, 6 (1978), 1947-1969.
- 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).
- Ritchie, D. M. and Thompson, K. The UNIX time-sharing system. Commun. ACM 17, 7 (July 1974). 365-375.
- Sanger, D. E. Key Alert scientist switches to Apple. The New York Times 133, 46. 033 (May 3, 1984).
- Thacker, C. P. et el. Alto, a personal computer. Xerox PARC Technical Report CSL-79-11.
- Thompson. K. UNIX time-sharing system: UNIX implementation. Bell Syst. Tech. J. 57, 6 (1978), 1931-1946.
- Watson, J. D. The Double Helix: A Personal Account of the Discovery of the Structure of DNA, Atheneum Publishers, New York (1968).