那些神一樣的程序員
在MIT的BBS上曾有一個帖子,其中問道:
“你覺得誰是最厲害的程序員, 為什么?”
雖然大家在回復的帖子中聲明最厲害的程序員排名不分先后,然而大多數(shù)人仍把Bill Joy列在第一位。
Bill Joy?
年輕的程序員也許已經(jīng)不知道他是誰了,但是他留在這個世界上的作品你一定知道,今天來講一講Bill Joy這位神一樣的程序員。
1
1975的秋天,Unix光環(huán)加身的大神Ken Thompson休了一個長假,他回到了自己的母校,加州大學伯克利分校,他將在這里以訪問學者的身份待一學年。
(Unix,Go語言發(fā)明人Ken Thompson)
在伯克利分校,Ken Thompson把Unix v6 安裝到了最新的機器PDP 11/70上面,并且開設了一門Unix的課程。
(PDP-11/70)
他不僅講解理論,還在晚上帶著大家閱讀一行行的Unix內(nèi)核代碼,向大家解釋為什么這么做。
每個晚上,學生們都圍繞在Ken Thomphson周圍,瞪著一雙雙求知的大眼睛,聆聽Unix作者的教誨,實在是太幸福了!
這些學生當中有一個研究生,Bill Joy, 也是我們故事的主人公。
2
Ken Thompson通過Unix在伯克利大學激發(fā)了黑客精神。
有一天Ken Thompson在PDP 11/70 機房“閑逛”的時候,在Unix上隨手寫了一個不太完善的Pascal編譯器,這令Bill Joy大開眼界,原來黑客就是這么玩的啊!
Bill Joy在用Pascal寫項目作業(yè)的時候,很快他發(fā)現(xiàn)了編譯器的缺陷,他也決定做一個黑客,把這個編譯器改好。
那時候沒有IDE,他們使用一個叫ed的文本編輯器來程序,ed也是大神Ken Thompson寫的,但是它實在是不好用,后來有人寫出了em,Bill Joy和Chuck又改進了em, 把它變成了en ,然后是eo, ep...... ex。
必須要提一下,那時候并沒有顯示器,大家用的都是teleprinter :
ed,en,ex們和我們現(xiàn)在用的文本編輯器不同,是所謂的“行編輯器”, 它們有什么特點呢?
你想在文檔中任意移動光標,選取要編輯的文本段落?對不起,不行!你只能以行為單位進行上下移動!
你好不容易定位到了一行,想改這一行的某個詞,對不起,不行,你得刪除這一行,然后重新輸入!
當時的程序員過的都是什么日子啊!
Bill Joy 使用ex這個“趁手”的工具,很快就把Thompson留下的“爛攤子”Pascal編譯器給收拾好了,新的Pascal編譯速度很快,運行起來也很快,深受學生們的喜愛。
后來,伯克利大學購買了一批叫做ADM-3A的終端,在屏幕上終于支持可以隨意移動的光標了!
Bill Joy 欣喜異常,他重新設計了ex, 增加了“可視化模式”,ex變成了大名鼎鼎的vi。

(使用vi 編輯hello world)
vi這個編輯器讓無數(shù)程序員愛不釋手,更讓無數(shù)程序員從入門到放棄。還和另外一個神器Emacs開啟了長達幾十年的論戰(zhàn):到底誰是最好的編輯器?
有個笑話說:如果讓計算機生成隨機數(shù)呢?
答:讓新手退出vi。
3
1976年夏天,“休假”滿一年的大神Ken Thompson返回了貝爾實驗室, 他雖然走了,但是他撒播下的黑客的種子開始生根發(fā)芽。
Bill Joy和其他同學此時對Unix內(nèi)核越來越感興趣,他們發(fā)揮真正的黑客精神,不斷地對Unix進行改進和增強,比如Bill 覺得Unix自帶的Shell不爽,自己開發(fā)了一個C Shell (csh)。
與此同時,他的Pascal編譯器有著良好的聲望,很多人都想要一個Copy。
Bill Joy突發(fā)奇想,為什么不把Pascal編譯器,ex編輯器(還有后來的vi編輯器),以及其他對Unix的增強一起打成一個新的包,重新分發(fā)呢?
于是在1977年早些時候,著名的Berkeley Software Distribution,即BSD 誕生了!
(BSD 的logo 小惡魔)
BSD發(fā)布之后大受歡迎,各個學校和公司都在使用,后來相繼發(fā)展出了3BSD、4.0BSD、4.1BSD、4.2BSD、4.3BSD,還有些后繼產(chǎn)品如FreeBSD,NetBSD,OpenBSD,NeXTSTEP等, 其中NeXTSTEP最終演化成了蘋果公司名揚天下的MacOS。
BSD不斷增長的影響力引起了AT&T(貝爾實驗室的母公司, Unix版權(quán)所有者)的不爽,AT&T和伯克利大學打了一場曠日持久的官司,我們按下不表。
4
接下來就是一個傳奇的故事,關(guān)于TCP/IP。
當時,國防高級研究計劃局(DARPA)主導了計算機網(wǎng)絡的發(fā)展,由于BSD的良好表現(xiàn),伯克利獲得了DARPA的合同,希望能增強BSD,可以支持DARPA的網(wǎng)絡。
當時有一家叫BBN的公司,曾經(jīng)參加過ARPANET的建設,獲得了實現(xiàn)TCP/IP協(xié)議棧的合同。
TCP/IP協(xié)議是互聯(lián)網(wǎng)的基石, 讀過的人都知道,光是理解這些協(xié)議就非常不容易,更不用說準確地、高性能地實現(xiàn)它們了。
BBN把TCP/IP協(xié)議棧實現(xiàn)以后,DARPA要求Bill Joy集成進BSD,但是被Bill拒絕了,他理由很簡單:BBN寫的TCP/IP性能太差了!還不如我自己寫一個!
Bill Joy說到做到,很快就手寫了一個高性能的版本,集成進了BSD。當被問道是怎么實現(xiàn)TCP/IP的時候, Bill Joy說:這非常簡單,你只要讀一下協(xié)議,然后寫代碼就行了。
一個人打敗了一個公司,這讓BBN非常難堪!
5
1979年, Bill Joy 獲得了伯克利大學的電氣工程與計算機科學碩士學位,1982年他作為聯(lián)合創(chuàng)始人創(chuàng)立了Sun 公司,作為首席科學家一直到2003年。
在這期間,他的成就依然無與倫比:
Network File System(NFS)的主要設計人。
微處理器 SPARC 的主要設計者(軟硬通吃啊!),SPARC是Sun工作站的核心,每年給Sun帶來幾十億美元的收入。
很多重要技術(shù)的靈感來源:Java, Jini , JXTA。
6
vi編輯器, c shell , BSD Unix, TCP/IP協(xié)議的實現(xiàn), NFS, SPARC處理器,一個人能搞定任意一樣,足以在計算機的歷史上刻下自己的姓名。
可是Bill Joy居然以一己之力創(chuàng)造了這么多的東西,讓我們嘆為觀止??墒撬胍胺馍瘛保?還差一樣東西:以他的名字命名的定律,或者法則。
這難不住Bill Joy, 以他的名字命名的有兩個定律:
Bill Joy 定律1 :
從1984年起,計算機的峰值計算速度,每年翻一倍。
Bill Joy 定律2 :
不管你是誰,大多數(shù)絕頂聰明的人總是在為另外一個人或者組織工作。
如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)。