2016-06-22 71 views
75

這個問題在Beam虛擬機及其提供的功能的上下文中,而不是在圖靈完備語言可以完成的一般上下文中。我想投入一些時間來學習純Erlang或Elixir。我得到了兩者之間的基本差異,我傾向於使用Elixir,因爲這一天的宏語法更好,語法更好,開發速度更快。Elixir能做的事Erlang不能,反之亦然?

我的問題是:如果我選擇了Elixir,我會偶然發現一些我不能做的事情,但在Erlang中可以做到嗎?我可以使用Elixir的所有OTP東西,所有Erlang庫,代碼重新加載等嗎?

我不是要求兩個人之間的偏好;只是關於語言可能性的事實。最好來自使用兩種生產的人。

+0

你可以用Elixir做任何事情,你可以用Erlang做什麼,但是有很多變量可以依靠你自己選擇,而這些變量只有你自己知道。 – JustMichael

+15

@hedgehog不是一個意見,事實。問題是「我的問題是如果我選擇Elixir,我會偶然發現一些我無法做到的事情,但是可以在Erlang中做到嗎?我可以使用Elixir所有的OTP工具,所有的Erlang庫,代碼重新加載等嗎?」答案是基於事實而不是意見。 –

+3

對於這個問題,答案是:在Ellang中你可以做的所有事情都可以在Elixir中完成。但標題表明,問題是你應該投資什麼,這裏的答案是「取決於」。您想做什麼?對於Web應用程序,Elixir更好,因爲它是爲了解決這個問題而創建的。對於某些分佈式系統,您可以找到Erlang優越的簡單性。缺乏功能往往是好事。只學習Erlang將幫助您專注於最重要的位:OTP。 – tkowal

回答

26

只是爲了序言 - 我只在生產中使用了Elixir,而不是Erlang。

我會誠實地推薦藥劑。這是我的意見,並不一定是適合你的,但下面我會列出我的理由。

  1. 生產力:我來自一個Ruby/Rails的背景,以藥劑語法和風格是什麼,對我來說很熟悉。幫助我確定是否學習語言的主要因素之一是我可以在其中學習多麼高效 - 主要是爲什麼我選擇了Ruby。藥劑是一樣的。我可以像Ruby一樣快速地工作,並且具有併發和模式匹配的所有優點。
  2. Erlang:由於Elixir建立在Erlang之上,編譯成erlang和beam vm,所以你可以訪問每個erlang模塊和包。所以如果你擔心使用靈丹妙藥並錯過Erlang的所有功能,你就不應該這樣做。 Elixir甚至擁有自己的大部分Erlang/OTP功能,比如GenServer,GenEvent等。
  3. 社區/資源:Elixir社區真的非常棒。閒暇頻道非常受歡迎,也是爲初學者提供答案的好方法。已經有一些關於該語言編寫的非常好的書籍(編程Elixir 1.2 - Ruby Pickaxe的作者Dave Thomas)也使得進入該語言非常容易。

真的,如果你對這兩者有一個混亂,你可能會做出同樣的決定,Elixir是一個更好的語言,具有Erlang + More的所有功能。它也在上升,我記不清確切的數字,但我記得從Hex網站(軟件包管理器)看到有關軟件包下載量大幅增加的內容。

+0

Elixir不會編譯成Erlang,它會編譯成BEAM代碼。 Elixir不類似於coffeescript,et。人。那只是寫JS。 –

51

你不應該因爲你可以在Erlang中自由地調用Elixir代碼而無法在另一箇中做任何事情,反之亦然。您甚至可以在一個項目中輕鬆混合Erlang和Elixir文件。

在藥劑:

:erlang_module.erlang_function(args) 

在二郎:

'Elixir.ElixirModule':elixir_function(args) 
23

TL; DR - Start with Elixir

二郎相比於藥劑更陡的學習曲線。一旦你開始學習Elixir,你將自動開始學習Erlang。因此,從Elixir開始。 Elixir是用Erlang和Elixir編寫的。 See distribution on Github(因爲Elixir充滿了宏編程元編程)。 Elixir Project Code distribution

您可以將Erixir與Erlang一起使用,反之亦然,因此擁有20多年圖書館的完整Erlang生態系統。從Erlang Solutions

藥劑的

更多細節「開箱即用」生產力是由於強烈的專注於數據處理的表達工具和便利性來實現的。 Elixir和Erlang的系統設計是相同的,但Elixir刪除了很多樣板代碼,並且更容易擴展。樣板的去除提高了生產力,並使程序員能夠更快地獲得反饋 - 這對於您希望儘快將產品推向市場至關重要。較少的樣板也可以讓開發人員感到開心,開心的開發人員也是一些不太高效的開發人員。

Joe Armstrong的(二郎發明人)blog post about Elixir

從這裏開始瞭解花好月圓 - Getting Started

一旦你覺得它很順利,你的工作方式向練球Exercismother resources