Před pár dny to přinesla zpráva Chris Lattner, zakladatel a hlavní architekt LLVM a Tim Davis, bývalý vedoucí projektů AI ve společnosti Google vydala "Mojo", nový programovací jazyk, založené na Pythonu, který opravuje problémy s implementací Pythonu a výkonem.
Je zmíněno, že Mojo že kombinuje snadnost použití pro výzkum a vývoj a rychlé prototypování s přiměřeností pro vysoce výkonné koncové produkty. Toho prvního je dosaženo použitím známé syntaxe jazyka Python a toho druhého je způsobeno schopností kompilace do strojového kódu, mechanismy pro bezpečnou správu paměti a použitím nástrojů pro hardwarovou akceleraci výpočtů.
O Mojovi
Tento nový programovací jazyk se zaměřuje na využití pro vývoj strojového učení, ale anoe prezentovány jako univerzální jazyk který rozšiřuje možnosti jazyka Python o systémové programování a je vhodný pro širokou škálu úloh.
Jazyk je například použitelný v oblastech, jako jsou vysoce výkonné výpočty, zpracování dat a transformace dat. Zajímavou funkcí Mojo je možnost specifikovat symbol emoji „🔥“ jako příponu pro soubory kódu.
Projekt je navržen tak, aby zahrnoval hardwarové zdroje systémů dostupných v systému ve výpočtech. Například GPU, specializované akcelerátory strojového učení a instrukce pro vektorové zpracování (SIMD) lze použít ke spouštění aplikací Mojo a paralelizaci výpočtů.
Důvod pro vývoj samostatné podmnožiny jazyka Python, spíše než připojení ke stávající optimalizační práci CPythonu, je citován jako:
Přístup k sestavení, integrace programovacích schopností systému a použití zásadně odlišné vnitřní architektury, která umožňuje spouštění kódu na GPU a různých hardwarových akcelerátorech. Vývojáři Mojo se zároveň hodlají co nejvíce držet podpory CPythonu.
Mojo lze použít jak v režimu interpretace JIT, tak pro kompilaci do spustitelných souborů (AOT, v předstihu). Kompilátor má vestavěné moderní technologie pro vlastní optimalizaci, ukládání do mezipaměti a distribuovanou kompilaci.
Kód zdrojové kódy v jazyce Mojo jsou převedeny na nízkoúrovňový střední kód MLIR (Multi-Level Intermediate Representation), vyvinutý projektem LLVM a poskytující další funkce pro optimalizaci zpracování grafů toku dat.
Použití dalších hardwarových mechanismů pro urychlení výpočtů umožňuje dosáhnout výkonu, který při intenzivních výpočtech překonává aplikace C/C++.
Chris lattner je zodpovědný za vytvoření mnoha projektů, na které dnes všichni spoléháme, i když jsme možná ani neslyšeli o všem, co postavil! V rámci své doktorské práce zahájil vývoj LLVM, který zásadně změnil způsob, jakým jsou sestavovány kompilátory, a dnes tvoří základ mnoha světově nejrozšířenějších lingvistických ekosystémů.
Poté vydal Clang, kompilátor C a C++, který je umístěn nad LLVM a je používán většinou předních světových vývojářů softwaru (včetně poskytování páteře pro kód kritický pro výkon).
Při hodnocení výkonu v oblasti odstraňování problémů se strojovým učením bylo zjištěno, že zásobník Modular Inference Engine AI napsaný v jazyce Mojo je v porovnání s řešením založeným na knihovně TensorFlow 3krát rychlejší na systému s procesorem Intel.
Chris však viděl, že C a C++ plně nevyužívají sílu LLVM, a tak při práci v Applu navrhl nový jazyk nazvaný „Swift“, který popisuje jako „syntaktický cukr pro LLVM“.
Za zmínku stojí, že jazyk podporuje statické psaní a bezpečné nízkoúrovňové paměťové funkce které připomínají funkce Rust, jako je sledování referenčního života a variabilní půjčování (loan checker).
Kromě prostředků pro bezpečnou obsluhu s ukazateli, jazyk poskytuje také funkce pro práci na nízké úrovni, je například možné přímo přistupovat do paměti v nebezpečném režimu pomocí typu ukazatele, volat jednotlivé instrukce SIMD nebo přistupovat k hardwarovým rozšířením, jako jsou TensorCores a AMX.
V současné době, jazyk se intenzivně vyvíjí a nabízí se pouze rozhraní online vyzkoušet. Budoucí sliby spočívají v tom, že po obdržení zpětné vazby o práci interaktivního webového prostředí budou vydána samostatná sestavení, která budou spuštěna na místních systémech později.
Otevřený zdrojový kód kompilátoru, JIT a další vývoj související s projektem je plánován po dokončení návrhu vnitřní architektury (vývojový model pro pracovní prototyp s uzavřenými dveřmi se podobá rané fázi vývoje LLVM, Clang a Swift).
Vzhledem k tomu, že syntaxe Mojo je založena na Pythonu a typový systém je blízký C/C++, v budoucnu se plánuje vývoj sady nástrojů, které usnadní překlad existujících projektů napsaných v C/C++ a Pythonu do Mojo. jako vývoj hybridních projektů, které kombinují kód Python a Mojo.
Konečně, pokud máte zájem dozvědět se o tom více, můžete konzultovat podrobnosti Na následujícím odkazu.
zajímavé to mohyly.... (žádné akcenty)