Last Updated on 2023-09-13 by Clay
介紹
Mojo 是一名比較新的語言,是由 LLVM 之父和 Swift 之父 Chris Lattner 所開發。
之所以開發 Mojo,據稱是為了填補『研究』與『生產』的鴻溝,所以 Mojo 擁有 Python 般簡易的語法以及 C 的執行速度。當然,最主要的可能還是對於 AI 的優化 —— 現在 AI 的市場已經值得一門全新的程式語言了。
當然,Mojo 到底有多少實力、有多少潛力待發掘,這個疑問只能留待日後了。總之我今天就來試用看看這個很紅的新程式語言吧!
一方面也是因為 Mojo SDK 現在已經支援 Ubuntu Linux 系統了(2023/09/13),至於 Windows 和 MacOS 等作業系統則可能還需要等上一段時間。
取得 Mojo SDK
首先,確認滿足系統需求。
System requirements
To use the Mojo SDK, you need a system that meets these specifications:
- Ubuntu 20.04/22.04 LTS
- x86-64 CPU (with SSE4.2 or newer) and a minimum of 8 GiB memory
- Python 3.8 – 3.10
- g++ or clang++ C++ compiler
確認為有以上環境後,就可以按照開始配置環境了。
curl https://get.modular.com | \
MODULAR_AUTH=mut_368ff64729824e39b3413866bf6be10d \
sh -
modular install mojo
如果這個方法不行,可以考慮使用手動安裝。我自己就是使用手動安裝的方式。因為我遇到了:
^^^^: ... Failed to update via apt-get update - Context above.
!!!!: Oh no, your setup failed! :-( ... But we might be able to help. :-)
!!!!:
!!!!: You can contact Modular for further assistance.
!!!!:
這樣的奇怪錯誤,之後在網路上查到了 https://github.com/modularml/mojo/issues/574 這個 issue,推薦可以試試手動安裝。
apt-get install -y apt-transport-https &&
keyring_location=/usr/share/keyrings/modular-installer-archive-keyring.gpg &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/gpg.0E4925737A3895AD.key' | gpg --dearmor >> ${keyring_location} &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/config.deb.txt?distro=debian&codename=wheezy' > /etc/apt/sources.list.d/modular-installer.list &&
apt-get update &&
apt-get install -y modular
modular auth mut_368ff64729824e39b3413866bf6be10d &&
modular install mojo
之後,還要設定 mojo 的路徑。
echo 'export MODULAR_HOME="$HOME/.modular"' >> ~/.bashrc
echo 'export PATH="$MODULAR_HOME/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
安裝好後,應該就可以使用 mojo
指令了。
更進一步的指令介紹可以看 Mojo command-line interface (CLI)
如果想看如何在 VS Code 上安裝、配置環境,可以參考:Mojo extension for Visual Studio Code
第一支程式: Hello World
好久沒有學習新語言了,遵循常見規則,總之先寫下一份 hello.mojo。
fn main():
print("Hello World!")
接著我們要執行:
mojo hello.mojo
Output:
Hello World!
我們也可以使用 mojo build
來建立靜態連結的二進制檔案。
mojo build hello.mojo
會建立一個同名的 .mojo 執行檔。我們可以像編譯 C++ 檔案一樣使用 -o
來指定特定的輸出名稱。
心得
目前距離 Mojo 釋放出環境跟編譯器還不到一週的時間,看得出來這真的是很新的東西,安裝的時候其實踩了許多坑,都是慢慢看著 GitHub 上的 issues 解掉的。
語法也還需要熟悉,目標是拿 Mojo 來訓練模型,比較看看現在的各種加速方案,看看是不是真的有所幫助。
總之之後來學習下語法吧!