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

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