Erlang和Elixir简介

Elixir是一种快速,动态和可扩展的语言,已Swift被初创企业人群和已建立企业的生产应用所采用。

仅举几例,Pinterest,Brightcove,Discord和Canvas都在Elixir上运行,而Elixir又利用了低延迟,容错的Erlang VM,这意味着可以完全访问Heroku,WhatsApp,克拉纳和芭蕉。

从本教程开始,您将学习基础知识,以开始使用Erlang和Elixir编码。

语法是什么样的?

该语法具有功能性,并促进了简短,快速的编码风格,使用户可以轻松抽象其数据:

%User{name: name, age: age} = User.get("John Doe")
name #=> "John Doe"

卫兵结合使用时,我们拥有强大的结构:

def serve_drinks(%User{age: age}) when age >= 21 do
  # Code that serves drinks!
end

serve_drinks User.get("John Doe")
#=> Fails if the user is under 21

可以缩放吗?

肯定的 ; Elixir在构建时就考虑了可扩展的分布式系统。

在多个进程可以通过消息相互通信的环境中,Elixir具有线程执行(称为进程)的功能。

这些轻量级线程可以同时运行数十万个线程 。 Elixir出色的垃圾收集器可用于每个隔离线程,从而确保在整个系统范围内实现最佳性能,并防止资源锁定。

容错能力

Elixir具有Supervisors ,可以在出现问题时重新启动系统的某些部分,并将系统还原到已知可以正常工作的初始状态。

如何获得长生不老药

在我们继续之前,请在您的机器上安装Elixir:

Mac OS X

  • 家酿
    • 将您的自制软件更新到最新: brew update
    • 运行: brew install elixir
  • 麦克波特
    • 运行: sudo port install elixir

Unix(和类Unix)

  • Arch Linux(社区存储库)
    • 运行: pacman -S elixir
  • openSUSE(和SLES 11 SP3 +)
    • 添加Erlang开发仓库: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • 运行: zypper in elixir
  • Gentoo
    • 运行: emerge --ask dev-lang/elixir
  • GNU Guix
    • 运行: guix package -i elixir
  • Fedora 21(及更早版本)
    • 运行: yum install elixir
  • FreeBSD
    • 从端口: cd /usr/ports/lang/elixir && make install clean
    • 在pkg中: pkg install elixir
  • Ubuntu 12.04和14.04 / Debian 7
    • 添加Erlang Solutions仓库: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
    • 运行: sudo apt-get update
    • 安装Erlang / OTP平台及其所有应用程序: sudo apt-get install esl-erlang
    • 安装Elixir: sudo apt-get install elixir

视窗

  • Web安装程序
  • 巧克力味
    • cinst elixir

互动发展

Elixir具有交互模式 ,我们可以通过命令行提示符进行访问,如下所示:

$ iex
Interactive Elixir - press Ctrl+C to exit (type h() ENTER for help)
iex> c "my_file.ex"        # Compiles a file
iex> t Enum                # Prints types defined in the module Enum
iex> h IEx.pry             # Prints the documentation for IEx pry functionality
iex> i "Hello, World"      # Prints information about the given data type

Windows用户将需要运行 iex.bat 来访问交互式控制台。

进入此模式时,我们可以键入任何Elixir代码并立即获得返回值,因此对于开始学习该语言非常有用。

让我们做一些基本的表达:

ie> 2 + 2
4
ie> round(3.58)
4
iex> "hello" <> " world"
"hello world"

运行脚本时,我们从shell终端执行以下操作:

$ elixir scriptName.exs

要从脚本输出到终端,我们需要使用以下IO类:

IO.puts "Hello world from Elixir"

那么模块呢?

Elixir提供了模块,因此开发人员可以通过多种方式扩展语言。

这是使用Elixir的测试框架ExUnit的示例

defmodule MathTest do
  use ExUnit.Case, async: true

  test "can add two numbers" do
    assert 1 + 1 == 2
  end
end

您可以通过设置async: true并行运行测试。 在此设置中,Elixir使用尽可能多的CPU内核。

同时, assert可以检查代码中的断言失败。 这些功能是使用Elixir宏构建的,因此可以像将其作为Elixir语言本身的一部分一样添加整个新结构,这意味着可以针对您可能需要的生产力(在这种情况下进行单元测试)进行完全自定义。

还有更多!

Elixir是一种功能强大且用途广泛的语言,目前已被世界上一些最大的应用程序使用。 Supervisor具有快速的编译时间,轻量级的线程处理,DSL模块的可扩展性以及容错能力,因此它是任何认真的Web开发团队的理想选择。 显然,当Elixir被充分利用时,将会取得巨大的收益。

在下一部分中,我们将继续介绍Elixir的可用数据类型以及如何编写更多代码,最后将开始进行编译!

翻译自: https://code.tutsplus.com/tutorials/introduction-to-erlang-and-elixir--cms-27509

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值