Přáli jste si někdy vytvářet rychlejší a efektivnější aplikace, ale zjistili jste, že standardní programovací jazyky nejsou schopny splnit vaše požadavky?
Tehdy přichází do hry jazyk Mojo.
Mojo je nový programovací jazyk vyvinutý společností Modulární, společnost, která se specializuje na infrastrukturu AI.
Je speciálně navržen tak, aby umožnil vývojářům vytvářet rychlejší a robustnější aplikace pro několik případů použití, včetně vývoje AI. V tomto příspěvku se podíváme na co Mojo je, jak to funguje a proč byste je měli použít ve svém dalším projektu.
Origins of Mojo
Tvůrci Mojo rozpoznali potřebu programovacího jazyka, který by kombinoval použitelnost Pythonu s rychlostí a efektivitou C.
A vytvořili jazyk, který by vývojářům umožnil vytvářet vysoce výkonné aplikace, aniž by se museli učit standardní jazyky pro popis hardwaru.
V důsledku toho vytvořili Mojo, které má být plně kompatibilní s ekosystémem Python a zároveň poskytovat rychlost na úrovni C.
Modulární: Organizace za jazykem Mojo
Kdo jsou tedy tvůrci tohoto futuristického jazyka?
Modular je přední světový startup v oblasti AI infrastruktury vytvořený Chrisem Lattnerem a Timem Davisem, kteří se setkali v Googlu a uvědomili si, že příliš komplikovaná a roztříštěná infrastruktura omezuje globální vliv AI.
Cílem a cílem Modular je přehodnotit infrastrukturu umělé inteligence za účelem posílení lidstva. Jejich kultura a zásady kladou důraz na klienty, vysoce kvalitní produkční software a poskytování smysluplných výsledků
Cíle Mojo
Mojo bylo navrženo tak, aby poskytovalo jedinečný programovací model pro akcelerátory strojového učení.
Modular určil, že Mojo by mělo umožnit univerzální programování, protože dnešní CPU mají tenzory a další akcelerátory AI. Kromě toho, protože Python je široce používán ve strojovém učení a dalších oblastech, Modular se rozhodl připojit se k ekosystému Python.
Použití Pythonu dále usnadnilo návrh jazyka. Protože většina syntaxe již byla určena, společnost se mohla místo toho soustředit na budování mechanismu kompilace a poskytování specializovaných programovacích schopností.
Důležité funkce ke zvážení
programovatelnost
Progresivní typy
Funkce progresivních typů jazyka Mojo umožňuje vývojářům používat typové anotace zvýšit efektivitu a kontroly chyb.
Vývojáři mohou navrhnout efektivnější kód, který detekuje chyby v době kompilace, eliminuje chyby a zvyšuje efektivitu poskytováním důkladnějších informací o typu.
Abstrakce s nulovými náklady
Vývojáři mohou převzít kontrolu nad úložištěm vložením dat do struktur díky abstrakcím s nulovými náklady, které poskytuje jazyk Mojo.
Odstraněním požadavku na přidělování paměti navíc tato funkce zlepšuje efektivitu kódu a snižuje množství standardního kódu.
Integrované automatické ladění jazyka
Jazykově integrovaná funkce automatického ladění v Mojo Language umožňuje vývojářům automaticky určit ideální hodnoty parametrů pro užitek z cílového hardwaru.
S touto funkcí je jednodušší optimalizovat kód, aniž byste jej museli ručně upravovat pro každou kombinaci hardwaru.
Mojo Language je flexibilní a efektivní nástroj pro vývoj AI, protože také poskytuje veškerou sílu MLIR (Multi-Level Intermediate Representation), paralelní heterogenní běhové prostředí a rychlé časy sestavení.
Paralelizace
Mojo využívá MLIR, který umožňuje programátorům využívat vektory, vlákna a hardwarové jednotky pro AI pro paralelizaci. Mojo podporuje paralelní zpracování na několika jádrech na rozdíl od jednovláknového provádění Pythonu.
Díky 35,000 XNUMXnásobnému zrychlení oproti Pythonu Mojo překonává ostatní jazyky, pokud jde o rychlost.
Interoperabilita
Interoperabilita s celým ekosystémem Pythonu je jednou z jedinečných výhod Mojo. To znamená, že Mojo můžete kombinovat s libovolnými knihovnami, jako jsou Numpy a Matplotlib, a také s vaším kódem na míru.
Například můžete vizualizovat data v kódu Mojo pomocí knihovny Python Matplotlib.
Rozšiřitelnost
Mojo je také poměrně flexibilní a umožňuje uživatelům jednoduše přidávat kroky před a po zpracování do modelů nebo vyměnit stávající kroky za nové.
Pro vylepšení svých modelů a modulárního zásobníku mohou vývojáři používat fúzi jádra, přepisování grafů, funkce tvarů a další techniky.
Proč byste jej zvolili před Pythonem?
Python je oblíbený vývojový jazyk AI díky své flexibilitě a vysoce výkonným kompilovaným knihovnám. Je však výrazně pomalejší než jazyky jako C++.
Programátoři se proto učí používat obaly Pythonu kolem rychlejších jazyků, aby se vyhnuli používání Pythonu v oblastech kritických pro výkon.
To vede k dvoujazyčnému problému, kdy modely musí být transformovány z Pythonu do rychlejší implementace, jako je ONNX nebo torch script, který nepodporuje všechny schopnosti Pythonu. Python má také problémy s výkonem a nedostatek dobrého paralelního zpracování.
Dokonce i zkušení programátoři považují za obtížné studovat, ladit a řešit problémy s výkonem kvůli dilematu dvou jazyků.
Existují také základní omezení toho, co Python může dělat, kvůli způsobu, jakým je jazyk strukturován. I když se implementace algoritmů využívajících základní komponenty v reálném světě může zdát snadná, je podstatně obtížnější a vyžaduje použití rychlejšího jazyka.
Jak začít?
Jazyk Mojo můžete začít používat hned teď na jejich hřišti. Playground založené na JupyterHub poskytuje lekce a příležitost vytvořit si vlastní Mojo kód, i když Mojo je stále ve vývoji.
Pro přístup na hřiště se můžete zaregistrovat na jejich webových stránkách.
K dosažení svých výkonnostních cílů využívá Mojo technologie kompilátorů nové generace s integrovaným ukládáním do mezipaměti, multithreadingem a technologiemi cloudové distribuce.
Přidává další primitiva k systémovému programování a aspiruje na to, aby se časem stal nadmnožinou Pythonu. Chcete-li začít kódovat pomocí Mojo, použijte kompilátor Mojo ke spuštění programu Mojo z terminálu stejným způsobem, jako to dělá Python.
Jazyk je v současné době ve vývoji a je zaměřen na vývojáře se zkušenostmi s programováním systémů.
Zabalit
Mojo je považováno za superset Pythonu. A má potenciál způsobit revoluci v programování tím, že kombinuje jednoduchost Pythonu s výkonem C++ a Rust.
Dokáže využít naplno Knihovna Python ekosystém, který umožňuje vývojářům vytvářet vysoce výkonné knihovny bez potřeby C, C++, Rust nebo CUDA.
Umožňuje produkci přenosného kódu díky svým funkcím automatického ladění a metaprogramování v době kompilace.
Přestože se stále jedná o nedokončenou práci, má potenciál stát se impozantním programovacím nástrojem a transformovat programovací průmysl. Takže bychom měli zůstat naladěni na budoucí vývoj od Modular!
Chris Santos
Myslíte si, že by člověk se základními až středně pokročilými znalostmi mohl začít studovat tento nový jazyk? Nebo radíte nejprve studovat nějaký základnější jazyk, jako je Javascript nebo Python?
İlke Candan Bengi
Ahoj Chrisi, omlouvám se za pozdní odpověď! Věřím, že základní porozumění/zkušenost Pythonu by mohla být užitečná, než začnete s Mojo.