40歲的Unix還能走多遠
文章來源: | 發布時間:2009-09-03 | 【打印】 【關閉】
1969年8月,當忙碌了整整一個月的Ken Thompson走出實驗室的時候,他絕對沒有想到,他在這一個月所做的事將給整個IT產業帶來如此深遠的影響。在這一個月里,他把自己所有關于操作系統的想法付諸實踐,開發出了至今仍是大型關鍵核心業務系統最可信賴的運行平臺Unix的第一個版本。這項工作后來幫他和他的同事Dennis Ritchie獲得了1983年的計算機領域的最高獎項圖靈獎,而他當時所采用的眾多設計概念影響了一代又一代程序員,至今仍被奉為圭臬。
Unix問世
Ken Thompson是AT&T下屬的貝爾實驗室的程序員,在此之前,他和他的同事Dennis Ritchie在開發一個名為Multics分時系統,由于項目進展非常不順,貝爾實驗室取消了這一項目。閑下來的Thompson和Dennis Ritchie對當時流行的批處理操作系統不感興趣,決定開發一種新的操作系統。經過一段時間的探討,Ken Thompson用匯編語言為DEC的PDP-7小型機開發出了后來命名為Unix操作系統的第一個版本,包括一個外殼程序(Shell)、一個編輯器和一個匯編程序(assembler),每一個用了差不多一個星期的時間。隨后的幾年里Ken Thompson和Dennis Ritchie這對搭檔在他們的同事Doug McIlroy、Joe Ossanna、Rudd Canaday的幫助下對這個操作系統進行了不斷修改和完善。
新操作系統借鑒了Multics的一些設計思路,不過,最為重要的是它堅持“少就是好”的理念。5年后,Ritchie和Thompson在計算機協會(ACM)的雜志CACM上介紹了當時的設計思路::“需要用戶與之交互的操作系統不僅應該對計算機本身要求不高,而且也要讓人用起來很容易。我們希望Unix的用戶發現它最大的特點就是簡便、易用而且美妙。”
很顯然,Unix做到了。Unix后來成為IT產業的基石,被廣泛地部署在大學、政府部門和企業的各種服務器和工作站中,而且其影響還表現在,Unix所采用的設計模式讓當時的軟件設計人員重新思考如何編程。
當然,Unix的成功不是一下子發生的。1971年的時候,這個操作系統被遷移到比PDP-7功能強大得多的PDP-11小型機,為了讓貝爾實驗室專利部門的打字員可以用來處理一些文檔,新增了文本編輯器和文本排版工具,這是該操作系統第一個走出研發團隊。1972年,Ritchie在Thompson早期發明的B語言的基礎上發明了高級編程語言C語言,隨后Thompson用C重新改寫了程序,這使得Unix的可移植性大大增強了。這時這個操作系統也有了自己的名字“Unics”,后來逐漸變成了今天的Unix。
不過,直到這時Unix仍沒有走出貝爾實驗室,而真正把Unix帶向世界的則是Ritchie和 Thompson1974年7月發表在CACA雜志上的文章《Unix分時系統》,它讓整個IT業界為之轟動。
黑客的樂園
當時,人們用“黑客”來形容那些具有非凡的創造力和頑強的毅力、能解決一些常人無法解決的問題的軟件工程師。按照這一定義,Thompson和Ritchie是真正的黑客,他們所采用的方法、編寫的代碼讓那時的大學生為之著迷,隨后一些資金不多的初創公司也學習和借鑒這些方法和代碼。
“幾乎從一開始,Unix就是能夠自我維護的,” Thompson和Ritchie在他們發表在CACM上的論文中寫到,“因為所有的源代碼都是可以拿到的,可以很容易地修改,因此,如果我們想到了一個非常好的想法或者聽到一些非常好的建議,我們非常樂意修改或者重寫這個系統。”
當時在貝爾實驗室做程序員、今天仍然在AT&T工作的David Korn回憶說: “Unix最大的一個特點是其中的工具可以很容易地被修改,或者用一個更好的工具替代。”Korn不久開發出了一個很有影響力的Korn shell(今天已經成為一個開源軟件),從本質上說,這就是一個能指揮Unix運行的編程語言。
毋庸置疑,Unix給當時的程序員帶來了深遠的影響。Unix首創的很多概念至今仍在沿用。比如,為了把一個程序的輸入引入另一個程序中,Unix在1973年采用了“管道(Pipeline)”這個概念,在今天的很多操作系統中仍然可以看到,包括所有Unix的變種以及Linux、DOS、Windows等。 Unix的另一個特點是它并不需要一個非常昂貴的大型機來運行。實際上,Unix最初就是為計算能力很弱的小型機DEC PDP-7開發的,因為當時Thompson和Ritchie手頭只有這樣的計算機。
正是由于Unix簡單、容易修改、對資源要求不高,而且源代碼基本上免費的,因此很多大學的研究人員開始使用Unix,當時新成立的一些公司(如Sun)和很多今天已經不在、從事科學計算的公司也采用Unix。
Unix開枝散葉
最開始Unix是一種免費的操作系統。因為1956年美國聯邦政府通過一項法案禁止 AT&T提供電話以外的業務,所以,AT&T是不允許參與計算機有關的業務的。在Unix剛剛開發出來的時候,AT&T也沒有太看重它,但到20世紀70年代末,AT&T意識到了它的商業價值。而AT&T的律師也對1956年通過的那個法案做出了新的有利于自己的解釋。于是,1979年年初在Unix v7發布之后,AT&T修改了軟件授權協議,禁止大學使用Unix源代碼教學。不過,這對大學并不是問題,因為可以繼續用Unix v6。
此后Unix出現了一個很重要的分支。20世紀70年代在加州大學伯克利分校讀研究生的Bill Joy從貝爾實驗室拿到了一份Unix的拷貝,他認為這個操作系統非常適合作為他的Pascal編譯器和文本編輯器的運行平臺。因此,他和伯克利分校其他一些人一起對Unix進行了修改和擴展,由此誕生了Unix的重要分支: BSD (Berkeley Software Distribution) Unix。1978年,BSD推出,每份拷貝50美元。
這樣,到1980年有了兩個主要的Unix版本,一個來自伯克利,另一個來自AT&T,隨后不久更多的Unix開始涌現,并演變為“Unix戰爭”: 1982年,Bill Joy與麥克尼利等聯合創建Sun,推出了一種運行在工作站上的BSD版本,命名為SunOS(Solaris是大約10年以后的事情)。隨后,AT&T發布了非常具有影響力的Unix System V,在它的基礎上后來誕生了IBM AIX和惠普的HP-UX。不過,事情總是有好有壞: “Unix戰爭”好的方面是,軟件人員很容易拿到Unix,對它按照自己的要求進行修改;不好的是,Unix出現了很多分支影響了可移植性。
值得一提的是,1987年荷蘭阿姆斯特丹市Vrije大學計算機系教授Andrew Tanenbaum開發出一個與Unix非常接近的操作系統Minix。這個運行于Intel 80286微處理器上的操作系統是一個開源軟件,到1991年Linus Torvalds正是基于Minix開發出了今天廣泛使用的Linux。