Ulisses Almeida是Plataformatec软件公司的资深程序员、咨询师,该公司是Elixir的发明者。Ulisses Almeida is a software consultant at Plataformatec, the company that created Elixir. He works on crafting applications, coaching beginner developers, and advising customers on best practices to build robust and maintainable systems.
自我的上一本译作《Elixir程序设计》出版已经过去了三年。Elixir也从1.2版本更新到了1.10版本。官方一直保持着每半年更新一个大版本的节奏。在这些更新版本中,有关语法的变化越来越少,针对库、工具链、使用体验、性能的更新越来越多,特别是1.9版本,Jos Valim声称Release是最后一个计划中的特性。我真为Elixir的日臻完善而感到高兴。
很多人把Elixir比作Erlang平台的Ruby。诚然,Elixir的作者和贡献者从Ruby身上借用了许多设计。Ruby的编程体验可以说是令人惊艳的,其动态、简洁、元编程都是Java、Golang、Python这些同时的编程语言所不具备的。当然,Ruby在性能和并发编程方面也有不足。Elixir选择将其基座造在BEAM(Erlang VM)之上,BEAM以9个9的可用性(31毫秒年的宕机时间)而著称。就并发而言,Actor模型曾经是Erlang的优势之一,但今天Rust的Actix和Java的Vert.x性能测评甚至比Erlang还要好。Erlang的真正优势在于抢占式调度带来的低延时和软实时性。Elixir的设计目标是更高的可扩展性、更高的生产力,同时保持跟Erlang生态圈的兼容性。
Elixir的官方定义为:一种用于构建可伸缩、可维护应用的动态、函数式编程语言(Elixir is a dynamic, functional language designed for building scalable and maintainable applications.)。下面我们就来谈谈Elixir与众不同的地方。
相比于大家熟悉的面向对象编程(OOP),函数式编程(FP)更强调程序执行的结果而不是过程,它倡导利用若干简单的执行单元渐进地、逐层地完成运算,而不是设计一个复杂的执行过程。每个函数的执行结果只依赖于函数的参数,而不受其他数据的影响。严格的函数式语言要求函数必须无副作用。