【大神來了】Elixir語言設(shè)計(jì)者José Valim:釋放Erlang VM的能量

原文鏈接:http://www.csdn.net/article/2015-10-27/2826040-Elixir-Jos%C3%A9Valim

Elixir是一種運(yùn)行于Erlang VM上的函數(shù)式、具有元編程特性的動態(tài)語言。它擁有靈活的語法和強(qiáng)大的宏系統(tǒng)吱殉,還具備模式匹配、通過協(xié)議(類似Clojure的方式)支持多態(tài)等功能瞎暑;繼承了Erlang的優(yōu)點(diǎn),尤其適合開發(fā)并行、分布式陡厘,以及高容錯應(yīng)用总寒。Erlang之父Joe Armstrong也對Elixir贊賞有加扶歪。日前,Elixir設(shè)計(jì)者José Valim接受了CSDN專訪摄闸,分享了他在設(shè)計(jì)這門語言時的感悟善镰。

Elixir設(shè)計(jì)者,Rails核心團(tuán)隊(duì)成員年枕,Plataformatec聯(lián)合創(chuàng)始人José Valim

語言成熟需待時間醞釀

CSDN:你設(shè)計(jì)Elixir的原因是什么炫欺,希望解決哪些問題?

José Valim:Erlang VM是種神奇的軟件熏兄,在過去十年中品洛,許多公司使用它編寫出了高并發(fā)、分布式和高容錯性軟件摩桶。Elixir的主要目標(biāo)是將Erlang VM通過另一種語法和另一套工具暴露給開發(fā)者桥状。

最終,我希望Elixir和Erlang將能共享相同的字節(jié)碼和數(shù)據(jù)類型硝清。這意味著開發(fā)者可以同時擁有Elixir的表達(dá)力岛宦,以及Erlang具備的高可靠性和高性能。

CSDN:Elixir的語法在很大程度上借鑒了Erlang和Ruby耍缴,為什么你沒有選擇一種更激進(jìn)的變化砾肺?

José Valim:在Elixir設(shè)計(jì)初期挽霉,我知道自己需要Elixir具備宏系統(tǒng),這是從Lisp中得到的啟發(fā)变汪。對于宏系統(tǒng)侠坎,只有在一種編程語言的語法能通過它自身的數(shù)據(jù)結(jié)構(gòu),以一種很直接的方式表達(dá)的情況下才合理裙盾。帶著這個目標(biāo)实胸,我設(shè)計(jì)了一種非常簡潔的語法,而后逐步增加層次番官,這部分靈感大多來自Ruby和Erlang中的慣用法庐完。

由于Elixir的目的是增強(qiáng)Erlang,所以我在做設(shè)計(jì)決定時經(jīng)常向Erlang的語法和語義靠攏徘熔,這樣就可以幫助開發(fā)者更好地融入生態(tài)圈门躯。

CSDN:我們知道一種語言的成熟可能需要經(jīng)歷漫長的過程。在設(shè)計(jì)的過程中酷师,哪些部分你用心最多讶凉?

José Valim:設(shè)計(jì)一種編程語言,對耐心的考驗(yàn)比努力更多山孔。首先你需要明確一系列目標(biāo)懂讯,然后在你希望語言發(fā)展的方向上寬廣地推進(jìn),給你自己和語言都留出更多時間台颠,然后觀察這些目標(biāo)之間如何演進(jìn)與調(diào)和褐望。

倘若你試圖一蹴而就,或者不對未來做打算串前,不為演進(jìn)留出空間譬挚,就將得到一種不一致的語言——也許能實(shí)現(xiàn)所有目標(biāo),但這些目標(biāo)之間卻齟齬相抵酪呻。

CSDN:請給我們詳細(xì)談?wù)凟lixir的設(shè)計(jì)目標(biāo)。

José Valim:Elixir的設(shè)計(jì)目標(biāo)可以概括為兼容性盐须、高效率和擴(kuò)展性這幾部分玩荠。

之前已談到兼容Erlang VM是Elixir的目標(biāo)之一,當(dāng)我們談到Erlang這個詞贼邓,可以將它分解為下面三部分:

一種函數(shù)式編程語言Erlang阶冈;

一系列設(shè)計(jì)原則,稱為OTP塑径;

Erlang虛擬機(jī)女坑,稱為EVM或BEAM。

Elixir與Erlang運(yùn)行在同一種虛擬機(jī)上统舀,并兼容OTP匆骗。不僅如此劳景,所有Erlang生態(tài)系統(tǒng)中使用的工具和庫,Elixir也能使用碉就,因?yàn)樵贓rlang中調(diào)用Elixir沒有任何性能代價盟广,反過來也是如此。

所有Elixir代碼在輕量級進(jìn)程中運(yùn)行瓮钥,包含自己的狀態(tài)筋量,用于彼此交換信息。Erlang VM將這些進(jìn)程分配到多個處理器核心中碉熄,使代碼可以輕松地并行執(zhí)行桨武。

如果你編譯Elixir代碼,會發(fā)現(xiàn)CPU中的所有核心都在開動锈津。當(dāng)像Parallella這種技術(shù)變得更容易獲取且成本更低廉時呀酸,你很難忽視Erlang VM所能提供的強(qiáng)大能力。未來Erlang VM將會被用來搭建能永久運(yùn)行一姿、能自我修復(fù)和擴(kuò)展的系統(tǒng)七咧。

效率很難測量,能高效開發(fā)桌面應(yīng)用的編程語言卻可能在數(shù)學(xué)運(yùn)算領(lǐng)域捉襟見肘叮叹,它與你期望從事的領(lǐng)域艾栋、生態(tài)圈中的可用工具,以及是否能方便地創(chuàng)造和擴(kuò)展這些工具有關(guān)蛉顽。

基于這種原因蝗砾,我們選擇了簡約的語言核心。在許多編程語言中携冤,if悼粮、case、try這些關(guān)鍵詞都需要專門的語法分析器曾棕,而Elixir中只有宏扣猫。這樣做的好處之一是,開發(fā)者可以自己擴(kuò)展語言翘地,以適應(yīng)他們自己的工作領(lǐng)域申尤。宏還是Elixir元編程的構(gòu)建基礎(chǔ):具備通過代碼生成代碼的能力,令開發(fā)者能擺脫煩瑣的工作衙耕,創(chuàng)造出更強(qiáng)大的工具昧穿。

宏也對語法有巨大的影響,前面已經(jīng)提到橙喘。盡管許多關(guān)于語言的話題一開始就會討論語法时鸵,但在Elixir身上,從未將“簡單地提供另一種不同語法”作為它的目標(biāo)厅瞎。

盡管基于簡潔的語言核心饰潜,開發(fā)者可以構(gòu)建和擴(kuò)展針對自己領(lǐng)域的語言初坠。但Elixir還繼承了擅長并行和分布式應(yīng)用的特點(diǎn)。在這些領(lǐng)域囊拜,Elixir補(bǔ)充了下面一些標(biāo)準(zhǔn)庫:

Unicode字符串和相應(yīng)的操作某筐;

強(qiáng)大的單元測試框架;

更多數(shù)據(jù)類型冠跷;

多態(tài)記錄南誊;

嚴(yán)格和惰性枚舉API;

便于腳本操作的函數(shù)蜜托,例如路徑和文件系統(tǒng)抄囚;

一些用于編譯和測試Elixir代碼的項(xiàng)目管理工具。

此外橄务,還有更多庫幔托、模塊、協(xié)議等便于擴(kuò)展的特性蜂挪。

以源碼為良師

CSDN:你都是通過哪些方式提高編程技能重挑?

José Valim:我的閱讀量很大。既讀書棠涮,也閱讀其他開發(fā)者的代碼谬哀。我覺得每個人都不應(yīng)該畏懼自己所使用項(xiàng)目的源代碼。當(dāng)然严肪,我也通過在現(xiàn)實(shí)問題中實(shí)踐來提高自己史煎。

CSDN:Elixir的名字有典故嗎?

José Valim:我很希望有驳糯,不過很可惜篇梭,這個名字其實(shí)沒有特別的出處。

CSDN:Elixir已足夠成熟酝枢,可以用于生產(chǎn)環(huán)境嗎恬偷?

José Valim:Elixir確實(shí)已可以用于生產(chǎn)環(huán)境了,已有開發(fā)者和公司將它應(yīng)用到了產(chǎn)品中帘睦。不過袍患,Elixir社區(qū)的發(fā)展速度很快,所以開發(fā)者還需要跟上語言發(fā)展的步伐官脓。

CSDN:在設(shè)計(jì)和發(fā)展Elixir的過程中,你有哪些經(jīng)驗(yàn)可以與讀者分享涝焙?

José Valim:我最喜歡的一條建議是“Use the source, Luke!”(《星球大戰(zhàn)》中的一句話)卑笨。閱讀你所使用的工具和項(xiàng)目的源代碼會讓你變成更好的程序員,也會讓你更好地理解它們仑撞,還會讓你對在社區(qū)中貢獻(xiàn)更近一步赤兴。公開軟件的源代碼是一件美好的事情妖滔,它曾經(jīng)(也依然)是我最重要的老師。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桶良,一起剝皮案震驚了整個濱河市座舍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陨帆,老刑警劉巖曲秉,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疲牵,居然都是意外死亡承二,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門纲爸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亥鸠,“玉大人,你說我怎么就攤上這事识啦「何茫” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵颓哮,是天一觀的道長家妆。 經(jīng)常有香客問我,道長题翻,這世上最難降的妖魔是什么揩徊? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮嵌赠,結(jié)果婚禮上塑荒,老公的妹妹穿的比我還像新娘。我一直安慰自己姜挺,他們只是感情好齿税,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炊豪,像睡著了一般凌箕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上词渤,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天牵舱,我揣著相機(jī)與錄音,去河邊找鬼缺虐。 笑死芜壁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慧妄,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼顷牌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了塞淹?” 一聲冷哼從身側(cè)響起窟蓝,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饱普,沒想到半個月后运挫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费彼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年滑臊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箍铲。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡雇卷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颠猴,到底是詐尸還是另有隱情关划,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布翘瓮,位于F島的核電站贮折,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏资盅。R本人自食惡果不足惜调榄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呵扛。 院中可真熱鬧每庆,春花似錦、人聲如沸今穿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓝晒。三九已至腮出,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芝薇,已是汗流浹背胚嘲。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洛二,地道東北人馋劈。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓立倍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侣滩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容