不是两门课,是一套 BEAM 思维

学透Erlang+Elixir

从模式匹配到监督树,从第一条消息到可靠的混合语言系统。不是让你“看懂”,是让每个结论都能跑、能坏、能解释。

12模块
46检查点
≈66h完整路径
2 → 1语言 · VM
BEAM RUNTIME
message
DOWN
reply
VMBEAMscheduler · mailbox · isolation
01ElixirGenServer
02Erlanggen_server
03OTPSupervisor
S1
S2
S3
学习系统,而不只是教程

四件事,让“我好像懂了”无处可藏

参考 kimi-k3-learn 的核心教学方法:运行、对照、复习、故障注入。 把它换成最适合 BEAM 的实验,而不是照搬表面形式。

01

跑得动

12 个实验

每个关键概念都落到可复制的 IEx / erl 实验;浏览器模拟器只负责把协议过程变得可见。

02

看得见

双语对照

Elixir 与 Erlang 并排展示。你学的是共同的 term、进程与 behaviour,不是两套互不相干的语法。

03

记得住

46 个检查点

每个模块都有快速自测、语言互译和一个真正改变条件的挑战,进度可以导出与恢复。

04

敢弄坏

故障注入

主动制造迟到回复、mailbox 堆积、重启风暴和节点断开;每次都写清实验不能证明什么。

桥接路线

先用 Elixir 获得反馈,再用 Erlang 看清底层

不先完整学完一门,再把同样概念重学一遍。基础阶段分别练语法;从并发开始,每个协议都用两种语言实现一次, OTP 概念只讲一次。

  1. 1
    Elixir:快速建立数据流

    模式匹配、多子句函数、Enum、Mix 与 ExUnit。

  2. 2
    Erlang:读懂 VM 的母语

    term、模块、binary、递归、Rebar3 与 EUnit。

  3. 3
    BEAM / OTP:共同练习

    消息协议、behaviour、监督树、容量与分布式。

打开完整语义映射模块
ELIXIR
同一 VM
ERLANG
:ok同一个 atomok
Foo.bar()Elixir 模块的底层 atom'Elixir.Foo':bar()
:lists.reverse(xs)直接调用 Erlang 标准库lists:reverse(Xs)
fn x -> x * 2 end匿名函数fun(X) -> X * 2 end
GenServer同一个 OTP behaviourgen_server
完整学习路径

从第一个 term,到可发布的 OTP 系统

12 个模块、46 个检查点。按阶段推进,也可以搜索你现在最需要补的概念。 每个模块都有真实代码、故障实验、自测和项目验收。

你的学习进度0 / 12 模块
0%
01

先看见运行时

把 Erlang、Elixir、BEAM 与 OTP 放进同一张地图。

02

掌握两种语言

分别练熟语法,再建立一套可来回翻译的语义。

03

并发与容错

从裸进程一路推导到 OTP、监督树与背压。

04

走向生产

节点、可观测性、互操作,以及一个完整混合项目。

先试 3 分钟

一条消息,经过 mailbox,再变成 reply

连续发送几条消息,逐条处理。然后打开“故意弄坏”,观察 server 已经处理但 client 永远等不到 reply 的区别。

  • 01发送成功,不等于处理完成
  • 02timeout 结束等待,不会自动撤回消息
  • 03mailbox 是容量边界,不是无限缓冲
进入裸进程模块
语义模拟器
PROCESS 01client发出 request
MAILBOX0
等待消息
PROCESS 02server0 条已处理
mailbox 为空reply:正常
事件记录最新在上

01系统就绪:等待 client 发送消息

这是浏览器中的 BEAM 语义模拟器,不是真实 Erlang VM。它用来观察协议;每个课程实验页同时给出可复制到 IEx / erl 的真实代码。

最终项目 · 模块 11

可靠任务调度器

Elixir 提供清晰的 CLI / API,Erlang gen_server 掌控队列与 worker。你要让系统在超时、崩溃、坏消息和节点断开时给出可解释的结果。

有界队列监督树重试 / 幂等双语测试Release
查看毕业验收
ELIXIR APIvalidate · normalize · respond
ERLANG COREqueue · dispatch · retry
worker 01
worker 02
worker 03
SUPERVISORcrash → observe → restart