@Modular: 昨天直播了Mojo 101的第一节课,参与人数众多。我们的实时聊天中充满了富有洞见的问题。如果…
摘要
Mojo 101 第一节课的录像现已上传至YouTube,内容涵盖语言基础,包括项目设置、Hello World、Mojo的编译、静态类型和所有权模型。
查看缓存全文
缓存时间: 2026/07/10 22:18
Mojo 101 第 1 节昨日直播,参与人数众多。我们的实时聊天中涌现了许多深刻的问题。
如果你错过了(或想重看),现在可以到 YouTube 上观看“语言基础”的录制视频:https://t.co/xkmcNOk0hm
TL;DR
Mojo 101 第 1 节涵盖了如何使用 Pixie 搭建 Mojo 项目、编写“hello world”程序,以及理解 Mojo 的编译、静态类型和所有权模型为何使其成为高性能工作的强大语言。
课程介绍与目标
Modular 的开发者倡导者 Michael Dun Connor 介绍了分为四部分的 Mojo 101 系列。总体目标是将学习者从“hello world”带向 GPU 编程,基于现有的 Mojo GPU 谜题(https://github.com/modular/mojo)资源。系列课程结束后,参与者应能够:
- 独立在 Mojo 中开始并行编程。
- 将 Mojo 应用于自己的领域问题。
- 为开源的 Mojo 标准库和内核项目做出贡献。
第 1 节关注语言基础:创建 Mojo 项目、函数、控制流和结构体。
使用 Pixie 创建 Mojo 项目
Pixie 被用作包管理器。步骤如下:
- 安装 Pixie(如果尚未安装),使用 Mojo 快速入门指南中的 curl 命令。
- 初始化项目:
bash pixie init session_one cd session_one这会创建一个包含pixie.lock文件(依赖项初始为空)的目录。 - 添加 Mojo 依赖:
bash pixie add mojo这会安装 Mojo 1.0 beta 2(本课程中使用的版本)。 - 进入 Pixie 虚拟环境:
bash pixie shell用mojo --version验证——应输出“Mojo 1.0 beta 2”。
Hello World 及两种运行方式
创建文件 hello.mojo,内容如下:
``mojo
这是一条注释
def main(): print(“hello world!”) ``
入口点必须是一个名为 main 的函数。
运行代码
即时编译并运行:
bash mojo hello.mojo
输出:hello world!
预编译为二进制文件:
bash mojo build hello.mojo
这会生成名为 hello 的可执行文件。运行 ./hello。编译后的二进制文件即使不在 Pixie 环境中也能运行——这展示了编译型语言的一大优势。
为什么是 Mojo?编译、静态类型和所有权
来自 Mojo 标准库团队的 Nate 解释了使 Mojo 与众不同的三个核心概念。
编译型语言 vs. 解释型语言
Mojo 是编译型的,不像 Python 那样是解释型的。两步过程(编译 → 二进制)允许编译器针对目标硬件优化代码,从而实现非常快的执行速度。二进制文件可以在没有原始源代码甚至没有 Mojo 工具链的情况下运行,如 ./hello 示例所示。
静态类型
每个变量和函数参数在编译时都必须有已知的类型。Mojo 可以从初始值推断类型,也可以显式标注类型。
mojo var x: Int = 42 # 显式类型标注
由于类型是固定的,编译器可以及早捕获不匹配问题。例如,将字符串赋值给整数变量会产生编译时错误:“cannot implicitly convert ‘String’ to ‘Int’”。类似地,期望 Int 参数的函数不能用 String 调用。
函数需要显式的参数和返回类型:
mojo def add_one(x: Int) -> Int: return x + 1
省略返回类型会导致错误:“cannot implicitly convert ‘Int’ to ‘None’”。这种严格性消除了动态语言中常见的一整类运行时类型错误。
所有权与内存安全
Mojo 使用基于值语义的所有权模型(类似于 Rust)。一个示例说明了区别:
mojo var a = "hello" var b = a # b 是 a 的*副本* b += " world" print(a) # 输出 "hello" print(b) # 输出 "hello world"
这里 a 和 b 是独立的实例。修改 b 不会影响 a——这与赋值创建引用的语言有本质区别。这种所有权系统防止了意外的别名,并使内存管理可预测。
后续步骤与问答
课程以一个简短的开放式问答环节结束(团队成员回答了实时聊天中的问题)。未来的课程将遵循相同的结构:主题概述、现场编码和问答环节。
来源: YouTube 视频 – @Modular: Mojo 101 第 1 节(https://www.youtube.com/watch?v=1Jqp0BheoEQ)
相似文章
@Modular:Mojo 101 第二周将于周四上线。本周,我们将在直播中深入探讨值所有权和元编程…
Modular 宣布了 Mojo 101 第二周的内容,这是一个为期四周的免费直播课程,由打造 Mojo 的工程师亲自授课,介绍如何用 Mojo 编程,即将到来的课程将涵盖值所有权和元编程。
@Modular:Mojo 101:从语法到GPU编程 [第一讲]
Modular正在举办一场名为Mojo 101的讲座,内容涵盖从语法到GPU编程,旨在教授Mojo语言。
@Modular:免费4周Mojo课程,由构建该语言的团队授课。了解为何Mojo是智能体开发的理想语言…
Modular宣布推出一个免费的4周Mojo课程,由Mojo团队授课,涵盖从语言基础到GPU编程,将于7月9日在YouTube上开始。
@Modular: Mojo 1.0 测试版现已发布!现在我们要倾听您的声音。请在我们的论坛 Mojo 1.0 子分类中分享问题并发起讨论...
Modular 已发布 Mojo 1.0 测试版,并邀请社区成员在其论坛和 GitHub 上提供反馈并报告问题。
@Modular: Mojo Quest 今日发布!Mojo Quest 是一款基于浏览器的游戏,通过为一家虚构的机器人公司关闭工程工单来学习 Mojo 语法……
Mojo Quest 是由 Modular 推出的一款基于浏览器的游戏,旨在通过为一家虚构的机器人公司完成工程工单来帮助用户学习 Mojo 语法。