Autor | Chris Lattner |
---|---|
Vývojář | Modular Inc. |
Poslední verze | v24.1.1 (3. 18. 2024) |
Ovlivněn jazyky | Python |
OS | Cross-platform |
Licence | Proprietární |
Web | https://www.modular.com/max/mojo |
Přípona souboru | .🔥 (emoji ohně/U+1F525 Unicode), alternativa .mojo |
Mojo je proprietární programovací jazyk založený na syntaxi jazyka Python. V roce 2022 ho vytvořili Chris Lattner (původní architekt programovacího jazyka Swift a autor LLVM) a bývalý zaměstnanec společnosti Google Tim Davis, kteří spolu založili společnost Modular Inc.[1] Jazyk je tvořen jako tzv. superset jazyka Python. Mojo se snaží sloučit dvě nesourodé věci:
Syntax jazyku Mojo se snaží být velice blízká syntaxi jazyku Python, aby bylo lehčí pro uživatele jazyka Python se ho naučit. Mojo zatím nemá třídy. Je to funkcionální jazyk, na definování funkce můžeme použít buď fn
a nebo pro zachování kompatibility s jazykem Python klíčové slovo def
.
Příklad definice funkce, která akceptuje parametr x a vytvoří si interní proměnnou y typu Integer.
def add_one(x):
var y: Int = 1
print(x + y)
Mojo SDK je momentálně dostupný pouze pro macOS systémy, které běží na zařízeních s čipy Apple silicon, a pro linuxovou distribuci Ubuntu. Ostatní uživatelé mohou využít webové rozhraní Mojo Playground. Podpora zařízení Windows by měla přijít v budoucích verzích.[3]
Do Moja můžeme importovat již existující moduly z Pythonu a používat je zde. V tomto připadě je Mojo 100% kompatibilní, protože je používán CPython. V případě přenášení jakéhokoli kódu z Pythonu do Moja to zatím neplatí. Mojo totiž podporuje základní funkce jako async/await nebo zacházení s chybami, ovšem nedisponuje mnoho dalšími funkcemi, které v Pythonu najdeme[4] (např. async for, async with, lambda nebo používání tříd).[5]
Mojo může být oproti pythonu až 68 000krát rychlejší (testováno na výpočtu Mandelbrotovy množiny na zařízení h3-standard-88 Intel Xeon Instance)[6]. Rychlost zajišťuje především technologie MLIR (Multi-Level Intermediate Representation), která využívá vícevrstevný kompilátor, který umožňuje optimálně využívat různé výpočetní platformy.[7] Mojo také využívá SIMD funkce, které umožňují centrální procesorové jednotce zpracovávat několik instrukcí najednou, což značně zrychlí provedení kódu.[8]
Mojo má vyvíjející se systém knihoven, oproti pythonu, který disponuje více než 137 000 knihovnami[9], se ale jedná stále jen o zlomek.[10]
Programovací jazyk byl vyvinut především za účelem práce s umělou inteligencí a strojovým učením, díky podobné syntaxi s pythonem jej může využít širší spektrum vývojářů.[4]