logo

本网站使用 cookies 我们使用 cookies 来个性化您的体验,并了解我们表现最好的内容。我们还会与我们的社交媒体、广告和分析合作伙伴分享关于您使用我们网站的匿名信息,他们可能会将其与您提供给他们的其他信息或他们通过您使用其服务收集的信息结合起来。要获取更多详细信息、修改或随时撤回您的同意,请访问 我们的 cookie 政策。 同意选择 必要 偏好 统计 营销 显示详情 详情

跨域同意[#BULK_CONSENT_DOMAINS_COUNT#] [#BULK_CONSENT_TITLE#] 您的同意所适用的域名列表:[#BULK_CONSENT_DOMAINS#] Cookie 声明上次更新时间:2025 年 5 月 4 日,由 Cookiebot [#IABV2_TITLE#] [#IABV2_BODY_INTRO#] [#IABV2_BODY_LEGITIMATE_INTEREST_INTRO#] [#IABV2_BODY_PREFERENCE_INTRO#] [#IABV2_LABEL_PURPOSES#] [#IABV2_BODY_PURPOSES_INTRO#] [#IABV2_BODY_PURPOSES#] [#IABV2_LABEL_FEATURES#] [#IABV2_BODY_FEATURES_INTRO#] [#IABV2_BODY_FEATURES#] [#IABV2_LABEL_PARTNERS#] [#IABV2_BODY_PARTNERS_INTRO#] [#IABV2_BODY_PARTNERS#] 关于 Cookies 是网站可以使用的小型文本文件,以提高用户的体验效率。法律规定,如果 cookies 对于本网站的运营是绝对必要的,我们可以将它们存储在您的设备上。 对于所有其他类型的 cookies,我们需要您的许可。 本网站使用不同类型的 cookies。 有些 cookies 由出现在我们页面上的第三方服务放置。 您可以随时在我们的网站上的 Cookie 声明中更改或撤回您的同意。 在我们的隐私政策中了解更多关于我们是谁、如何联系我们以及我们如何处理个人数据的信息。 当您就您的同意与我们联系时,请说明您的同意 ID 和日期。 不出售或分享我的个人信息 仅使用必要的 cookies 允许选择 自定义 允许所有 cookies

联系我们

  1. 首页
  2. 博客
  3. BEAM VM
  4. The BEAM-Erlang’s virtual machine

BEAM Erlang’s and Elixir’s Virtual Machine

The BEAM-Erlang’s virtual machine

注册我们的季度新闻通讯 及时了解最新消息、最佳实践和独家优惠。 不要错过。 在这里注册。 欢迎来到“Elixir,开始您的旅程的 7 个步骤”系列的第一章。 在我之前的文章中,我讨论了我的编程语言之旅。 在本章中,我们将讨论 Erlang 虚拟机,即 BEAM。 要理解为什么 Elixir 编程语言如此强大和可靠,我们必须理解它的基础, 这意味着要讨论 Erlang。 Elixir 运行在 Erlang 虚拟机 上,并继承了它的许多优点。 在这篇文章中,您将了解一些关于 Erlang 的历史,最初创建它的目标,以及为什么它对 Elixir 至关重要。

什么是 Erlang?

Erlang 作为一种编程语言

Erlang 是一种编程语言,由 Joe Armstrong、Robert Virding 和 Mike Williams 于 20 世纪 80 年代中期在 Ericsson 计算机科学实验室创建。 最初是为电信设计的,现在是一种通用语言。 它受到其他编程语言的影响,例如 ML 和 Prolog,并于 1998 年作为开源发布。 Erlang 的设计考虑了分布式、容错、大规模并发和软实时系统,使其成为当今系统的绝佳选择。 大多数人都在寻找这些特性,并且对 Erlang 在生产系统中的历史充满信心。 这种编程语言的一些特点是:

Erlang 作为开发生态系统

到目前为止,我们一直将 Erlang 称为编程语言; 然而,应该注意的是,Erlang 也可以指由以下部分组成的整个开发生态系统:

Erlang 作为一个生态系统,明确地创建是为了支持高可用性系统,即使在发生错误或意外情况时也能提供服务,这归功于其虚拟机 (VM) 的许多特性。 因此,尽管 Erlang 作为一种编程语言本身就很酷,但真正的魔力发生在所有生态系统元素组合在一起时:编程语言、库、OTP 和虚拟机。 Erlang's virtual machine, the BEAM OTP 如果您想了解更多关于 Erlang 历史的信息,以下资源列表将非常有帮助。

资源

Erlang 虚拟机,BEAM

Erlang 虚拟机,通常被称为 BEAM,作为一个操作系统进程运行,负责执行 Erlang 代码。 它还负责创建、调度和管理 Erlang 进程,Erlang 进程是并发的基础。 由于 BEAM 调度器的存在,这些进程能够以最有效的方式执行,从而使系统具有高度的 可扩展性。 进程不共享内存; 它们通过异步消息传递进行通信。 这种机制是系统 容错性 的基础。 由于它们完全隔离,如果其中一个进程发生错误,其他系统进程不会受到影响。 BEAM 还负责并行化您的并发 Erlang 程序,从而最大限度地利用机器的资源。 最初,虚拟机模型是一个单运行队列。 然而,它演变成每个可用处理器的运行队列,确保没有瓶颈,并确保 Erlang 程序在任何系统上都能正确工作,无论机器核心的数量如何。 Erlang Virtual Machine multicore 另一个特点是存储管理是自动化的。 垃圾回收是按进程实现的,这使得系统的响应时间始终保持在毫秒级,而不会降低性能。 最后,我最喜欢的功能之一是错误检测。 虚拟机提供了有效错误检测和处理所需的所有元素,从而促进了一个始终可用的系统,而不管发生什么故障。 总而言之,BEAM 负责系统的可扩展性、分布和响应能力:

如果您想了解更多关于 Erlang 和 Elixir 这一组合的信息,请查看 “什么是 Elixir” 这篇文章。

BEAM 中的 Elixir

与 Erlang 一样,Elixir 也受到其他编程语言的影响,包括 Erlang 本身。 它的代码运行在 Erlang 虚拟机上,这意味着它利用了它的所有功能,并且可以使用所有 Erlang 库和 OTP 框架。 除了 Elixir 和 Erlang 之外,不同的编程语言也在 BEAM 中运行,但 Elixir 确保了 BEAM 和程序员之间的方法是流畅且易于理解的。 Elixir 代码被编译成在 BEAM 中运行的字节码,并且比 Erlang 代码更紧凑。 它的语法类似于我们日常交流的方式,即使您是第一次使用它进行编程,也可以尽早熟悉该语言。 它还减少了样板代码,并具有令人惊叹的文档。 因此,当使用 Elixir 编写代码时,我们拥有两全其美:一个坚实且经过实战考验的基础,使我们能够创建防故障系统;另一方面,它还具有漂亮的语法、定义明确的模式和代码简化等等。 因此,Elixir 得到了广泛的接受并迅速获得了普及。 Elixir 是一种很酷的编程语言,它使您可以编写易于理解和维护的代码,并利用 Erlang 并发模型,我们将在下一章中讨论。 > iex``iex(1)> list = [4,5,21,1,38]``iex(2)> erlang_example = :lists.sort(list);``[1, 4, 5, 21, 38]``iex(3)> elixir_example = ``Enum``.sort(list)``[1, 4, 5, 21, 38]

如何在交互式 Elixir shell 中运行 Erlang 和 Elixir 代码的示例

下一章

在下一篇文章“理解进程和并发”中,我们将讨论 Erlang 进程是如何工作的,以及它们在开发健壮且可扩展的系统中的重要性。 我们还将看到 Erlang 中并发是如何工作的,以及这与 Elixir 有何关系。 不要错过! 如果您想 更详细地讨论 Elixir,您可以 给团队留言。 ![Author avatar](https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_250,h_250/https://www.erlang-solutions.com/wp-content/uploads/2023/0