这个问题是在Beam VM及其提供的功能的背景下,而不是图灵完整语言可以做的一般上下文。我想投入一些时间来学习纯Erlang或Elixir。我得到了两者之间的基本差异,我倾向于Elixir因为今天的语言更好,语法更好,语言更快。
我的问题是:如果我选择Elixir,我会偶然发现我不能做的事情,但可以在Erlang中做些什么吗?我可以使用Elix的所有OTP内容,所有Erlang库,代码重新加载等吗?
我并不是要求两者之间有人偏好;关于语言可能性的事实。最好是在生产中同时使用它们的人。
答案 0 :(得分:61)
你不应该偶然发现任何你不能在另一个中做的事,因为你可以从Erlang中自由地调用Elixir代码,反之亦然。您甚至可以在一个项目中轻松混合Erlang和Elixir文件。
在Elixir:
:erlang_module.erlang_function(args)
在Erlang中:
'Elixir.ElixirModule':elixir_function(args)
答案 1 :(得分:35)
仅作序言 - 我只在生产中使用Elixir而不是Erlang。
我会诚实地推荐Elixir。这是我的意见,并不一定适合你,但下面我会列出我的原因。
真的,如果你对这两者感到困惑,你可能会得出同样的决定,即Elixir是一种更好的语言,具有Erlang + More的所有功能。它也在崛起,我无法记住确切的数字,但我记得从Hex网站(包管理器)那里读到了关于包下载量大幅增加的内容。
答案 2 :(得分:30)
TL; DR - Start with Elixir
与Elixir相比,Erlang的学习曲线更为陡峭。一旦你开始学习Elixir,你将自动开始学习Erlang。因此,从Elixir开始。 Elixir是用Erlang和Elixir编写的。 See distribution on Github(因为Elixir充满了宏,即元编程)。
您可以将Elixir与Erlang一起使用,反之亦然,因此可以使用20多年图书馆的完整Erlang生态系统。
的更多详情Elixir的“开箱即用”生产力是通过强烈关注工具和表达数据操作的便利来实现的。 Elixir和Erlang中的系统设计是相同的,但Elixir删除了大量样板代码并且更容易扩展。删除样板提高了工作效率,并允许程序员更快地获得反馈 - 当您希望尽快将产品推向市场时至关重要。较少的样板也可以让开发人员感到高兴,而开心的开发人员也是非常高效的开发人员。
Joe Armstrong(Erlang发明者)blog post about Elixir
从这里开始了解Elixir - Getting Started
一旦您感觉良好,请按照Exercism和other resources的方式练习。
答案 3 :(得分:2)
有几件事。我认为您无法在Elixir中创建递归anon函数。公平地说,在Erlang的8年以上的时间里,我认为我不需要做任何事情,而且如果我做到了,则可以通过其他方式轻松完成。老实说,您可能还忽略了其他一些事情。
通常,对于大多数人关心的事情,您可以在Erlang中进行,而在Elixir中则可以,反之亦然。长生不老药方面的社区似乎更活跃,所以我建议从那里开始。我最近从Erlang转到了Elixir,除了Proper中的一些奇特的东西外,我可以说这是一个非常容易的过渡