Mojo (programovací jazyk)
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:
- jednoduchost psaní/čtení zdrojového kódu známou z jazyka Python
- výkonnost běhu aplikací kompilovaných jazyků typu C++ a Rust
Syntaxe
[editovat | editovat zdroj]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 programu
[editovat | editovat zdroj]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)
Dostupnost
[editovat | editovat zdroj]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]
Systémové požadavky:
[editovat | editovat zdroj]Linux:
[editovat | editovat zdroj]- Ubuntu 20.04/22.04 LTS
- x86-64 CPU (SSE4.2 nebo novější) nebo AWS Graviton2/3 CPU
- Minimálně 8 GB RAM
- Python 3.8 - 3.11
- g++ nebo clang++ C++ kompilátor
Mac
[editovat | editovat zdroj]- Apple silicon (M1 or M2 procesor)
- MacOS Monterey (12) nebo novější
- Python 3.8 - 3.11
- Nástroje příkazového řádku pro Xcode nebo Xcode [3]
Kompatibilita
[editovat | editovat zdroj]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]
Rozdíly oproti Pythonu
[editovat | editovat zdroj]Výkon
[editovat | editovat zdroj]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]
Knihovny
[editovat | editovat zdroj]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]
Využití
[editovat | editovat zdroj]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]
Reference
[editovat | editovat zdroj]- ↑ [Claburn]. The register. www.theregister.com [online]. Pá 5. kvě 2023 [cit. 2024-03-21]. Dostupné online.
- ↑ Oficiální Mojo dokumentace. docs.modular.com [online]. [cit. 2024-03-22]. Dostupné v archivu pořízeném z originálu dne 2024-03-22.
- ↑ a b Get started with Mojo🔥 | Modular Docs. docs.modular.com [online]. [cit. 2024-04-04]. Dostupné online. (anglicky)
- ↑ a b Why Mojo🔥 | Modular Docs. docs.modular.com [online]. [cit. 2024-04-04]. Dostupné online. (anglicky)
- ↑ Mojo🔥 roadmap & sharp edges | Modular Docs. docs.modular.com [online]. [cit. 2024-04-04]. Dostupné online. (anglicky)
- ↑ SIVANANDHAN, Shriram. Mojo Programming Language — 68000x Faster than Python: Programming in Mojo — Part II [online]. 2023-09-25 [cit. 2024-04-04]. Dostupné online. (anglicky)
- ↑ MLIR. mlir.llvm.org [online]. [cit. 2024-04-04]. Dostupné online.
- ↑ LANGUAGE, Mojo Programming. Mojo Programming Language for AI Developers 2024 [online]. 2024-04-01 [cit. 2024-04-04]. Dostupné v archivu pořízeném dne 2024-04-04. (anglicky)
- ↑ Installing libraries and packages - Advanced Research Computing. docs.support.arc.umich.edu [online]. [cit. 2024-04-04]. Dostupné online.
- ↑ Mojo🔥 modules | Modular Docs. docs.modular.com [online]. [cit. 2024-04-04]. Dostupné online. (anglicky)