Java 之父:你至少得會兩門語言

很多剛入門的同學常常讓我推薦一門編程語言,我一般在靜態語言堆裡會推薦一門,這門語言就是 Java。Java 是一門中規中矩的工業級別的編程語言,自 1995 年正式問世以來,從崛起、問鼎、睥睨天下到進化、平穩、丟掉兵器譜頭把交椅,它經歷了 Sun 的輝煌與墜落,微軟的崛起與紛爭,互聯網的起興、泡沫與復興,移動互聯網的大發展和 Android 平臺的突飛猛進。

Java 語言,就像互聯網大航海時代的一艘大船,雖然它的語法沒那麼靈活,也沒那麼強大,有時候看起來甚至是滯重的、笨拙的,但是,Java 在二十多年來每個浪潮的轉折點都恰到好處的站在了浪潮之巔。時至今日,Java 作為一門優秀的編程語言和強大的生態平臺,依然屹立於程序世界之巔。

今天,我就跟你聊一聊 Java 的創造者,Java 之父 James Gosling。以前寫過這個話題,半途而廢了,今天寫完。

作為很早使用 Java 的那一代老程序員,我們都把他老人家親切的稱為高司令,為了方便,下面我會稱呼他為高斯林。

高斯林今年已經有 65 歲高齡了,按理說這個年紀早該退休頤養天年,但他卻沒有,2017 年還從 Liquid Robotics 跳槽去了 AWS,和一群四五十歲的重量級計算機科學家們共事。突然想起前段時間熱議的“35 歲程序員危機”,其實年齡從來都不是問題,只要保持思考和學習,在職場中就有競爭力。

高斯林的同事也給了他很高的評價:

我從未見過任何一個人,對技術有如此強大而富有創造性的遠見,並且能夠清晰地看到未來。當大家都在尋找腳下問題的解決方案時,高斯林卻在一萬英尺的高空繪製新航線並修建道路。與高斯林一起工作是種樂趣,他既能描繪出看不見的路線,又能自然而然地讓團隊參與其中。

不過高斯林最初的興趣愛好並不是計算機編程,而是手工製作。在他 6 歲的時候,就被祖父廢料廠裡的拖拉機、脫粒機等農場設備迷住了;到了 12 歲,他不僅會修理收割機,還把垃圾桶裡翻出來的元件稍作改造,設計出了一臺電子遊戲機。

高斯林真正愛上計算機編程是在卡爾加里大學的計算機中心,這所大學離高斯林家只有 1 英里,他在十幾歲的時候就經常跑去那裡玩。在那裡,他展示出了驚人的天賦,就像迷戀手工製作一樣,他對編程的熱愛只增不減。高斯林 15 歲的時候獲得了一份物理系兼職工作,通過編寫代碼來幫助分析加拿大 ISIS-II 衛星傳回的數據。在卡耐基梅隆大學攻讀研究生和博士的時候,他又肩負著將學校系統升級為 Unix 的重任,其實最簡單的辦法就是編寫一個語言編譯器,幫助逐行修剪舊機器上的程序,讓它可以在新機器上運行。高斯林卻採用了更大膽的做法:他創建了一個機器語言轉譯器,既可以解決當前的問題,也為更多程序在不同的計算機上運行提供了通用的解決方案。這也給高斯林奠定了開發 Java 虛擬機的技術基礎。此後,高斯林一直思考如何編出一種流傳於網絡、可以在任意機器上運行的通用編碼。

1984 年,高斯林正式加入 Sun,他在那裡工作了 26 年,並帶領團隊創造出了二十世紀末和二十一世紀初最偉大的產品之一 Java。其實在 Sun 創辦初期,公司創始人就曾邀請高斯林一起創業,不過高斯林受父親影響,得了一種叫做“創業過敏”的病。高斯林的父親是個創業者,搞過油田設備和房地產銷售,也做過物流工作。他總是不斷尋找生意,經常從很遠的地方給高斯林打來電話,電話那端的聲音常常很飄渺,這種四處飄搖的生活給年幼的高斯林留下了深刻影響。以至於後來一說到創業,高斯林就會渾身難受,比起硅谷大多數人熱衷於開創自己的事業,高斯林更喜歡去創造產品並看著它們投入使用。

直到今天,高斯林也沒有創辦自己的公司,但是他創造的 Java 語言讓無數程序員寫出或即將寫出一大批改變互聯網、甚至改變命運的軟件和服務。其實高斯林在最初的時候沒有想過自己會創造一種全新的編程語言,一開始,他只是編寫改進 C++ 語言的修補代碼,目的也只是為了讓公司的掌上樣機項目成功,這個產品有點類似於機頂盒,可以通過它控制電視、攝像機、立體音響等設備與無線網絡進行連接。改著改著他發現,要想解決網絡環境安全問題,不是增加一些東西就可以做到的,而是需要深入最底層,創造新的機器語言。

1992 年,高斯林用了一整年的時間來研發新語言,並把這個語言命名為 Oak,名稱來自於他辦公室窗外的那棵橡樹,這也是 Java 語言的雛形。後來,Oak 經過不斷改造,最終在 1995 年 5 月以 Java 的名稱正式發佈。據高斯林後來回憶,Java 這個名字是奧珀曼(Mark Opperman)在頭腦風暴會上提出來的,當時大家在徵集名字,奧珀曼面前的一杯咖啡上正好寫著 Java,Java 是印度尼西亞爪哇島的英文名稱,因盛產咖啡而聞名。於是這個好聽又好記的名字就被採用了,Java 甚至還把一杯熱氣騰騰的咖啡當作圖標。

Java 之父:你至少得會兩門語言

1996 年,Sun 成立了 Java 業務集團,專門開發 Java 技術,同年,第一個 JDK1.0 誕生。短短几個月,就有約 8.3 萬個網頁應用了 Java 技術來製作。1997 年 2 月,JDK1.1 正式發佈,一年後下載量就超過了 200 萬次。毫無疑問,Java 成了當時最受歡迎的計算機編程語言之一。

然而 Java 的成功卻讓高斯林飽受質疑,因為很多技術要素在 Java 誕生之前就被提出過,比如面向對象編程、虛擬機技術、網絡編程等。但高斯林的難得之處在於,他將這些技術要素完美的組合在一起,並進行了設計和實現,形成一門全新的編程語言,這並不是一件容易的事情。所有的創新都是遞增的,在原有知識基礎上,用創造性的觀點對其進行全新的組織,Java 正是如此。它不僅借鑑了 C++ 的長處,還吸收了 Lisp、Smalltalk 以及 Pascal 的特點,最終將這些環境平滑地組合在一起。

高斯林對於計算機編程也有自己的理解,他認為計算機編程是門藝術,和精力守恆定理一樣:你投入到程序中的精力越多,用戶使用時遇到麻煩和折騰的精力就會越少,程序員要做的,正是在開發端和用戶端之間儘量平衡開發和用戶使用的複雜度。

Java 充滿了計算機科學的思想,但它同時也是一種為了實用而設計的計算機語言,它簡練、機智、實用,剛開始用就像人人可以上手的太祖長拳,進入某個階段以後才恍然大悟,原來這就是江湖追逐的九陰真經。在中國,程序員們用這門語言實現了全世界最大的電子商務交易平臺,嗯,就是阿里巴巴。

其實任何成功都不是一蹴而就的,Java 也是如此,優秀的技術、時機、運氣和市場營銷都很重要。Sun 在當時召集了最好的工程師組成小團隊,讓他們放手去做,團隊也曾在編程語言的簡潔性和功能性上出現分歧,公司創始人喬伊(Bill Joy)將 Java 視為未來 30-40 年的唯一一次機遇,他想把一切都納入其中,而高斯林則是簡潔性的倡導者,他認為降低複雜度會讓 Java 更富有連貫性,更小型化,更友好,程序員在使用時會更容易理解和掌握。最終,高斯林成功說服了大家,因為對於編程語言來說,技術一致性是很重要的,語言的設計應該是一個人的觀點,而不是委員會式的編程語言。

現在回過頭來看,當初大部分正確的決定都是高斯林做出來的,團隊其他成員之所以聽從高斯林的判斷,和他的做事方法密切相關。當他對一件事物有不同看法時,他不僅有話要說,更知道該怎麼說。同事在評價高斯林的時候,認為他對技術的主張是一種堅持,而不是固執,更不是妄自尊大。這裡就體現出語言的藝術了,很多程序員在與人交流,尤其是和不懂編程的人討論時,很容易受封閉式思維影響,用專業深奧的語言解釋,卻沒人能聽得懂,這也導致一些程序員不願意和其他部門同事溝通,因為反正說了也沒人聽得懂,不如不說,長此以往,同事間的隔閡也會越來越深。說話是門藝術,你只有學會怎樣向更廣泛的受眾解說,才能讓你的決策得到更多認可。

最後,高斯林也給了年輕程序員們幾條建議,簡單整理出以下三點:

1.多問多讀多看

辦法總比問題多,遇到問題最有效也最快的解決方案就是問,不要在乎你那點面子,能解決問題就行;還有就是多讀,講計算機編程的書和專欄很多,每天學一點,不斷讓自己的知識豐富起來;還要多看科技新聞,學會分析 IT 未來局勢,什麼技術會火,什麼行業更有前景,做好職業規劃,讓一身的技術知識能有地施展。

2.至少學會兩門語言

每次一有人討論誰是最好的編程語言,大家都會吵得不可開交。其實壓根沒有最好的語言,甚至誰也不敢保證,自己用的語言在未來不會被淘汰。所以多學幾門是很有必要的,每種語言都有自己的特點,如果你沒有時間,至少要掌握一門靜態語言,比如 Java,和動態語言,比如 Python。

3.重視優化

沒有最佳的完美程序,程序員要做的就是越快越簡單越好:編程,優化,再編程,再優化。編程不是目的,程序員真正的價值是解決問題穩準狠,以最小的代價解決問題。

今天關於 Java 之父的話題就先聊到這兒,留個小作業,你平時最常用的編程語言是哪幾門呢?歡迎在留言區分享你的編程感悟。

作者 | 池建強

鏈接 | https://mp.weixin.qq.com/s/t7SzMHYQ76pvEwXFjcvjuQ


分享到:


相關文章: