这个问题是在 Beam VM 及其提供的功能的背景下提出的,而不是在图灵完备语言可以做什么的一般背景下提出的。我想花一些时间学习纯 Erlang 或 Elixir。我了解了两者之间的基本差异,并且由于目前该语言的宏、更好的语法和更快的开发,我倾向于 Elixir。
我的问题是:如果我选择 Elixir,我会不会偶然发现一些我在 Elixir 中做不到但在 Erlang 中可以做的事情?我可以在 Elixir 中使用所有 OTP 内容、所有 Erlang 库、代码重新加载等吗?
我并不是在询问某人在两者之间的偏好;只是关于语言可能性的事实。最好来自在生产中使用过这两种方法的人。
你不应该偶然发现你可以在一个中做而在另一个中不能做的事情,因为你可以从 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 充满了宏,又名元编程)。
您可以将 Elixir 与 Erlang 一起使用,反之亦然,从而形成拥有 20 多年库的完整 Erlang 生态系统。
的更多详细信息Elixir 的“开箱即用”生产力是通过高度关注工具和数据操作表达的便利性来实现的。 Elixir 和 Erlang 的系统设计是相同的,但 Elixir 删除了很多样板代码并且更容易扩展。消除样板文件可以提高生产力,并使程序员能够更快地获得反馈——当您希望尽快将产品推向市场时,这一点至关重要。更少的样板文件也会让开发人员感到快乐,而快乐的开发人员无疑是高效的开发人员。
Joe Armstrong(Erlang 发明者)关于 Elixir 的博客文章
从这里开始了解 Elixir - 入门
作为序言 - 我只在生产中使用过 Elixir,而不是 Erlang。
我真诚地推荐 Elixir。这是我的观点,不一定适合您,但下面我将列出我的理由。
真的,如果你对这两者感到困惑,你可能会做出同样的决定,即 Elixir 是一种更好的语言,具有 Erlang + More 的所有功能。它也在上升,我不记得确切的数字,但我记得从 Hex 网站(包管理器)上读过一些关于包下载量大幅增加的内容。
有几件事。我认为你不能在 Elixir 中创建递归匿名函数。公平地说,在使用 Erlang 8 年多的时间里,我认为我不需要这样做,如果我这样做了,也可以通过其他方式轻松完成。老实说,可能还有其他一些类似的事情您可以忽略。
一般来说,对于大多数人关心的事情,你可以在 Erlang 中完成,你也可以在 Elixir 中完成,反之亦然。 Elixir 方面的社区似乎更活跃,所以我建议从那里开始。我最近从 Erlang 迁移到 Elixir,除了 Proper 中的一些奇特的东西之外,我可以说这是一个非常简单的过渡