Elixir能做的事Erlang不能,反之亦然?
这个问题是在Beam虚拟机及其提供的function的背景下进行的,而不是在图灵完备语言可以做的一般情况下。 我想投入一些时间来学习纯Erlang或Elixir。 我得到了两者之间的基本差异,我倾向于Elixir,因为macros,更好的语法和语言今天更快的发展。
我的问题是:如果我selectElixir,我会偶然发现一些我不能做的事情,但在Erlang可以做到吗? 我可以使用Elixir的所有OTP的东西,所有的Erlang库,代码重新加载等?
我不是要求两个人之间的偏好; 只是有关语言的可能性的事实。 最好从谁使用在生产的人。
只是序言 – 我只在生产中使用了Elixir而不是Erlang。
我会诚实地推荐药剂。 这是我的意见,不一定是你的权利,但下面我会列出我的理由为什么。
- 生产力:我来自Ruby / Rails背景,所以Elixir的语法和风格对我来说是非常熟悉的。 帮助我决定是否学习某种语言的主要因素之一是我可以如何高效地工作 – 主要是为什么我select了Ruby。 药剂是一样的。 我可以像Ruby一样快速地完成并发和模式匹配的所有优点。
- Erlang:由于Elixirbuild立在Erlang的基础之上,编译成erlang和beam vm,所以你可以访问每个erlang模块和包。 所以,如果你担心使用仙丹,并错过了Erlang的所有function,你不应该这样做。 Elixir甚至拥有自己的大部分更大的Erlang / OTPfunction,比如GenServer,GenEvent等。
- 社区/资源:药剂社区是一个很好的社区。 松弛的频道真的很受欢迎,也是很好的解决初学者问题的方法。 现在已经有了一些非常好的书籍(编程Elixir 1.2 – Dave Thomas,Ruby Pickaxe的作者),也使得进入语言变得非常简单。
真的,如果你和这两个人混在一起,你可能会得出同样的结论,Elixir是一个更好的语言,具有Erlang + More的所有function。 它还在上升,我不记得确切的数字,但我记得从hex网站(包pipe理器)读取一些关于包下载大大增加的东西。
因为你可以自由地从Erlang中调用Elixir的代码,所以你不应该在任何你可以做的事情上绊倒,反之亦然。 您甚至可以在一个项目中轻松混合Erlang和Elixir文件。
在药剂:
:erlang_module.erlang_function(args)
在Erlang:
'Elixir.ElixirModule':elixir_function(args)
TL; DR – 从Elixir开始
与Elixir相比,Erlang的学习曲线更陡峭。 一旦你开始学习Elixir,你将自动开始学习Erlang。 因此,从Elixir开始。 Elixir是用Erlang和Elixir写的。 请参阅Github上的发行版 (由于Elixir充满了macros命令,即元编程)。
您可以使用Elixir与Erlang,反之亦然,因此,完整的二十多年的Erlang生态系统的图书馆。
来自Erlang Solutions的更多细节
Elixir的“开箱即用”生产力是通过强调工具和expression数据操作的便利性来实现的。 Elixir和Erlang的系统devise是一样的,但Elixir删除了很多样板代码,并且更容易扩展。 样板的去除提高了工作效率,并使程序员能够更快地获得反馈 – 这对于您希望尽快将产品推向市场至关重要。 较less的样板也使快乐的开发人员,开心的开发人员是不成熟的开发人员。
乔·阿姆斯特朗的(Erlang发明家) 关于Elixir的博客文章
从这里开始学习Elixir – 入门
一旦你感觉良好,就练习练习和其他资源 。