前言
未来很有前途的编程语言:一个是Rust, 另一个可能就是与python语法兼容的Mojo了。Mojo对那些Python开发人员而言,绝对是福音。先来看看Mojo的发明人:
Chris Lattner,这位编译器大神,曾领导了众多大型技术项目。他不仅是 LLVM 项目的主要发起人,还是 Clang 编译器的创作者。同时,他是苹果公司编译器开发团队的首席架构师和苹果新编程语言 Swift 创造者。此外,Chris Lattner 还为 Google Brain 和 TensorFlow 建立和管理了一系列与 AI 相关的编译器、运行时和编程语言团队。
2022 年 1 月,Chris Lattner 和 AI 领域专家 Tim Davis 共同建立了 Modular AI,旨在重建全球 ML 基础设施。
而在近日,编译器的大神 Chris Lattner 在社交平台上官宣了一种全新的编程语言:Mojo!注意,搞出这玩意儿的主要目的是重建ML基础设施。说简单点,就是觉得以前的PYTHON性能太差了。
image-20240407212509063
看来,这个性能还真不是盖的。
实作
本文的目的,就是想试一下,看看Mojo的环境是啥样子的。按官方文档上说的,目前在Mac平台(使用苹果芯片)和Linux平台,都能很好的支持。而windows上,在不久的将来,也会推出相应的版本。
我这里就试着在Mac上安装一下Mojo最基本的环境:(参照https://docs.modular.com/mojo/manual/get-started/ 上边说的步骤)
1、环境安装
1. 安装modular命令行工具:
curl -s https://get.modular.com | sh -
output ......
==> Installing modularml/packages/modular
==> Caveats
The Modular tool expects or will create a MODULAR_HOME directory.
This defaults to `~/.modular`. You can create your own, and if you do,
please add `MODULAR_HOME=/path/to/your/dir` to your environment.
==> Summary
🍺 /opt/homebrew/Cellar/modular/0.7.0: 6 files, 61.3MB, built in 4 seconds
==> Running `brew cleanup modular`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /opt/homebrew/Cellar/modular/0.6.0... (6 files, 61MB)
Removing: /Users/*****/Library/Caches/Homebrew/modular--0.6.0.tar.gz... (16.4MB)
==> Caveats
==> modular
The Modular tool expects or will create a MODULAR_HOME directory.
This defaults to `~/.modular`. You can create your own, and if you do,
please add `MODULAR_HOME=/path/to/your/dir` to your environment.
最后可以看到,装上的是0.7.0
接着:
2. 进行Modular帐户签名:// 你可以提前注册一个帐户 或直接使用 google account
modular auth
o complete auth, open this web page:
https://developer.modular.com/device?userCode=<usercode>
Verify using this code:
<usercode>
Waiting for confirmation...
然后,我们开始安装Mojo SDK
3. modular install mojo
# Found release for https://packages.modular.com/mojo @ 24.2.0-c2427bc5-release
# Downloading archive: packages/24.2.0-c2427bc5-release/mojo-arm64-apple-darwin22.6.0-24.2.0-c2427bc5-release-11-0.tar.gz
Downloading ..............
4. 设置环境变量
我们看看zsh里头如何设置:
MOJO_PATH=$(modular config mojo.path) \
&& echo 'export MODULAR_HOME="'$HOME'/.modular"' >> ~/.zshrc \
&& echo 'export PATH="'$MOJO_PATH'/bin:$PATH"' >> ~/.zshrc \
&& source ~/.zshrc
2、试运行
检查下mojo的版本:
mojo mojo --version
mojo 24.2.0 (c2427bc5)
2.1、REPL解释执行代码
直接像python那样执行一行代码
mojo
Type `:quit` to exit the REPL and `:mojo help` for further assistance.
1> print("Hello, world!")
2.
Hello, world!
2>
2.2、执行一个Mojo文件
我们建一个非常简单的hello.mojo源程序文件,内容如下:
fn main():
print("Hello, world!")
直接执行,使用命令:
mojo hello.mojo
结果如下:
Hello, world!
2.3、编译成可执行文件
上边是直接执行,也可以将其编译成可执行文件(这块儿是比原生python不太一样的地方)
mojo build hello.mojo
-- 经此一步,会在当前目录生成可执行文件
mojo build hello.mojo
ls
demo hello hello.mojo
接着,可以直接执行二进制可执行文件:
./hello
Hello, world!
你也可以直接clone出:git clone https://github.com/modularml/mojo.git, 里边有相当多的例子。
在示例里,有一个:deviceinfo.mojo. mojo/examples下边。
mojo deviceinfo.mojo
System information:
OS : macOS
CPU : apple-m1
Arch : arm64-apple-darwin23.4.0
Physical Cores : 10
Logical Cores : 10
CPU Features : neon Apple M1
很有意思。
这些示例,确实可以供我们好好学习和练习一下。
3、在线试验
除了上边的仓库代码可以自己拿来参考和练习,也可以访问:https://docs.modular.com/mojo/playground
在上边你可以直接在线试验Mojo的基本编译功能。
小结
因为Mojo的目标非常明确,就是朝着性能而来的。一些不在乎性能的场合,python仍然会大规模使用。在一些性能比较关键的地方,Mojo必然会慢慢用上。相信,随着它不断地往前推出,一些相关的db访问的库陆续应该变得可用。我们翘首以待。
对于Rust和Mojo,两种编程语言(环境)都是值得期待的。它们两个在AI上边(都在同时发力)应该大有可为。
参考
1、https://www.fast.ai/posts/2023-05-03-mojo-launch.html
2、https://www.modular.com/mojo
3、https://blog.csdn.net/csdnnews/article/details/130497989
4、https://zhuanlan.zhihu.com/p/655157566
我是【Sean】, 欢迎大家长按关注公众号:数据库杂记。