那些神一樣的程式設計師

在MIT的BBS上曾有一個帖子,其中問道:

你覺得誰是最厲害的程式設計師, 為什麼?

雖然大家在回覆的帖子中宣告最厲害的程式設計師排名不分先後,然而大多數人仍把Bill Joy列在第一位。

Bill Joy?

年輕的程式設計師也許已經不知道他是誰了,但是他留在這個世界上的作品你一定知道,今天來講一講Bill Joy這位神一樣的程式設計師。

1

1975的秋天,Unix光環加身的大神Ken Thompson休了一個長假,他回到了自己的母校,加州大學伯克利分校,他將在這裡以訪問學者的身份待一學年。

那些神一樣的程式設計師

(Unix,Go語言發明人Ken Thompson)

在伯克利分校,Ken Thompson把Unix v6 安裝到了最新的機器PDP 11/70上面,並且開設了一門Unix的課程。

那些神一樣的程式設計師

(PDP-11/70)

他不僅講解理論,還在晚上帶著大家閱讀一行行的Unix核心程式碼,向大家解釋為什麼這麼做。

每個晚上,學生們都圍繞在Ken Thomphson周圍,瞪著一雙雙求知的大眼睛,聆聽Unix作者的教誨,實在是太幸福了!

這些學生當中有一個研究生,Bill Joy, 也是我們故事的主人公。

那些神一樣的程式設計師

2

Ken Thompson透過Unix在伯克利大學激發了駭客精神。

有一天Ken Thompson在PDP 11/70 機房“閒逛”的時候,在Unix上隨手寫了一個不太完善的Pascal編譯器,這令Bill Joy大開眼界,原來駭客就是這麼玩的啊!

Bill Joy在用Pascal寫專案作業的時候,很快他發現了編譯器的缺陷,他也決定做一個駭客,把這個編譯器改好。

那時候沒有IDE,他們使用一個叫ed的文字編輯器來程式,ed也是大神Ken Thompson寫的,但是它實在是不好用,後來有人寫出了em,Bill Joy和Chuck又改進了em, 把它變成了en ,然後是eo, ep…… ex。

必須要提一下,那時候並沒有顯示器,大家用的都是teleprinter :

那些神一樣的程式設計師

ed,en,ex們和我們現在用的文字編輯器不同,是所謂的“行編輯器”, 它們有什麼特點呢?

你想在文件中任意移動游標,選取要編輯的文字段落?對不起,不行!你只能以行為單位進行上下移動!

你好不容易定位到了一行,想改這一行的某個詞,對不起,不行,你得刪除這一行,然後重新輸入!

當時的程式設計師過的都是什麼日子啊!

Bill Joy 使用ex這個“趁手”的工具,很快就把Thompson留下的“爛攤子”Pascal編譯器給收拾好了,新的Pascal編譯速度很快,執行起來也很快,深受學生們的喜愛。

後來,伯克利大學購買了一批叫做ADM-3A的終端,在螢幕上終於支援可以隨意移動的游標了!

Bill Joy 欣喜異常,他重新設計了ex, 增加了“視覺化模式”,ex變成了大名鼎鼎的

vi

那些神一樣的程式設計師

(使用vi 編輯hello world)

vi這個編輯器讓無數程式設計師愛不釋手,更讓無數程式設計師從入門到放棄。還和另外一個神器Emacs開啟了長達幾十年的論戰:到底誰是最好的編輯器?

有個笑話說:如果讓計算機生成隨機數呢?

答:讓新手退出vi。

3

1976年夏天,“休假”滿一年的大神Ken Thompson返回了貝爾實驗室, 他雖然走了,但是他撒播下的駭客的種子開始生根發芽。

Bill Joy和其他同學此時對Unix核心越來越感興趣,他們發揮真正的駭客精神,不斷地對Unix進行改進和增強,比如Bill 覺得Unix自帶的Shell不爽,自己開發了一個

C Shell (csh)

與此同時,他的Pascal編譯器有著良好的聲望,很多人都想要一個Copy。

Bill Joy突發奇想,為什麼不把Pascal編譯器,ex編輯器(還有後來的vi編輯器),以及其他對Unix的增強一起打成一個新的包,重新分發呢?

於是在1977年早些時候,著名的Berkeley Software Distribution,即

BSD

誕生了!

那些神一樣的程式設計師

(BSD 的logo 小惡魔)

BSD釋出之後大受歡迎,各個學校和公司都在使用,後來相繼發展出了3BSD、4。0BSD、4。1BSD、4。2BSD、4。3BSD,還有些後繼產品如FreeBSD,NetBSD,OpenBSD,NeXTSTEP等, 其中NeXTSTEP最終演化成了蘋果公司名揚天下的MacOS。

BSD不斷增長的影響力引起了AT&T(貝爾實驗室的母公司, Unix版權所有者)的不爽,AT&T和伯克利大學打了一場曠日持久的官司,我們按下不表。

4

接下來就是一個傳奇的故事,關於TCP/IP。

當時,國防高階研究計劃局(DARPA)主導了計算機網路的發展,由於BSD的良好表現,伯克利獲得了DARPA的合同,希望能增強BSD,可以支援DARPA的網路。

當時有一家叫BBN的公司,曾經參加過ARPANET的建設,獲得了實現TCP/IP協議棧的合同。

TCP/IP協議是網際網路的基石, 讀過的人都知道,光是理解這些協議就非常不容易,更不用說準確地、高效能地實現它們了。

BBN把TCP/IP協議棧實現以後,DARPA要求Bill Joy整合進BSD,但是被Bill拒絕了,他理由很簡單:BBN寫的TCP/IP效能太差了!還不如我自己寫一個!

Bill Joy說到做到,很快就手寫了一個高效能的版本,整合進了BSD。當被問道是怎麼實現TCP/IP的時候, Bill Joy說:

這非常簡單,你只要讀一下協議,然後寫程式碼就行了

一個人打敗了一個公司,這讓BBN非常難堪!

5

1979年, Bill Joy 獲得了伯克利大學的電氣工程與計算機科學碩士學位,1982年他作為聯合創始人創立了Sun 公司,作為首席科學家一直到2003年。

在這期間,他的成就依然無與倫比:

Network File System(NFS)

的主要設計人。

微處理器

SPARC

的主要設計者(軟硬通吃啊!),SPARC是Sun工作站的核心,每年給Sun帶來幾十億美元的收入。

很多重要技術的靈感來源:

Java, Jini , JXTA

6

vi編輯器, c shell , BSD Unix, TCP/IP協議的實現, NFS, SPARC處理器,一個人能搞定任意一樣,足以在計算機的歷史上刻下自己的姓名。

可是Bill Joy居然以一己之力創造了這麼多的東西,讓我們歎為觀止。可是他想要“封神”, 還差一樣東西:以他的名字命名的定律,或者法則。

這難不住Bill Joy, 以他的名字命名的有兩個定律:

Bill Joy 定律1

從1984年起,計算機的峰值計算速度,每年翻一倍。

Bill Joy 定律2

不管你是誰,大多數絕頂聰明的人總是在為另外一個人或者組織工作。