欢迎来到孕宝购,让您更懂孕婴代购知识

设置首页|添加收藏|保存桌面|网站地图xml

基于Erlang VM的函数式编程语言Elixir

海淘攻略

文章浏览阅读47次。Elixir官网:http://elixir-lang.org/Elixir是一种函数式动态语言,用于构建可伸缩、易维护的应用程序。

Elixir 官方网站:

Elixir 是一种用于构建可扩展、可维护应用程序的函数式动态语言。

Elixir 基于 Erlang VM,它以运行低延迟、分布式、容错系统而闻名,并成功用于 Web 开发和嵌入式软件领域。

1. 平台特点 1.1 可扩展性

所有 Elixir 代码都在独立的轻量级线程中运行,这些线程通过消息相互通信:

parent = self()
# Spawns an Elixir process (not an operating system one!)
spawn_link(fn ->
  send parent, {:msg, "hello world"}
end)
# Block until the message is received
receive do
  {:msg, contents} -> IO.puts contents
end

语言恶劣的意思_elixir语言_语言恶劣的文章怎么写

1.2 容错

关于生产中运行的软件,有一个不可避免的事实:事情总是会出错,而网络、文件系统和其他第三方资源的问题会使问题变得更加复杂。

为了处理各种故障,Elixir 提供了主管 - 当出现问题时如何重新启动系统的各个部分,以回到已知正常工作的初始状态的描述:

import Supervisor.Spec
children = [
  supervisor(TCP.Pool, []),
  worker(TCP.Acceptor, [4040])
]
Supervisor.start_link(children, strategy: :one_for_one)

2. 语言特性 2.1 函数式编程

函数式编程改善了编码风格,帮助开发人员编写简短、快速且易于维护的代码。例如,模式匹配允许开发人员轻松构造数据并访问其内容:

%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语言_语言恶劣的文章怎么写_语言恶劣的意思

2.2 可扩展性和领域特定语言 (DSL) 功能支持

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 选项允许测试并行运行,从而充分利用尽可能多的 CPU 核心,而断言可以自省您的代码,提供强大的故障报告功能。这些功能是使用 Elixir 宏构建的,因此可以添加作为语言本身一部分而存在的新构造。

3. 工具 3.1 发展中的生态系统

Elixir 附带了一整套工具来简化开发。Mix 是一个构建工具,可以轻松创建项目、管理任务、运行测试等:

$ mix new my_app
$ cd my_app
$ mix test
.
Finished in 0.04 seconds (0.04s on load, 0.00s on tests)
1 tests, 0 failures

Mix 还可以管理依赖项 - 这是通过与 Hex 包管理器集成实现的,它提供依赖项解析和远程包获取功能。

3.2 交互式开发

elixir语言_语言恶劣的文章怎么写_语言恶劣的意思

诸如 IEx(Elixir 的交互式 shell)之类的工具提供了语言和平台功能,例如自动完成、调试工具、代码重新加载和格式良好的文档:

$ 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

3.3 Erlang 兼容性

Elixir 在 Erlang VM 上运行,让开发人员可以完全访问 Erlang 生态系统,Heroku、Whatsapp、Klarna、Basho 等公司也使用它来构建分布式容错应用程序。Elixir 程序员可以调用 Erlang 函数而无需任何运行时开销:

iex> :crypto.md5("Using crypto from Erlang OTP")
<<192,223,75,115,...>>