Technologický svět se neustále vyvíjí. Nejnovějším přírůstkem v oblasti programování je jazyk Mojo. Jeho cílem je zrychlit běh projektů postavených na Pythonu, a to tak, že vývojářům poskytne rychlost srovnatelnou s jazykem C.
Python je jedním z nejpopulárnějších programovacích jazyků. Je to univerzální a snadno naučitelný jazyk, který slouží jako skvělý vstupní bod do programování a informatiky.
Je také výborným nástrojem pro zkušené vývojáře, kteří s ním mohou vytvářet složité aplikace. Jednou z jeho hlavních nevýhod je však rychlost provádění kódu. A právě zde se do hry dostává Mojo.
Tento článek se zaměří na jazyk Mojo a jeho vztah k ekosystému Pythonu. Pojďme se na to podívat.
Co je Mojo?
Mojo je moderní programovací jazyk na vysoké úrovni. Nabízí intuitivní design, který vývojářům usnadňuje rychlou tvorbu aplikací. Jeho záměrem je překlenout propast mezi praktickým využitím a výzkumem, a to tím, že uživatelům umožní využívat metaprogramování a systémové programování se syntaxí a ekosystémem Pythonu.
Inspiraci čerpá z jazyka Rust a slibuje rychlý běh kódu v ekosystému Pythonu. Technicky vzato je Mojo nadmnožinou Pythonu, což mu dává výhodu přístupu k jeho zdrojům.
Za projektem Mojo stojí společnost Modular, která se zabývá infrastrukturou pro umělou inteligenci. Z toho plyne, že je to jazyk určený především pro vývojáře AI. Kromě samotného jazyka Mojo představili také Inference Engine, který má vývojářům pomoci zlepšit pracovní postupy, škálovat projekty AI a snížit latenci odvozování (o tom více později).
Podle generálního ředitele společnosti Modular, Chrise Lattnera, je Mojo až 35 000krát rychlejší než Python. To je dosaženo díky využití LLVM kompilátoru a infrastruktury kompilátoru MILR (Multi-level Intermediate Representation Overview). Rychlý vývoj jazyka je dalším z jeho kladů.
Mezi cíle jazyka Mojo patří:
- Plná kompatibilita s ekosystémem Python.
- Umožnit vývojářům nasazovat části kódu na akcelerátory.
- Nízkoúrovňová kontrola pro zajištění předvídatelného výkonu.
- Zabránit fragmentaci ekosystému.
Pro otestování jazyka Mojo je třeba využít cloudové prostředí Mojo Playground. Po přihlášení získáte pracovní prostor!
Proč potřebujeme Mojo?
Základní myšlenkou jazyka Mojo je sjednotit infrastrukturu pro strojové učení a umělou inteligenci tím, že poskytne programovací jazyk, který funguje napříč celým softwarovým zásobníkem. Navíc zjednodušuje práci tím, že odstraňuje nutnost psát kód v jazyce MLIR.
Podle společnosti Modular bude Mojo nabízet škálovatelný a inovativní model programování. Uživatelům v oblasti AI tak usnadní práci s akcelerátory a heterogenními systémy.
Mojo technicky podporuje metaprogramování v době kompilace. Dále disponuje funkcemi jako ukládání do mezipaměti během kompilace a adaptivními technikami kompilace. Tyto vlastnosti nenabízejí jiné programovací jazyky.
Chcete-li se dozvědět více o filozofii jazyka Mojo, podívejte se na Modular Docs – Why Mojo🔥
Vlastnosti programovacího jazyka Mojo
V této části se podíváme na klíčové vlastnosti programovacího jazyka Mojo.
#1. Kompletní kompatibilita s Pythonem
Cílem jazyka Mojo je pracovat s ekosystémem Pythonu, nikoliv proti němu. To je vidět na tom, že Mojo používá stejné funkce, knihovny a vlastnosti, které nabízí Python. V Mojo tak můžete použít jakoukoliv knihovnu Pythonu.
Pro import knihoven použijte následující kód:
from PythonInterface import Python
Následně můžete použít `Python.import_module()` k importu jakékoliv knihovny Pythonu.
Například pro import knihovny NumPy použijte tento řádek kódu:
let np = Python.import_module(“numpy”)
V Pythonu byste použili `import numpy as np`.
Po importu můžete knihovnu NumPy využít k vytváření polí, provádění výpočtů a dalším úkonům.
array = np.array([1, 2, 3]) print(array)
Stejným způsobem můžete importovat i `matplotlib.pyplot` a vytvořit graf v Mojo.
Takto to vypadá, když kód spustím v Mojo Playground.
Pokud si chcete kód vyzkoušet, zkopírujte a vložte jej zespodu.
from PythonInterface import Python let np = Python.import_module("numpy") array = np.array([1, 2, 3, 4, 5]) print(array)
#2. MILR
MILR znamená Multi-Level Intermediate Representation (víceúrovňová reprezentace mezikódu). Mojo MILR podporuje. To umožňuje vývojářům využívat řadu nových pokročilých funkcí, včetně hardwarových jednotek AI, vláken a vektorů.
MILR zvyšuje výkon díky souběžnosti, čímž je Mojo rychlejší než Python. Navíc umožňuje vývojářům využít více jader procesoru.
#3. Kontrola vlastnictví a zapůjčení
Správa paměti v Pythonu je bezpečná. Používá garbage collector, takže programátoři se nemusí starat o to, aby kód nenarazil na závodní podmínky.
Mojo, podobně jako Rust, zavádí přísný model kontroly vlastnictví a zapůjčení. V současné době je implementován částečně. Cílem tohoto modelu je zlepšit souběžnost a zajistit efektivnější správu paměti.
Model vlastnictví také zaručuje bezpečný přístup z vláken, což je ideální pro zajištění vynikající podpory souběžnosti. Programy se tak vyhnou závodním podmínkám. Zapůjčovatel navíc zajišťuje, že proměnné jsou vždy kontrolovány za běhu.
#4. Nulové náklady na abstrakci
Mojo nabízí abstrakce s nulovými náklady a umožňuje vývojářům mít plnou kontrolu nad úložnými prostory. Programátoři zde mohou provádět inline přiřazení hodnot strukturám.
#5. Automatické ladění
Mojo nabízí automatické ladění. Automaticky přiřazuje nejlepší hodnoty parametrům v závislosti na cílovém hardwaru.
Automatické ladění eliminuje nutnost ruční optimalizace kódu pro cílový hardware.
Rychlost: Jak rychlý je jazyk Mojo?
Python je programovací jazyk na vysoké úrovni, který se zaměřuje na snadné používání a udržovatelnost. Bohužel je ve srovnání s jinými řešeními nebo jazyky pomalý.
V testu, který provedla společnost Modular, zjistili, že Mojo je 35 000krát rychlejší. Použili Mandelbrotův algoritmus a spustili jej na instanci AWS s procesorem Intel Xeon. Spolu s Pythonem testovali i PYPY, SCALAR C++ a MOJO. Výsledky byly ohromující a můžete je vidět níže.
Zdroj: modular.com
Pokud se chcete dozvědět více o rychlosti jazyka Mojo, podívejte se na tento příspěvek na komunitě Julialang.
Modular Inference Engine – provozujte modely AI levně
Společnost Modular také vyvíjí modul Modular Inference Engine, který má zlevnit provoz modelů AI v produkčním prostředí. Mojo má podporu Modular Inference Engine již v základní konfiguraci. Umožňuje týmům zjednodušit pracovní procesy. Snižuje také latenci odvozování, což usnadňuje škálování produktů AI.
Vývojáři navíc nemusí měnit své modely, aby mohli Engine používat. Po načtení může přeplňovat modely PyTorch a TensorFlow a dosahovat vysokého výkonu s širokou hardwarovou podporou.
Nahradí Python?
Mojo je nový jazyk. Vypadá slibně. Bude ale nějakou dobu trvat, než se dostane do povědomí cílových skupin, jako jsou datoví vědci nebo vývojáři. Jistě, řeší konkrétní problémy pro nadšence a studenty AI. Existuje však mnoho podobných řešení, která vylepšují rychlost jazyka Python. Například Jax, Codon a Julia – jazyk orientovaný na data.
Mohou tedy nastat dvě situace. Za prvé, Mojo exponenciálně poroste v počtu funkcí a komunita jej přijme. Dalším možným scénářem je, že se z něj stane programovací jazyk pro specifické účely, který bude využívat knihovny Pythonu a Modular Inference Engine.
Takže nahradí Mojo Python? To ukáže až čas.
Podívejte se také na užitečné jednoduché řádky kódu v Pythonu, které vám zjednoduší běžné úlohy.