vlambda博客
学习文章列表

[elixir与erlang的简单比较]

[简介]

    Elixir 的设计目标是,让 Erlang VM 有更高的可扩展性,更高的生产力,同时保持跟 Erlang 生态圈的兼容性。为完成这一目标,它允许在 Elixir 代码中使用 Erlang 库,反之亦然 。


[安装]

    安装elixir的时候,与erlang版本有限制, 比如目前使用的是otp19,然后安装elixir 1.12, 这样会有兼容性问题,  后面继续安装了elixir 1.5 ,这样就可以正常启动了。


[与erlang的比较]

从上面可以大概看出,与erlang的使用差不多,熟悉erlang语言的朋友应该可以很快上手使用elixir了。


  • 特点

    • elixir跟erlang都是抢占式调度,actor模型,都有监控树,热更新,函数式编程,模式匹配,软实时等等。这里还有个概念软实时,为什么是软实时呢?首先它们都是抢占式调度的,意味着每个进程都是公平调度的。然后,它们的GC都是针对每个进程的,每次GC只用收集很小数量的对象,不用STW,最后,BIF使用trap机制保证公平,BIF是使用这个机制可以保证宿主进程(即调用进程)能随时被抢占。

  • 特性

    • (错误处理)elixir 错误处理的方式是对可预期的错误,尽可能处理它;对不可预期的错误,直接崩溃, 而erlang可能会直接崩溃。

    •  (元编程)elixir在语法级别支持,另外还有dsl扩展(这个没去研究)

  • 性能

    • elixir跟erlang差不太多

  • 语法

    • 有人认为elixir更友好(这个见仁见智了), 支持管道方式的语法,比如a(b(c))这种可以写成
              c |> b |> a
      从工具链讲,elixir可能更友好,elixir有mix,erlang有rebar,据说mix强过rebar


以上就是对erlang与elixir的简单比较了,没有深入的讨论过多细节。感兴趣的朋友可以自己去安装一个玩玩。