本文共计2893字,预计阅读时间6分钟
目录
Mojo 作为面向全体AI开发者的一门全新编程语言,与 Python 一样简单,与 C 语言一样快速。
什么是 Mojo?
Mojo 是一门由 Modular 团队开发的编程语言,旨在简化AI和机器学习基础架构。它提供强大的编译时元编程,支持各种加速器,并且与 Python 完全兼容。
Mojo 将 Python 的易用性和 C 的性能结合起来,实现了AI硬件无与伦比的可编程性和AI模型的可扩展性。
Mojo 的目标是创建一种统一的语言,在保留与 Python 兼容性的同时,使AI应用的开发更加高效。
为何能让你爱上它.
如果你是一名开发人员,喜欢人工智能,喜欢速度,喜欢简单,那么你一定会爱上 Mojo。
以下是它的亮点:
-
可用性和可编程性: 一语定万物。
用Python编写代码,(通过各种优化方法提升性能)以达到接近底层硬件的性能。编写适用于众多低级AI硬件的程序。 对C++或CUDA无要求。
-
性能: 释放Python性能。
充分利用硬件的性能,包括多核心、向量单元和异构加速器,并使用世界上最先进的编译器和异构运行时期间,在无复杂性的条件下实现与C++和CUDA相当的性能。
-
互用性: 访问Python全生态系统
与Python生态系统实现真正的互用性。无缝使用包括像Numpy和Matplotlib等开发库,用Mojo自定义你的代码。
为什么Mojo旁边总有一个🔥?
因为它很火!
当然,最主要的还是因为这个emoji是它的文件拓展名。你可以将你的代码保存为
hello.🔥
又或 hello.mojo
来自Mojo团队:
我们将Mojo与火焰emoji🔥结合,作为一种有趣的视觉传达方式,向用户表达Mojo赋予他们的力量——比以往更快、更高效地开发。我们也相信,现在世界范围内能够处理以Unicode编码的拓展名,当然,你也可以使用.mojo拓展名。 :)
如何在Linux上安装Mojo?
目前,Mojo仅在本地Ubuntu Linux系统上可用。目前,Windows 和 Mac 用户可以使用 WSL,容器或远程Linux系统上找到解决方法.
系统要求:
在开始前,请确保您的系统满足以下要求:
-
Ubuntu 20.04 及 以上版本
-
x86-64 CPU 和 至少 4GiB RAM
-
Python 3.8 - 3.10
-
g++ 或 clang++ 编译器 (在Ubuntu上预装有g++)
安装 Modular CLI 和 Mojo SDK
Modular CLI类似于包管理器,用于安装和更新Mojo。
安装Modular CLI:
curl https://get.modular.com | \
MODULAR_AUTH=mut_fe303dc5ca504bc4867a1db20d897fd8 \
sh -
Mojo SDK包含有您进行本地Mojo应用开发所需的一切,这其中有Mojo标准库和Mojo命令行界面(CLI)。Mojo CLI可以启动REPL编程环境,编译和运行Mojo源文件,格式化源文件等等。
安装Mojo SDK:
modular install mojo
Hello World
在用Mojo编写第一个程序前,必须在我们的shell中设置好 MODULAR_HOME
和 PATH
变量。
echo 'export MODULAR_HOME="$HOME/.modular"' >> ~/.bashrc
echo 'export PATH="$MODULAR_HOME/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
在REPL上运行Mojo
发起REPL会话前,需在终端上输入 mojo
并按 Enter 键。
然后输入 print("Hello, world!")
并按两次 Enter 键 (需要用一个空行来说明表达式的结束)。
就是这样!举个例子:
$ mojo
Welcome to Mojo! 🔥
Expressions are delimited by a blank line.
Type `:mojo help` for further assistance.
1> print("Hello, world!")
2.
Hello, world!
您可以在REPL中编写任意量的代码,按 Enter 键便可以进入新一行并继续编写代码。当你想让Mojo评估代码时,按 Enter 键两次即可。如果有需要打印的内容,Mojo会将其输出并将提示信息反馈给你。
REPL主要用于短期实验,因为代码不会被保存。因此,若您想编写真正的程序时,需要在一个后缀名为 .mojo
的源文件中编写代码。
运行Mojo文件
首先,编写Mojo代码并执行它:
-
创建一个名为
hello.mojo
(或hello.🔥
),并添加下列代码:fn main(): print("Hello, world!")
这就是你所需要的。保存文件并返回你的终端。
-
现在,使用
mojo
命令运行它:mojo hello.mojo
应当输出下列消息:
Hello, world!
Mojo语言基础
该语言需要注意的几点:
1. 语法和语义:
Mojo支持Python的语法和语义,使用换行和缩进来表示代码块。它具有大多数Python的控制流特性。
2. 函数:
在Mojo中,函数可以使用 fn
(强类型、内存安全) 或 def
(Python风格)来声明。 fn
函数强制性类型安全操作。
3. 变量:
在Mojo中,变量可以使用 var
(可变)或 let
(不可变)声明。声明变量的类型是可选的。
实例:
fn do_math():
let x: Int = 1
let y = 2
print(x + y)
do_math()
4. 结构:
Mojo允许创建高级抽象的结构。Mojo中的 struct
结构与 Python 中的 class
类似。但结构是静态的,不允许动态调度。
实例:
struct MyPair:
var first: Int
var second: Int
fn __init__(inout self, first: Int, second: Int):
self.first = first
self.second = second
fn dump(self):
print(self.first, self.second)
用法:
let mine = MyPair(2, 4)
mine.dump()
5. Python 集成:
Mojo提供了一种机制,可以将Python模块原封不动地导入,利用好现有的Python代码。
实例:
from python import Python
let np = Python.import_module("numpy")
ar = np.arange(15).reshape(3, 5)
print(ar)
print(ar.shape)
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
(3, 5)
Mojo旨在将系统编程的优势与Python的易用性、灵活性相结合。
下一步是什么
-
对于使用VS Code的用户,您可以安装 Mojo 拓展 ,以获取语法高亮、代码补全及诊断等功能。
-
您还可以使用基于Web的 Mojo Playground 来进行 Mojo 实验。
-
想了解更多关于Mojo的信息,可以 阅读相关文档。
-
您也可以随时在 Discord 和 Mojo 社区上开展交流。
-
Mojo🔥 是一门面向AI开发者的未来编程语言。