第350期:高斯林口述歷史
Java 語言的發明人是高斯林(James Gosling,1955-)。他在 Sun 公司時,發明了 Java。2019年,美國的計算機歷史博物館採訪他,一連兩天,每天三個小時,後來製作了一個節目《高斯林口述歷史》(Oral History of James Gosling)。網上有視頻 + 文字稿(PDF 上,下),他談了很多東西。下面,我摘錄跟 Java 有關的部分,非常有意思。問:你什麼時候開始研究字節碼?
答:我在卡內基梅隆大學讀研究生時,開始從事字節碼方面的工作。當時,我的導師要求我,將一些軟件從一種計算機移植到另一種計算機。我不知道他怎麼想的,移植軟件非常困難。但是我發現,寫一個字節碼到彙編代碼的編譯器卻很容易,得到的代碼質量比原生的 C 編譯器還要好,能夠順利運行。這件事讓我記住了,只要生成軟件的字節碼,然後爲不同平臺寫一個字節碼到彙編語言的編譯器,就能讓軟件在不同架構的計算機上運行。問:你怎麼在 Sun 公司開始搞 Java?
答:Sun 公司的產品是服務器,在消費電子領域錯過了很多機會。我們當時有一羣人,核心小組大概只有四個人,想探索消費電子領域。首席執行官同意了,給了我們一筆錢,那時是1991年。我們決定做一個原型設備,項目名叫 Star7。這個設備相當古怪,有點像後來的 iPad。事實上,我們團隊後來有幾個人,確實繼續從事 iPad 的研發。我們並不想做那種特定功能的設備,而是想要一個網絡設備,可以跟其他設備相互通信,並進行遠程控制。
我們設想的一個用途是,當時的電視和錄像機都有各自的遙控器,我們想用一個設備同時遙控多種其他設備,不僅能夠控制電視,還能控制燈光,並且可以互動。當然,Star7 沒有成功。但是過了30年,人們竟然還在打造這樣的設備,感覺有點奇怪。問:你怎麼想到要爲這個設備,發明一種新的編程語言?答:我們最初的目標不是發明一種編程語言,但是我們意識到,很多問題都源於編程工具。
我們想改進一下 C 和 C++,讓它們更適合我們的環境。我自願承擔了這項任務,因爲我是小組裏唯一一個之前開發過編譯器的人。隨着時間的推移,我改動的部分越來越不像 C++ 了,開始像一種獨立的語言。問:這種語言最初命名爲 Oak?答:是的,它最初被命名爲 Oak(橡樹)。這純粹是偷懶,我當時需要新建一個文件夾,存放代碼。我坐在辦公桌前,望着窗外,看到一棵橡樹,就爲文件夾起了這個名字。問:一開始,該語言就被設計爲獨立於特定平臺?
答:是的。平臺獨立性是我們從一開始就考慮的事情之一。這其實來自那些消費電子公司,他們是這種語言的使用者。他們非常不樂意受制於特定供應商,如果某個供應商有問題,他們希望可以更換供應商。CPU 也是如此,他們不希望受制於特定的 CPU。問題就來了:如何才能讓他們輕鬆地從一種芯片切換到另一種呢?這不就是我在卡內基梅隆大學移植字節碼時遇到的問題嗎。所以,新語言的核心特性就是字節碼,這樣才能輕鬆地針對不同的 CPU 指令集進行開發。
如果廠商要爲某個芯片製造一些東西,比如下一代錄像機或電視機,即使處理器架構發生變化,也不用重寫大量代碼。現有的代碼可以有把握地在尚未發明的機器上運行。問:Java 的口號“一次編寫,隨處運行”(Write once, run anywhere)是這樣來的嗎?答:我完全不知道這句話是誰想出來的,它是公司的營銷用語。這句話說得很棒,但把事情過分簡化了。問:Java 是什麼時候從機頂盒轉向互聯網?
答:應該是94年或95年,我們決定放棄機頂盒。因爲我們發現,大型媒體公司內心深處,並不想要一款強大的新設備,而是想要控制用戶的眼球,多吸引廣告商。我們決定轉向更廣闊的領域,讓新語言可以用在互聯網開發。問:Java 是怎麼贏得軟件開發商的?答:我們發現,Java 與平臺隔離的特性很有吸引力,它不關心你使用哪種瀏覽器,因此你可以把平臺問題與應用程序的問題隔離開來。
我們不再以消費者和嵌入式爲中心了,而是思考這種語言怎麼幫助更廣大的軟件開發者。如果你是一個軟件開發者,你不必考慮在誰的平臺上開發軟件,Sun、微軟的 Windows NT 或者惠普。如果你用 Java 開發,你可以把軟件賣給使用不同平臺的客戶。問:你們發現 Oak 被另一家公司佔用後,纔想到了 Java 這個名字?答:是的。你要發佈一款產品,必須給它起個名字。Oak 已經被其他公司註冊成商標了,我們被迫選擇一個新名字。
那時,我們已經準備好發佈軟件了,就是缺一個名字。我們組織了一場命名會議,詢問大家的意見,列出一張大家感覺可以的單詞列表,然後發給律師,讓他們從上到下檢查有沒有商標問題,哪個單詞第一個通過檢查,我們就用那個。問:Java 是第四個單詞?
答:是的。我個人最喜歡的是排名第三的 Lyric,但它沒通過檢查。排名第一的單詞,也就是項目組大多數人最喜歡的名字,是 Silk。我不喜歡這個詞,覺得它有點嚇人,讓我想起了蜘蛛。儘管喜歡它的人說,它象徵互聯網。我忘了排名第二是什麼詞,但是第四是 Java,我們就用了它。
來源|阮一峯科技愛好者週刊第 350 期,
評論(0)
暫無評論,來搶第一條。