Pred pár dňami to priniesla správa Chris Lattner, zakladateľ a hlavný architekt LLVM a Tim Davis, bývalý vedúci projektov AI v spoločnosti Google vydala "Mojo", nový programovací jazyk, založený na Pythone, ktorý opravuje problémy s implementáciou a výkonom Pythonu.
Spomína sa, že Mojo že spája jednoduchosť použitia pre výskum a vývoj a rýchle prototypovanie s primeranosťou pre vysokovýkonné koncové produkty. Prvý je dosiahnutý použitím známej syntaxe jazyka Python a druhý je spôsobený schopnosťou kompilovať do strojového kódu, mechanizmami na bezpečnú správu pamäte a použitím nástrojov na hardvérovú akceleráciu výpočtov.
O Mojovi
Tento nový programovací jazyk sa zameriava na využitie pre rozvoj strojového učenia, ale ánoe prezentované ako všeobecný jazyk ktorý rozširuje možnosti jazyka Python o systémové programovanie a je vhodný pre široké spektrum úloh.
Jazyk je napríklad použiteľný v oblastiach, ako je vysokovýkonná výpočtová technika, spracovanie údajov a transformácia údajov. Zaujímavou funkciou Mojo je možnosť špecifikovať symbol emoji „🔥“ ako príponu pre súbory s kódom.
Projekt je navrhnutý tak, aby zahŕňal hardvérové zdroje systémov dostupných v systéme vo výpočtoch. Napríklad GPU, špecializované urýchľovače strojového učenia a inštrukcie na spracovanie vektorov (SIMD) možno použiť na spúšťanie aplikácií Mojo a paralelizáciu výpočtov.
Dôvod pre vývoj samostatnej podmnožiny jazyka Python, namiesto pripojenia sa k existujúcej optimalizačnej práci CPythonu, sa uvádza ako:
Prístup k zostaveniu, integrácia programovacích možností systému a použitie zásadne odlišnej internej architektúry, ktorá umožňuje spúšťanie kódu na GPU a rôznych hardvérových akcelerátoroch. Vývojári Mojo sa zároveň chcú čo najviac držať podpory CPythonu.
Mojo je možné použiť v režime interpretácie JIT aj na kompiláciu do spustiteľných súborov (AOT, v predstihu). Kompilátor má vstavané moderné technológie na samooptimalizáciu, ukladanie do vyrovnávacej pamäte a distribuovanú kompiláciu.
Kód zdrojové kódy v jazyku Mojo sú konvertované na nízkoúrovňový stredný kód MLIR (Multi-Level Intermediate Representation), vyvinutý v rámci projektu LLVM a poskytujúci ďalšie funkcie na optimalizáciu spracovania grafov toku údajov.
Použitie dodatočných hardvérových mechanizmov na zrýchlenie výpočtov vám umožňuje dosiahnuť výkon, ktorý pri intenzívnych výpočtoch prekonáva aplikácie v C/C++.
Chris lattner je zodpovedný za vytvorenie mnohých projektov, na ktoré sa dnes všetci spoliehame, aj keď sme možno ani nepočuli o všetkom, čo vybudoval! V rámci svojej doktorandskej práce začal s vývojom LLVM, ktorý zásadne zmenil spôsob zostavovania kompilátorov a dnes tvorí základ mnohých svetovo najpoužívanejších lingvistických ekosystémov.
Potom vydal Clang, kompilátor C a C++, ktorý je umiestnený nad LLVM a používa ho väčšina popredných svetových vývojárov softvéru (vrátane poskytovania chrbtovej siete pre kód kritický z hľadiska výkonu).
Pri hodnotení výkonu v oblasti riešenia problémov strojového učenia sa zistilo, že zásobník Modular Inference Engine AI napísaný v jazyku Mojo je v porovnaní s riešením založeným na knižnici TensorFlow 3-krát rýchlejší na systéme s procesorom Intel.
Chris však videl, že C a C++ nevyužívajú naplno silu LLVM, a tak počas práce v Apple navrhol nový jazyk nazvaný „Swift“, ktorý opisuje ako „syntax cukor pre LLVM“.
Za zmienku stojí, že jazyk podporuje statické písanie a bezpečné nízkoúrovňové pamäťové funkcie ktoré pripomínajú funkcie Rust, ako je sledovanie referenčného života a variabilné požičiavanie (kontrola pôžičiek).
Okrem prostriedkov na bezpečnú obsluhu s ukazovateľmi, jazyk poskytuje aj funkcie pre prácu na nízkej úrovni, napríklad je možné priamo pristupovať do pamäte v nebezpečnom režime pomocou typu ukazovateľa, volať jednotlivé inštrukcie SIMD alebo pristupovať k hardvérovým rozšíreniam, ako sú TensorCores a AMX.
V súčasnej dobe, jazyk sa intenzívne vyvíja a ponúka sa iba rozhranie online vyskúšať. Budúcimi prísľubmi je vydať samostatné zostavy, ktoré sa budú spúšťať na lokálnych systémoch neskôr, po získaní spätnej väzby o práci interaktívneho webového prostredia.
Otvorený zdrojový kód kompilátora, JIT a ďalší vývoj súvisiaci s projektom sa plánuje po dokončení návrhu vnútornej architektúry (vývojový model pre pracovný prototyp so zatvorenými dverami sa podobá ranému štádiu vývoja LLVM, Clang a Swift).
Keďže syntax Mojo je založená na Pythone a typový systém je blízky C/C++, v budúcnosti sa plánuje vyvinúť súbor nástrojov, ktoré uľahčia preklad existujúcich projektov napísaných v C/C++ a Pythone do Mojo. ako vyvinúť hybridné projekty, ktoré kombinujú kód Python a Mojo.
Nakoniec, ak máte záujem dozvedieť sa o tom viac, môžete sa obrátiť na podrobnosti Na nasledujúcom odkaze.
zaujimave toto.... (bez akcentov)