成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

世界上最低調的編程語言,高并發的王者,程序員翻身的秘密武器!

開發 前端
Discord 就是 Elixir 的早期采用者, Erlang VM 是我們想要構建的高并發實時系統的完美候選者,過去兩年,系統中的并發用戶數已達到近 500 萬,每秒有數百萬個事件...... 如果讓我從頭再選擇一次的話,我還會選擇Elixir。

1998年,愛立信推出了一款著名的交換機AXD301, 這款交換機實現了驚人的9個9(99.9999999%)的可用性。

一般的系統,實現5個9,即一年停機5分鐘已經相當不錯了,9個9意味著20年的運行時間內只有0.631秒的停機時間。

實現這個奇跡的關鍵就是愛立信發明的編程語言Erlang。

圖片圖片

Erlang的作者Joe Armstrong在采訪時說道:

如果Java是“一次編寫,到處運行”,Erlang就是“一次編寫,永遠運行!”

圖片圖片

奇怪的是,這么一個神奇的語言,愛立信竟然禁止在公司內部使用了,這是為什么呢?

01起源

Erlang的誕生其實是個挺無奈的過程。

最早的時候,愛立信只想找到一個語言,更好地構建下一代電信系統。

Joe Armstrong等人拿著一個大“篩子”,把20多種語言“篩來篩去”, 標準是:

1.為了提高生產率,要選擇高級的聲明式語言

2.為了支持高可用的電信系統,在語言層面就得支持并發和錯誤恢復

第一條“篩”掉了C、PASCAL, Ada, C++等語言,第二條又篩掉了Lisp, Prolog,Parlog等語言。

沒辦法,只好自己發明一個新語言了,這就是Erlang。

Erlang的核心是“進程”,每個進程使用消息和其他進程進行通信,每個進程有個郵箱可以存儲消息,進程通過檢查郵箱的消息,然后采取行動,這其實就是現在的Actor模型。

圖片圖片

大家也能看出來,Erlang的進程不是操作系統中常說的進程,它非常輕量級,每個進程的開銷只有幾百個字節,一臺服務器可以輕松地支持幾百萬個進程同時運行。

進程可以是分布式的,可以跨越網絡來互相發送消息,添加服務器就可以輕松擴展。

Joe Armstrong還在Erlang中內置了“彈性”的能力,當一個進程崩潰時——不管是因為Bug還是硬件故障——都不會導致整個系統崩潰,這對電話交換系統來說非常重要。

圖片圖片

02艱難發展

新語言的推廣是非常困難的。

有愛立信員工聽說了Erlang這個新語言,就在一個原型系統中嘗試了一下,他們驚奇地發現,這個新玩意兒開發起系統來,比其他方案要快得多。

但即使如此,Erlang依然沒法大范圍地在愛立信鋪開使用,更別說普及到全世界了。

Joe Armstrong和團隊想了很多辦法進行“促銷”,比如寫書,召開會議,把Erlang移植到DOS、Windows、Mac、VxWorks等各種平臺。

圖片圖片

他們甚至錄制了一個小電影做宣傳。

圖片圖片

1995年,Erlang終于迎來了轉機。

愛立信公司計劃開發新一代的交換機產品,以分組交換形式進行語音、數據和各種寬帶服務的通信。

但是這個項目實在太復雜了,最早用C++開發,很快就陷入了巨大的泥潭,瀕臨崩潰。

這時候,大家想到了Erlang,死馬當做活馬醫,用它來救場吧。

Erlang不負眾望,順利幫助團隊完成了交換機的開發,這就是文章開頭提到的AXD301。

有意思的是,這么優秀的編程語言,愛立信竟然把它禁掉了,禁止內部使用!

原因居然是電信產品生命期長,維護一個自己專有的語言成本很高,不如采用全世界都用的編程語言!

這個禁令一出,為Erlang付出大量心血的Joe Armstrong等人大為震驚,沒辦法,只好游說公司開源Erlang。

1998年12月,Erlang正式開源,團隊的初始成員也離開了愛立信,成立了自己的公司Bluetail,致力于Erlang的開發。

Erlang離開了電信領域,進入廣闊的互聯網市場。

03大放異彩

2009年1月,雅虎前員工Jan Koum買了一部iPhone手機,他想到了一個點子:為什么不開發一個App,通過互聯網來發送消息呢?

傳統的方式是短信,資費高,還有流量限制,這很不爽。

于是他拉來了雅虎的同事Brian Acton一起干,互聯網用戶的特點那就是用戶數極多,并發數極高,兩人經過研究,發現Erlang簡直就是處理大規模消息的不二之選,后臺開發就它了!

2009年1月,WhatsApp誕生。

圖片圖片

WhatsApp一經推出,用戶便迅猛增長,如今在全球已經擁有了20億活躍用戶。

圖片圖片

2014年,Facebook斥資190億美元收購了一個叫做WhatsApp的軟件,震驚業界。

此時的WhatsApp,已經有了4.5億億用戶,并且每天以100萬在增長。

但是,讓人吃驚的是,WhatsApp只有32名工程師,負責服務器后端開發的程序員只有10人。

這么驚艷的成績,Erlang可以說是功不可沒!

04向Web進軍

雖然Erlang性能卓越,但是它的函數式編程的語法卻并不為大眾所熟悉。

一個叫Jose Valim的巴西人覺得Erlang, OTP, Beam VM這樣的好東西,廣大的碼農群眾不能使用真是太可惜了。

Jose Valim是Ruby on Rails的核心開發人員,深受Ruby社區的影響。

于是大神出手,借用了Ruby簡潔優雅的語法,把Erlang和OTP進行了包裝,創建Elixir這門新語言。

圖片圖片

圖片圖片

以Elixir為基礎,Jose Valim等人還開發了一個新的Web框架Phoenix,方便程序員使用Elixir進行Web應用的開發。

許多創業公司使用了Elixir和Phoenix快速構建應用,尤其是高并發,實時的應用,其中最著名的是Discord。

圖片圖片

Discord的CTO在2017年的一篇文章中說道:

Discord 就是 Elixir 的早期采用者, Erlang VM 是我們想要構建的高并發實時系統的完美候選者,過去兩年,系統中的并發用戶數已達到近 500 萬,每秒有數百萬個事件...... 如果讓我從頭再選擇一次的話,我還會選擇Elixir。

05Erlang為什么不流行?

看到這里,你腦海中很可能會浮現這個問題:

你把Erlang吹得天花亂墜,為什么它還無法成為Java這樣的主流語言呢?

有位Lisp大佬Richard P. Gabriel說得很有道理:Worse is better。

大佬說軟件設計有四個目標:簡單性,正確性,一致性,完整性。

在軟件設計上有兩大流派:MIT流派(以Common Lisp和Scheme為代表)和新澤西流派(就是貝爾實驗室,以Unix和C語言為代表)。

MIT流派認為設計一定得正確,接口一定得簡單,為了這兩點,實現層面復雜一點也沒關系。

而新澤西流派則反過來,認為簡單性比正確性更重要,尤其是實現的簡單性比接口簡單性更重要。

這帶來的結果就是:Unix和C語言具備簡單的結構,易于移植,運行時只需要很少的資源,雖然他們只能提供操作系統和編程語言50%~80%的功能,還是能夠像病毒一樣,瘋狂傳播。

因為Unix和C解決了痛點問題,大家可以輕松接受,并且由于實現的簡單性,很容易和別的平臺和軟件整合,用戶還會不斷修改它們,完善它們。

而Erlang,很抱歉,它是典型的MIT流派,這是個設計精巧、實現復雜的系統,一旦它不能滿足特定需求,想在保證正確性和簡單性的同時對它進行修改,非得是高人不可,這一點嚴重阻礙了Erlang的傳播。

那Erlang真的不好嗎?

不,這要看這要看誰在使用它,WhatsApp和Discord就是典型案例,在這里Erlang和Elixir發揮了極大的威力,遙遙領先競爭對手。

Paul Graham在《黑客與畫家》的“拒絕平庸”這一章也說過,他用一個小眾語言Lisp開發了一個電子商務的網站ViaWeb,利用Lisp強大的宏,定制出電子商務領域的DSL,讓Viaweb開發速度飛快,他們不斷推出新功能,讓那二三十個使用C語言和Perl的競爭對手目瞪口呆。

跟隨主流不會出錯,但是要想迅速脫穎而出,你得采用那些有點難度的但是生產力驚人的語言,從這個意義上來說,Erlang/Elixir很可能是擊敗普通人的秘密武器。

責任編輯:武曉燕 來源: 碼農翻身
相關推薦

2024-01-17 10:05:09

Python內省反射機制

2013-10-16 09:28:14

亞馬遜AWSSDN

2025-05-14 00:01:10

RxJS異步編程響應式

2023-09-25 15:29:44

Go并發Goroutines

2017-12-04 23:25:24

2013-10-16 09:33:36

亞馬遜AWSSDN

2015-08-11 09:18:44

程序員最好

2018-12-04 15:46:53

編程語言Python

2018-07-19 19:07:33

語言編程語言程序

2024-03-15 08:32:20

JavaScriptRust系統編程

2022-02-11 10:47:17

CIOIT團隊企業

2011-08-11 17:05:26

2014-01-07 10:46:39

2019-11-18 15:07:54

編程語言C#

2025-01-03 16:32:13

SpringBoot虛擬線程Java

2019-11-27 10:40:34

數據工具CIO

2023-05-08 14:54:00

AI任務HuggingGPT

2009-07-28 10:36:58

云計算Google秘密武器

2019-11-27 10:38:37

數據分析數據準備工具

2013-09-12 15:39:30

編程語言BANCStar
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品自拍视频 | 亚洲福利一区 | 欧美一级一区 | 中文字幕一区二区三区日韩精品 | 一级片免费视频 | 视频一区二区在线观看 | 欧美99| 日韩和的一区二在线 | 亚洲www啪成人一区二区 | 国产一区二区电影 | 日韩在线视频免费观看 | 美女日皮网站 | 蜜桃臀av一区二区三区 | 九久久| 99爱视频| 日本一区二区三区精品视频 | av网址在线 | 国产91视频免费 | 国产精品91网站 | 午夜小视频在线播放 | 日韩欧美精品在线 | 久久久999免费视频 999久久久久久久久6666 | 中文字幕在线观看视频一区 | 久久久久久国产精品mv | 日韩视频在线一区 | 91在线观看 | 羞视频在线观看 | 91人人澡人人爽 | 午夜精品福利视频 | 亚洲国产视频一区二区 | 天堂一区二区三区四区 | 91精品国产高清一区二区三区 | 亚洲成人www | 国产成人免费网站 | 日韩在线播放第一页 | 91精品国产麻豆 | 一级黄在线观看 | 99热精品在线观看 | 中国一级特黄毛片大片 | 黄色片网此 | 99热精品在线 |