Mojo 是一种新推出的编程语言,它将 Python 的简单性与 Rust 的速度和内存安全性结合在一起。它处于开发的早期阶段,为用户提供了一个在线游乐场来探索其功能。Mojo 致力于在数据科学和机器学习领域取得卓越成就,提供 Python 的快速替代方案。我们正在逐步计划将其开源。
Mojo 由Chris Lattner创建,为 AI 程序员提供可编程性和可扩展性,实现在 AI 硬件上进行高效编程。与 Python 相比,Mojo 的速度显着提高,比 PyPy 快 22 倍,比标量 C++ 快 5000 倍。它通过使用多级中间表示 (MLIR)无缝扩展硬件类型而不引入复杂性来实现这一目标。Mojo 使用LLVM 工具链编译为机器代码,通过使用 Mojo 特定的功能提供更好的性能。另一方面,Python 依赖于运行时解释。
Mojo 引入了新的语言功能,这些功能可以分为两组。Python 和现有的 Python 功能中有一些全新的和不存在的元素,但动态性有所减弱。例如,Mojo 允许使用let和等关键字var来声明变量,指示它们是不可变的还是可变的。这些限制在编译期间强制执行,防止任何改变不可变引用的尝试。
此外,Mojo 使用其struct关键字(与 Python 的类不同)来定义具有针对本机机器速度优化的固定排列的类型,非常类似于 C/C++ 和 Rust 等价物。Mojo 中另一个独特的关键字是fn,用于定义函数。Mojo 函数默认采用不可变参数,并且需要显式类型以及局部变量声明。这些语言特性造就了 Mojo 相对于 Python 的独特特性。
为了体验使用 Mojo 的工作,用户可以访问Modular Playground,这是一个可以提前访问的基于 Web 的 Jupyter Notebook 环境。Mojo 还没有可下载的运行时环境,但这允许 Mojo 在任何带有浏览器的计算机上运行。该环境提供带有详细注释的示例笔记本。
社区对语言的发展感到好奇。对此,有积极的看法。在 Twitter 上,杰里米·霍华德分享了他的观点: Mojo 应用程序可以编译成小型、独立、快速启动的二进制文件。这是一个游戏规则的改变者!想想如果您可以快速轻松地创建小型快速工具并将它们分发到单个文件中,您可以做些什么。
Chris Lattner 在Lex Friedman 的播客中表示,创建 Mojo 背后的想法在于让机器学习及其基础设施对于非专家来说更容易访问和理解。这导致了一种具有用户友好语法的编程语言的开发,使研究人员和那些不熟悉 GPS 等先进技术的人能够有效地使用机器学习。