是否有 Elixir 可以做而 Erlang 不能做的事情,或者反之亦然?

问题描述 投票:0回答:4

这个问题是在 Beam VM 及其提供的功能的背景下提出的,而不是在图灵完备语言可以做什么的一般背景下提出的。我想花一些时间学习纯 Erlang 或 Elixir。我了解了两者之间的基本差异,并且由于目前该语言的宏、更好的语法和更快的开发,我倾向于 Elixir。

我的问题是:如果我选择 Elixir,我会不会偶然发现一些我在 Elixir 中做不到但在 Erlang 中可以做的事情?我可以在 Elixir 中使用所有 OTP 内容、所有 Erlang 库、代码重新加载等吗?

我并不是在询问某人在两者之间的偏好;只是关于语言可能性的事实。最好来自在生产中使用过这两种方法的人。

erlang elixir erlang-otp beam
4个回答
77
投票

你不应该偶然发现你可以在一个中做而在另一个中不能做的事情,因为你可以从 Erlang 中自由调用 Elixir 代码,反之亦然。您甚至可以轻松地在一个项目中混合 Erlang 和 Elixir 文件。

在长生不老药中:

:erlang_module.erlang_function(args)

在 Erlang 中:

'Elixir.ElixirModule':elixir_function(args)

51
投票

TL;DR - 从 Elixir 开始

与 Elixir 相比,Erlang 的学习曲线更陡峭。一旦你开始学习 Elixir,你就会自动开始学习 Erlang。因此,从 Elixir 开始。 Elixir 是用 Erlang 和 Elixir 编写的。 查看 Github 上的分布(因为 Elixir 充满了宏,又名元编程)。 Elixir Project Code distribution

您可以将 Elixir 与 Erlang 一起使用,反之亦然,从而形成拥有 20 多年库的完整 Erlang 生态系统。

来自Erlang Solutions

的更多详细信息

Elixir 的“开箱即用”生产力是通过高度关注工具和数据操作表达的便利性来实现的。 Elixir 和 Erlang 的系统设计是相同的,但 Elixir 删除了很多样板代码并且更容易扩展。消除样板文件可以提高生产力,并使程序员能够更快地获得反馈——当您希望尽快将产品推向市场时,这一点至关重要。更少的样板文件也会让开发人员感到快乐,而快乐的开发人员无疑是高效的开发人员。

Joe Armstrong(Erlang 发明者)关于 Elixir 的博客文章

从这里开始了解 Elixir - 入门

一旦您感觉进展顺利,就开始练习锻炼其他资源


46
投票

作为序言 - 我只在生产中使用过 Elixir,而不是 Erlang。

我真诚地推荐 Elixir。这是我的观点,不一定适合您,但下面我将列出我的理由。

  1. 生产力:我有 Ruby/Rails 背景,所以 Elixir 语法和风格对我来说非常熟悉。帮助我决定是否学习一门语言的主要因素之一是我在这门语言中的生产力如何——这也是我选择 Ruby 的原因。灵丹妙药也是一样。我可以像使用 Ruby 一样快速地工作,并且具有并发性和模式匹配的所有附加好处。
  2. Erlang:由于 Elixir 构建在 Erlang 之上并编译为 erlang 和 beam vm,因此您可以访问每个 erlang 模块和包。因此,如果您担心使用 Elixir 并错过 Erlang 的所有功能,那么您不应该担心。 Elixir 甚至拥有自己的大多数 Erlang/OTP 功能的实现,例如 GenServer、GenEvent 等。
  3. 社区/资源:Elixir 社区确实是一个很棒的社区。 Slack 频道非常受欢迎,也是获得初学者问题答案的好方法。已经有一些关于该语言的非常好的书籍(Programming Elixir 1.2 - Dave Thomas,Ruby Pickaxe 的作者)也让学习该语言变得非常容易。

真的,如果你对这两者感到困惑,你可能会做出同样的决定,即 Elixir 是一种更好的语言,具有 Erlang + More 的所有功能。它也在上升,我不记得确切的数字,但我记得从 Hex 网站(包管理器)上读过一些关于包下载量大幅增加的内容。


9
投票

有几件事。我认为你不能在 Elixir 中创建递归匿名函数。公平地说,在使用 Erlang 8 年多的时间里,我认为我不需要这样做,如果我这样做了,也可以通过其他方式轻松完成。老实说,可能还有其他一些类似的事情您可以忽略。

一般来说,对于大多数人关心的事情,你可以在 Erlang 中完成,你也可以在 Elixir 中完成,反之亦然。 Elixir 方面的社区似乎更活跃,所以我建议从那里开始。我最近从 Erlang 迁移到 Elixir,除了 Proper 中的一些奇特的东西之外,我可以说这是一个非常简单的过渡

© www.soinside.com 2019 - 2024. All rights reserved.