自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

世界上最低調(diào)的編程語言,高并發(fā)的王者,程序員翻身的秘密武器!

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

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

一般的系統(tǒng),實現(xiàn)5個9,即一年停機5分鐘已經(jīng)相當(dāng)不錯了,9個9意味著20年的運行時間內(nèi)只有0.631秒的停機時間。

實現(xiàn)這個奇跡的關(guān)鍵就是愛立信發(fā)明的編程語言Erlang。

圖片圖片

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

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

圖片圖片

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

01起源

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

最早的時候,愛立信只想找到一個語言,更好地構(gòu)建下一代電信系統(tǒng)。

Joe Armstrong等人拿著一個大“篩子”,把20多種語言“篩來篩去”, 標(biāo)準(zhǔn)是:

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

2.為了支持高可用的電信系統(tǒng),在語言層面就得支持并發(fā)和錯誤恢復(fù)

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

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

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

圖片圖片

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

進程可以是分布式的,可以跨越網(wǎng)絡(luò)來互相發(fā)送消息,添加服務(wù)器就可以輕松擴展。

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

圖片圖片

02艱難發(fā)展

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

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

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

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

圖片圖片

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

圖片圖片

1995年,Erlang終于迎來了轉(zhuǎn)機。

愛立信公司計劃開發(fā)新一代的交換機產(chǎn)品,以分組交換形式進行語音、數(shù)據(jù)和各種寬帶服務(wù)的通信。

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

這時候,大家想到了Erlang,死馬當(dāng)做活馬醫(yī),用它來救場吧。

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

有意思的是,這么優(yōu)秀的編程語言,愛立信竟然把它禁掉了,禁止內(nèi)部使用!

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

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

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

Erlang離開了電信領(lǐng)域,進入廣闊的互聯(lián)網(wǎng)市場。

03大放異彩

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

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

于是他拉來了雅虎的同事Brian Acton一起干,互聯(lián)網(wǎng)用戶的特點那就是用戶數(shù)極多,并發(fā)數(shù)極高,兩人經(jīng)過研究,發(fā)現(xiàn)Erlang簡直就是處理大規(guī)模消息的不二之選,后臺開發(fā)就它了!

2009年1月,WhatsApp誕生。

圖片圖片

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

圖片圖片

2014年,F(xiàn)acebook斥資190億美元收購了一個叫做WhatsApp的軟件,震驚業(yè)界。

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

但是,讓人吃驚的是,WhatsApp只有32名工程師,負(fù)責(zé)服務(wù)器后端開發(fā)的程序員只有10人。

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

04向Web進軍

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

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

Jose Valim是Ruby on Rails的核心開發(fā)人員,深受Ruby社區(qū)的影響。

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

圖片圖片

圖片圖片

以Elixir為基礎(chǔ),Jose Valim等人還開發(fā)了一個新的Web框架Phoenix,方便程序員使用Elixir進行Web應(yīng)用的開發(fā)。

許多創(chuàng)業(yè)公司使用了Elixir和Phoenix快速構(gòu)建應(yīng)用,尤其是高并發(fā),實時的應(yīng)用,其中最著名的是Discord。

圖片圖片

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

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

05Erlang為什么不流行?

看到這里,你腦海中很可能會浮現(xiàn)這個問題:

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

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

大佬說軟件設(shè)計有四個目標(biāo):簡單性,正確性,一致性,完整性。

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

MIT流派認(rèn)為設(shè)計一定得正確,接口一定得簡單,為了這兩點,實現(xiàn)層面復(fù)雜一點也沒關(guān)系。

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

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

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

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

那Erlang真的不好嗎?

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

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

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

責(zé)任編輯:武曉燕 來源: 碼農(nóng)翻身
相關(guān)推薦

2024-01-17 10:05:09

Python內(nèi)省反射機制

2017-12-04 23:25:24

2013-10-16 09:28:14

亞馬遜AWSSDN

2023-09-25 15:29:44

Go并發(fā)Goroutines

2018-12-04 15:46:53

編程語言Python

2015-08-11 09:18:44

程序員最好

2018-07-19 19:07:33

語言編程語言程序

2013-10-16 09:33:36

亞馬遜AWSSDN

2019-11-18 15:07:54

編程語言C#

2024-03-15 08:32:20

JavaScriptRust系統(tǒng)編程

2022-02-11 10:47:17

CIOIT團隊企業(yè)

2014-01-07 10:46:39

2011-08-11 17:05:26

2025-01-03 16:32:13

SpringBoot虛擬線程Java

2013-09-12 15:39:30

編程語言BANCStar

2025-03-13 00:35:00

2024-07-15 09:06:51

2009-07-28 10:36:58

云計算Google秘密武器

2019-11-27 10:38:37

數(shù)據(jù)分析數(shù)據(jù)準(zhǔn)備工具

2023-05-08 14:54:00

AI任務(wù)HuggingGPT
點贊
收藏

51CTO技術(shù)棧公眾號