Skip to content
当前页大纲

Mojo 1.0:AI 时代的新编程语言?

比 Python 快 35000 倍,经过三年迭代终于走到 1.0,随后全面开源、被高通收入麾下——Mojo 这两年的故事线,几乎是 AI 基础软件演进的一个缩影。

本文只写可核实的事实(文末附来源),并结合官方 1.0 文档给出语法现状,帮你判断:这门语言值不值得现在投入时间。

一、为什么需要一门新语言

过去十多年,AI 开发者已经形成了一套约定俗成的技术栈:

  • 上层用 Python:写模型、脚本、数据管道,胜在生态和易用性
  • 下层用 C/C++/CUDA 或厂商 DSL:写性能关键路径——矩阵乘、注意力内核、调度器
  • 两层之间靠 FFI 和扩展模块打通:调试、部署、性能调优都要跨两套世界

这套组合被证明有效,但问题也越来越明显。随着模型规模扩大,计算硬件从 CPU、GPU 到 TPU,再到越来越多的 NPU、ASIC 和专用加速器——一个 AI 系统往往同时涉及多种硬件、多套编程模型、不同的开发工具链。异构性成了 AI 软件栈最大的税。

于是问题变成了:有没有可能用一门语言,同时拿到 Python 的易用性和 C++/CUDA 的性能,并且生来就面向异构计算?

这就是 Mojo 的切入点。

二、从 Modular 到 Mojo 1.0 的三年

Mojo 背后的公司叫 Modular,2022 年成立。两位创始人的背景堪称豪华:

  • Chris Lattner:编译器圈大神,LLVM、Clang、Swift、MLIR 都出自他之手,还深度参与过谷歌 TPU 基础设施
  • Tim Davis:长期负责 Google Brain,以及 TensorFlow、XLA 等核心系统

他们创立 Modular 的判断很直接:AI 软件栈过于碎片化——训练、推理、预处理、后处理、部署各有一套工具和语言,不同硬件又是各自为政的编程模型。而 AI 不会永远只跑在一两种 GPU 上,现有软件栈撑不住未来的异构爆发。

要做横跨这些硬件的统一平台,在现有语言上修修补补不够——于是 Mojo 诞生了,这个原本不在计划内的决定。

关键时间线(均为已核实事件):

时间事件
2022Modular 成立
2023.05Mojo 亮相,凭「比 Python 快 35000 倍」的演示刷屏开发者圈
2023–2025以「闭源编译器 + 开源标准库」形式发展,语法和类型系统经历多轮大改
2024Modular 公开通向 1.0 的路线图,承诺先把语言打磨稳定
2026.06.24高通宣布以全股票方式收购 Modular(外媒报道估值约 31–39 亿美元)
2026.07.29收购完成,Chris Lattner 出任高通高级 AI 软件与平台执行副总裁
2026.08Mojo 1.0 发布,语言语义冻结,进入长期稳定阶段
2026.08.18全面开源:编译器和全套工具链以 Apache 2.0(附 LLVM 例外条款)协议进入 GitHub

收购后 Mojo、MAX、Modular Cloud 保持独立品牌运营。开源举动基本打消了「被高通收购后会闭源、锁死在骁龙生态」的担忧——高通显然想要的是对抗 CUDA 的软件底座,而开源是拉拢更多硬件厂商和云厂商入局的唯一路径。

三、为 AI 量体裁衣:Mojo 的三个核心设计

Mojo 称自己「面向 AI」,不只是因为它能写 AI,而是它从一开始就针对 AI 工作负载和硬件来设计。

1. 异构计算是第一公民

Mojo 假定目标平台不是单一 CPU,而是包含多核 CPU、GPU、各类 Tensor/Matrix 单元的异构系统。语言内建对向量化(SIMD)、并行计算和设备内核的支持。配合 MLIR 编译栈,可以用同一种语法写 CPU 和 GPU 内核,不用在 Python、CUDA、C++、各家 DSL 之间来回切换。

需要注意的一个事实:开源版 Mojo 1.0 的标准库目前不含 GPU 模块——GPU 编程能力随 MAX 平台(Mojo 推理框架)提供。语言层的 SIMD、参数化、元编程是全部开源的。

2. 性能模型:零成本抽象

「快 35000 倍」是 2023 年发布时特定基准的数字,听个响就好。真正有意思的是它的实现路径:

  • 值语义 + 所有权系统管理内存,编译期尽量消除引用计数开销
  • 小类型(Int、Float、SIMD)永远走寄存器传值
  • **编译期元编程(comptime)**做专门化和自动调优,为不同硬件生成不同的代码版本

在保留高级语法的前提下,同等算法逼近甚至超过 C/C++——这是它敢叫板 Python + C++ 双层栈的底气。

3. 与 Python 的平滑互操作

Mojo 在语法上刻意向 Python 靠拢:函数、缩进、控制流都充满 Python 味道。你可以直接 Python.import_module("numpy") 调用 Python 模块,甚至可以在 Mojo 项目里嵌入 Python 代码,然后逐步用 Mojo 重写性能关键路径。对存量 AI 团队来说,这是所有新语言里迁移成本最低的一条路。

四、Mojo 1.0 语法现状:网上老教程已过时

一个容易被忽略的事实:Mojo 在走向 1.0 的过程中大改过语法,2024 年前的中文教程基本已失效。以下是 1.0 官方文档确认的几个关键点:

mojo
# 1. 函数统一用 def(旧的 fn 已不再是主角)
def calculate_average(temps: List[Float64]) raises -> Float64:
    if len(temps) == 0:
        raise Error("No temperature data")   # 错误处理:raises + try/except
    var total = 0.0
    for temp in temps:
        total += temp
    return total / Float64(len(temps))

# 2. 变量必须用 var 声明(let 已移除)
# 3. t"..." 模板字符串:花括号直接插值,无中间内存分配
def main():
    var temps: List[Float64] = [20.5, 22.3, 19.8]
    print(t"平均温度: {calculate_average(temps)}")
mojo
# 4. 所有权约定彻底重做:不再是 borrowed/inout/owned
def add(mut x: Int, y: Int):   # mut = 可变引用(替代旧的 inout)
    x += y

def take(var s: String):       # var = 获得所有权(替代旧的 owned)
    pass

take(my_string^)               # ^ 转移符:交出所有权后原变量失效
mojo
# 5. 编译期参数 + comptime 元编程
def repeat[count: Int](msg: String):
    comptime for i in range(count):   # 编译期展开循环
        print(msg)

# 6. struct + trait 取代 class 继承体系
@fieldwise_init
struct MyPair(Copyable):
    var first: Int
    var second: Int

本站已配套上线一套基于 1.0 语法的中文学习模块(环境搭建 → 语法 → 所有权 → SIMD → Python 互操作 → 手写矩阵乘法),入口见导航栏「Mojo学习记录」。

五、生态现状:编译器开源之后

技术之外,决定 Mojo 能走多远的是生态:

  • 开源许可:Apache 2.0 + LLVM 例外条款,硬件厂商、云厂商、研究机构都可以自由扩展和集成,不受商业许可限制。外部向编译器贡献代码的通道也在陆续打开
  • MAX 平台:Modular 自家的推理框架,Mojo 的「官方大型实战项目」,MAX 的许可在开源同期移除了设备使用限制,转向 source-available 模式并筹建开放联盟
  • 高通背书:收购完成后三周内就推动编译器开源,高通显然打算把 Mojo+MAX 作为对抗 CUDA 锁定的战略资产——每瓦特性能决定推理成本,推理成本决定 AI 能否规模化
  • 流行度:TIOBE 等指数上 Mojo 目前还排不上号,与 Python、C++、Java、Rust 相比生态体量仍处早期

六、它会取代 Python 吗

至少未来两三年内,答案是否定的。

Python 的护城河从来不是语言本身,而是三十年的生态沉淀——数百万开发者、几乎所有 AI 框架的第一接口、教学体系、招聘市场。Mojo 再优秀,也改变不了「生态体量还在早期」这个事实。

更现实的定位是分层共存

  • Python 继续写胶水、做实验、跑大部分业务逻辑
  • Mojo 接管「吃性能、吃硬件」的模块——算子内核、推理服务、调度器,那些过去必须写 C++/CUDA 的地方
  • 两边通过原生互操作无缝衔接,而不是 FFI 拼接

对开发者的务实建议:在继续用好 Python 的同时,挑一两个真正吃性能的模块用 Mojo 重写试试——GPU 内核不好上手,但 SIMD 向量化、数值计算这类 CPU 侧模块门槛不高,能直接感受到「一门语言同时写上层和底层」是什么体验。

七、展望

Mojo 刚过 1.0,官方路线图上还有异步编程模型、模式匹配、代数数据类型、更友好的包管理等待补项。它到底会成为「AI 时代的 C++」,还是又一个技术方向正确但生态没跑起来的语言,取决于未来两三年高校、芯片厂、云厂商会不会真的押注它。

但有一件事是确定的:AI 基础软件栈的异构化浪潮才刚开始,无论最终赢家是不是 Mojo,「用一门语言统一上层易用性与底层性能」这个需求是真实存在的。五年十年后我们再谈 AI 编程语言格局时,大概率绕不开这个名字。


参考来源

MIT License.