每日最新頭條.有趣資訊

憑什麽說這門編程語言是下一代 Java?

問世於 1987 年的面向並發的編程語言 Erlang,比 Java 和 Ruby 等老牌語言都要出現得早,但是彼時的 Erlang 並不被業界廣泛地熟知,因為在其發布的十年間,它隻作為商業產品出售且主要在愛立信公司內部使用。

然而在今年 Code BEAM Stockholm 會議上(以前稱為 Erlang 用戶大會),思科的 Johan Bevemyr 宣布他們每年都會售出 200 萬台運行 Erlang 應用程式的設備,這意味著 90% 的互聯網流量都是通過 Erlang 控制的路由器和交換機進行的。

而這其中的變化主要得益於1998 年愛立信將 Erlang 作為開源項目發布的舉措,與此同時,我們也不禁產生疑問,封閉十年的 Erlang 為何在一夕之間就被愛立信開源了?而在這開源的 20 年中,它又經歷了些什麽?

作者 | Malte Bucksch

譯者 | 彎月

責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

1998 年 12 月 8 日星期二,Erlang 開源發布。還記得那周你在哪裡嗎?我記得我在德克薩斯州的達拉斯,當時正在訪問愛立信美國分公司,幫助他們建立一個 AXD301 交換機的 Erlang 團隊。星期二早上醒來,我收到了 Erlang 開源的消息。

走出愛立信

是什麽原因讓我們決定走出愛立信走向開源?由於各種原因,我們中的許多人都希望 Erlang 作為開源發布。我的一些愛立信的同事想從公司辭職,但他們想繼續用他們心目中的神器來構建產品。還有些人希望通過為大眾提供擁有容錯性和和可擴展系統的卓越工具,讓這個世界變得更美好。對於愛立信的管理層來說,使用 Erlang 的人越多就意味著可以招募到更多的人才。

JaneWalerud(Erlang Systems 的銷售經理,對 Erlang 的開源起到了至關重要的作用)希望我們之中有人能在愛立信之外出售 Erlang,她是為數不多的知道如何與管理層交流的人,她明白銷售編程語言的時代已經結束了。愛立信軟體架構實驗室負責人 H?kanMillroth 建議我們嘗試這種所謂“開源”的新東西。Jane 擁有早期的《The Cathedral and the Bazaar paper》論文,她說服了愛立信的管理層發布 Erlang 虛擬機的源代碼、標準庫和 OTP 的部分內容。

在 Erlang 走出愛立信之前,很多人都不相信這會成為現實。有人擔心,愛立信會在最後一秒鐘停止整個計劃。開源——幾個月前才出現的這個術語是一個奇怪又凶猛的野獸,大公司不知道如何利用開源。擔心愛立信在未知領域走得太遠的人很多,當然這也無何厚非。為了緩解 Erlang 發行的風險,有傳聞說我們的朋友 Richard O'Keefe(他在紐西蘭奧塔哥大學工作)前來拯救我們。東方的夜晚來得很早,就在紐西蘭午夜的鍾聲敲響時,erlang.org 網站上線了。但是僅維持了幾分鐘,只夠一個匿名用戶下載第一個 Erlang 版本,等下載確認完成後,網站就離線了,12 個小時後才再次上線,時至瑞典的午夜。當時我在達拉斯睡得很香,所以我既無法確認事情的經過,也無法否認。但是就像每個傳說一樣,我相信事情的背後都有不為人知的真相。

互聯網的泡沫時代

最初的幾年,項目的進展非常緩慢。儘管如此,由 Kenneth Lundin 長官的 OTP 團隊仍在努力工作。1999 年 5 月,Bj?rnGustavsson 對 BEAM 虛擬機(Bogdan 的 Erlang 抽象機器)進行了重構,並正式取代了 JAM(Joe 的抽象機器)。一年前 Joe 離開了愛立信,雖然 BEAM 速度更快,但需要一定的時間才能準備好投入到生產中。

我記得每當我們發現一家使用 Erlang / OTP 的新公司時就會激動不已。當時瑞典電話公司 Telia 正在全力打造呼叫中心;英國移動運營商 One2One 最初用它做增值服務,後來又擴展到其核心網絡;巴黎的 IdealX 首次涉獵消息傳遞和 XMPP;芝加哥的 Vail 系統和多倫多的 Motivity 也在自動撥號軟體用到了我們的 Erlang / OTP。當然,Bluetail 有許多產品可以為互聯網服務商提供可擴展性和彈性。

Erlang 在愛立信核心產品中的使用持續在擴展。恰巧 1999 年我搬到了倫敦,在那裡我看到愛立信內部對 Erlang 專業知識的需求越來越多。後來 Erlang Solutions 誕生了。在公司成立的一年內,我在瑞典、挪威、澳大利亞、愛爾蘭、法國、美國,當然還有英國都有了新客戶。2000 年,我們建立了第一個非愛立信的客戶;並在巴黎進行 IdealX 培訓、指導和代碼審查。

那一年,Bluteail 以 1.52 億美元收購了 Alteon Web Systems(幾天后 Alteon 被 Nortel 收購),這個消息傳遍了 Erlang 社區。愛立信競爭對手在開發 Erlang 產品!還有一代成功的企業家,他們有資金投入到了許多其他創業公司,其中包括 Synapse、Klarna 和 Tail-f。

Bluetail 成功不久後,我們就迎來了互聯網泡沫的破滅,整個行業進入了寒冬,後來逐步開始復甦。然而,這次泡沫的破滅沒有影響到那些全力以赴的學者。2002 年,查爾姆斯大學的 John Hughes 教授成功地舉辦了經 SIGPLAN 和 ACM 授權的 Erlang 研討會。雖然我們並不是很清楚這一切意味著什麽,但仍然為此感到非常自豪。賓夕法尼亞州匹茲堡的 ACM SIGPLAN Erlang 研討會是第一個獲得授權的研討會。在那次研討會上,來自烏普薩拉大學的博士 Richard Carlsson 向全世界展示了 Erlang 版本的試用版。

2004 年 9 月,來自烏普薩拉大學的 Kostis Sagonas 在猶他州 Snowbird 舉辦的 ACM SIGPLAN Erlang 研討會上進行了一次快速演講,並首次公開演示了 Dialyzer。他在南非 Teba 銀行的代碼庫上運行了這個工具。這是他和他的學生們為生態系統貢獻的第一個強大的工具(後來他們還貢獻了許多優秀的工具)。

長期以來,世界各地的許多大學都在用 Erlang 進行電腦科學各個方面的授課。這反過來催生了很多研究、碩士論文和博士項目。該研討會為學術界提供了一個論壇,人們可以在上面公布他們的成果,並與行業合作夥伴共同驗證。erlang.org 網站的下載量在不斷增加,使用該軟體的人數也不斷提高。

2003 年,哥德堡 IT 大學的項目經理 Thomas Arts 邀請我為他的大學生教授 Erlang 課程。儘管 John Hughes 教授很熟悉 Erlang,但他依然想從在生產中使用該軟體的人那裡學到新知識,所以他也來上我的課。一天早上,上課的時候他一臉疲憊,貌似前一晚通宵加班了。他開發了第一版的 Erlang QuickCheck,並且他非常盡職盡責地測試了課程練習。這就是 Quviq 和商業版 QuickCheck 的來歷,QuickCheck 是一種首屈一指的基於屬性的測試工具。後來我在 IT 大學教了十年的課,共有 700 多名學生參加了這門課程。

涉足消息傳遞

在互聯網泡沫破滅期間,Alexey Shchepin 開始研究一款名為 Ejabberd 的基於 XMPP 的即時消息伺服器。經過三年的努力,2005 年 12 月 1 日他發布了 1.0 版。Facebook Chat 採用了 Ejabberd,並向 7 千萬用戶推出了聊天服務。同時,Brian Acton 和 Jan Koum 創立了 WhatsApp,同樣也是採用了 Ejabberd。通過大肆宣傳(MongooseIM 也做了大肆宣傳),Ejabberd 成為了大規模消息傳遞解決方案的通用平台。

2006 年 5 月,隨著我們定義並實現了一種名為 AMQP 的新型發布/訂閱消息傳遞標準,RabbitMQ 問世了。現如今 RabbitMQ 已成為數萬個系統的支柱。到 2009 的時候,Erlang 成為了許多消息傳遞解決方案的首選語言。

多核的年代

在互聯網復甦期間並不是只有各個大學在進行創新。2005 年 5 月,OTP 團隊發布了多核版的 BEAM 虛擬機,證明了 Erlang 的並發和編程模型是未來多核架構的理想選擇。大多數激動人心的消息都停留在了 Erlang 郵件列表,因為沒有多少人意識到免費午餐已經結束了。我們選擇了 Ejabberd,而且只是將其編譯成最新版的 Erlang,就實現了在四核機器上運行時的吞吐量增加 280%。

2007 年 5 月,保存在愛立信保險箱內的 1991 年的《Erlang 電影》的原始 VHS 盒式錄影帶被匿名洩露,並最終發布到了 YouTube 上。至今仍然沒有人願意公開承擔這一行動的責任。然而,整個世界終於感受到那些受愛立信保密協定影響的人都松了一口氣,出現在電影中的電腦科學家中,沒有人為了演藝事業放棄他們現有的工作。2013 年有一位追趕時髦的人發布了這部電影的續集,他只是為了讓世人覺得 Erlang 很酷。這一次,經確認該行為的始作俑者是芝加哥的居民 Garrett Smith。

2007 年,The Pragmatic Programmers 出版了由 Joe Armstrong 編寫的《Erlang 編程指南》。翌年 2008 年 6 月,我出版了第一本紙質的《Erlang 編程指南》,該書是由 Simon Thompson 和我歷經 18 個月的嘔心瀝血之作。當時,O'Reilly 的書是新興編程語言的權威認證,他們出版了很多種語言編寫的各種優秀的書籍。

2008 年 6 月,這本書的發布會與在倫敦召開的第一屆 Erlang eXchange 交易會同時舉行。這不是第一次這類的盛會,因為近十年來愛立信電腦科學實驗室的前負責人 BjarneD?cker 一直在斯德哥爾摩舉行年度 Erlang 用戶大會。但 11 月的瑞典氣象很冷,同時征服世界的時刻也來臨了。2009 年 3 月在加利福尼亞州帕洛阿爾托召開了第一屆 Erlang Factory 大會。帕洛阿爾托是個更具異國情調的地方,儘管如此還是一樣美麗。

在會上,歐洲 Erlang 社區第一次與美國同行會面。你可以想象,當時熱火朝天的場面。在會議上,Tony Arcieri 推出了 Reia,這是 Ruby 版風格的在 BEAM 上運行的 Erlang。誰說類似 Ruby 的語法都很糟?其他主持人和與會者都是當年科技領域的企業家和長官者中的佼佼者。

當時美國的 Erlang 用戶是 Tom Preston Werner。他利用 Erlang 來擴展 GitHub 的 Ruby 前端。2009 年 11 月,在斯德哥爾摩參加 Erlang 用戶大會時,我把他和 Scott Chacon 介紹給了 OTP 團隊。他們經過一下午的討論,最後 OTP 團隊決定將 Erlang 的開發轉移到 GitHub 上,並用作主要的代碼倉庫。

全球範圍內召開了大量會議。阿姆斯特丹、班加羅爾、柏林、布宜諾斯艾利斯、布魯塞爾、芝加哥、中國的很多城市、克拉科夫、洛杉磯、巴黎、莫斯科、墨西哥城、米蘭、慕尼黑、紐約、羅馬、舊金山、聖安德魯斯、特拉維夫、溫哥華、華盛頓特區以及許多其他地方都舉辦了活動。

The Cappuccino Years

2010 年,我在牛津大學給大一的新生講課。Erlang 是面向並發編程課程的語言。同一年 Bruce Tate 發布了《Seven Languages in Seven Weeks》,Rails 的核心開發人員之一 JoséValim 正式通過這本書意識到 Erlang 在並發競爭中處於領先地位,因為 Erlang 也是這本書熱賣的原因。

2011 年 1 月,Elixir 代碼倉庫第一次正式提交。翌年在克拉科夫的 Erlang Factory 發布了 Elixir,並於 2014 年 9 月發布了 1.0 版。與所有成功的語言一樣,Elixir 也在努力解決一個問題,即從 Web 開始將 Erlang 的力量帶到更廣泛的社區。

這個時機非常好。 2012 年 1 月,WhatsApp 宣布他們通過修改 FreeBSD 和 BEAM,在一個虛擬機和主機上實現了 200 萬個 TCP / IP 連接。他們的目標是降低運營成本,用盡可能小的硬體運行可擴展的服務。這些方法可以運用到許多行業,Web 就是其中之一。

在 WhatsApp 發布公告的同一個月裡,一小簇公司匯集了知識、時間和資源,共同創建了工業 Erlang 用戶組。他們與愛立信合作,將 Erlang 從開源 Mozilla 公共授權轉移到了 Apache 授權,為該調度程式做出了貢獻,啟動了錯誤跟蹤工具,為新的 erlang.org 站點提供資金,啟動了 Erlang Central,並為了建立基礎的目的與他們合作。

Elixir 的時代

2014 年 7 月,Jim Freeze 在德克薩斯州奧斯汀舉辦了第一屆 Elixir 大會。共有 106 名與會者其中包括主唱 Dave Thomas 的狗狗。Chris Mccord 展示了浴火重生的 Phoenix(鳳凰)。Robert Virding 和我也出席了那次會議,我清楚地記得我的發言:不要因為你了解 Ruby,而他們跟你說學習 Elixir 很容易,你就相信他們。你將面臨巨大的挑戰。

Elixir 背後的主要思想是並發性,了解如何處理並發是項目成功的關鍵。一年後,2015 年 8 月,Phoenix 1.0 問世。它與 Ruby 的 Rails 作用一樣,即將人們帶到 Elixir 的世界。有了 Phoenix 後,你不需要掌握並發性就可以學習 Elixir 了!不久之後人們就開始緊張了,他們不再認為 Elixir 是 Web 的唯一語言。

在 Elixir 大會期間,我談到了我與 Steve Vinoski 共同創作的書《Designing For Scalability with Erlang/OTP》。當時,該書隻發行了測試版。但我沒想到我需要等到 2016 年 6 月才能拿到紙質的書。那本書的最後四章我花費了一年半才寫完,它們本身就可以作為一本書。我想給其他作家的一個經驗教訓是:如果你的伴侶告訴你“你要做爸爸了”,那麽意味著你必須在 8 個月內寫完你的書。否則就會像我一樣,等到你第二個孩子出生前才來參加書的發布會。這本書應該歸功於 Alison、Peter 和我的寶貝。我的寶貝出生於 7 月初,證明 Erlang 的說法沒有錯:“直到生第二個孩子你才能搞懂並發。”

Erlang 生態系統

縱觀 2016 年,Elixir 的使用率不斷提高。關於 Lisp 版的 Erlang 和 Effene(BEAM 上的另外兩種語言)的會議表明它們的代碼在生產中運行。新的實驗也不斷湧現,語言的時代結束了。與 .Net、C#、F#、Visual Basic 和其他 JVM 生態環境中的 Java、Scala、Clojure 和 Groovy 一樣。Erlang 和 BEAM 也面臨相同的局面,迫使 Bruce Tate 杜撰出了術語“Erlang 生態系統”。

Alpaca、Clojerl、Efene、Elixir、Elm-beam、Erlog、Erlua、Fez、Joxa、Lisp 版的 Erlang 和 Reia、以及 Erlang 和 Elixir,它們共同開啟了跨語言互動和合作的時代。我們一起變得更強大,還會繼續向前發展!

2018 年 12 月,Erlang 生態系統基金會提交了所有的文書工作,建立了一個非盈利組織,其目標是培育生態系統。我期待 BEAM 上的更多語言越來越受歡迎,因為我們改進了互操作性、通用工具和很多庫。隨著對可擴展和容錯系統需求的增加,Erlang 的構造和語義對生態系統內外新語言的影響力也在增加。我希望這將成為未來 20 年新一代技術長官者和企業家的翅膀。

未來

2018 年,在 Erlang 生態系統召開的 Code BEAM Stockholm 會議上(以前稱為 Erlang 用戶大會),思科的 Johan Bevemyr 宣布他們每年都會售出 200 萬台運行 Erlang 應用程式的設備。這讓觀眾感到震驚,因為這意味著 90% 的互聯網流量都是通過 Erlang 控制的路由器和交換機進行的。Erlang 為愛立信的 GPRS、3、4G / LTE 提供支持,而且最近的招聘廣告都是通過他們的 5G 網絡發布的。通過 VerneMQ 和 EMQ,MQTT(最受歡迎的AMQP 經紀公司)實現了物聯網的基礎設施。Erlang 不僅支持互聯網和移動數據網絡,它還是數以萬計分布式容錯系統的支柱。每天數十億美元的金融交換發生在 Erlang 之上,Erlang 的消息傳遞解決方案傳遞著越來越多的消息。沒有 Erlang,這一切都不可能發生!

這些只是過去 20 年中,我人生最光輝的時刻。儘管如此,我們還有很多未完的事業。1995 年,Joe Armstrong 跟我說 Erlang 永遠沒有前途。後來有一天,他說世界上還有更美好的事物。時至 2018 年 12 月,我仍然以開放的心態等待他的預言成真。無論他預言中的事物是什麽,毫無疑問 Erlang 將會對它產生重大影響。

非常感謝 Joe、Mike 和 Robert 邁出了第一步,還要感謝 Bjarne 實現了 Erlang。我要向 Jane 致敬,是他將 Erlang 帶出了愛立信,才有了它後來的發展。感謝你們的努力,我才有機會可以與這些才華橫溢的科技人才會面,一起工作和學習。Erlang 為我們提供了一個平台,讓我們可以在未來 20 年內繼續推動創新!

原文:https://www.erlang-solutions.com/blog/twenty-years-of-open-source-erlang.html

本文為 CSDN 翻譯,如需轉載,請注明來源出處。

熱 文推 薦

獲得更多的PTT最新消息
按讚加入粉絲團