Mojo 是 Modular AI 公司开发的一种编程语言,专门面向 AI 设计
1. 准备工作
官方于9 月 8 日宣布,Mojo 现已开放本地下载运行,除了编译器之外,Mojo SDK 还包括一整套开发者和 IDE 工具,可以用于构建和迭代 Mojo 应用。
目前 Mojo 只支持 Linux 操作系统(主要支持 Ubuntu 发行版本),后续会添加 macOS 和 Windows 系统支持!
- 个人系统:WSL —— Ubuntu22.04LTS
Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源_ubuntu22阿里源_nudt_qxx的博客-CSDN博客
让Windows11的代理作用于wsl2,包含clash和v2ray - 知乎 (zhihu.com)
需要代理!!!
2. 开始安装
- 使用谷歌账号或其他注册账号登录 Modular: AI development starts here
- 本人一开始使用香港、新加坡节点得到了以下的网络错误,后来使用日本的节点得以成功安装,请谨慎选择相关代理节点!
modular: error: http error: failed to reach URL [https://packages.modular.com/mojo/1.root.json](https://packages.modular.com/mojo/1.root.json) with cURL error SSL connect error -
和modular: error: invalid manifest: was not an object
- 进入Download Now 界面,选择对应的系统,依照指示进行安装(每个账号有着不同的MODULAR_AUTH)
- 安装成功!
- 在开始 Coding 前设置相关的
MODULAR_HOME
和PATH
环境变量,因为默认使用bash,在终端输入:
echo 'export MODULAR_HOME="$HOME/.modular"' >> ~/.bashrc
echo 'export PATH="$MODULAR_HOME/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
3. 编码尝试
- 在 Vscode 中安装插件*Mojo *
- 执行
mkdir Mojo
和touch hello.mojo
, 在 Vscode 中打开该文件夹 - 配置相关路径:
或
{
"mojo.modularHomePath": "/absolute/path/to/.modular"
}
- 运行,在 Vscode 终端即可显示
fn main():
print("Hello, world!")
4. 体验感悟
- 现代编程语言的既视感
fn swap(inout lhs: Int, inout rhs: Int):
let tmp = lhs
lhs = rhs
rhs = tmp
fn main():
var x = 42
var y = 12
print(x, y)
swap(x, y)
print(x, y)
42 12 12 42
- Python 的超集
from python import Python
fn main():
try:
let np = Python.import_module("numpy")
print(np.array([1, 2, 3]))
print("Yes, it's fun!")
except:
print("No numpy")
[1 2 3] Yes, it's fun!
- 语法上的丰富
struct MyPair:
var first: Int
var second: Int
fn __init__(inout self, first: Int, second: Int):
self.first = first
self.second = second
fn dump(inout self):
print(self.first, self.second)
fn main():
var mine = MyPair(1, 2)
mine.dump()
1 2
- 广泛吸收许多的程序语言设计思想,如 Rust 的所有权和借用检查
fn add(borrowed x: Int, borrowed y: Int) -> Int:
return x + y
fn add_inout(inout x: Int, inout y: Int) -> Int:
x += 1
y += 1
return x + y
fn main():
let x = 1
let y = 2
let z = add(x, y)
print("x = ", x)
print("y = ", y)
print("z = ", z)
print("------------------")
var a = 1
var b = 2
let c = add_inout(a, b)
print("a = ", a)
print("b = ", b)
print("c = ", c)
x = 1 y = 2 z = 3
a = 2 b = 3 c = 5
5. 衷心展望
尽管还处于早期阶段,Mojo 这门语言已展现出非凡的潜力,其发展路线和设计思路都非常务实 ,又有足够专业的领导者和公司作为背景支撑,可以说是未来可期!
作者:theRunCom