Chceli ste niekedy vytvárať rýchlejšie a efektívnejšie aplikácie, no zistili ste, že štandardné programovacie jazyky nedokážu splniť vaše požiadavky?
Vtedy prichádza do hry jazyk Mojo.
Mojo je nový programovací jazyk vyvinutý spoločnosťou Modulárny, spoločnosť, ktorá sa špecializuje na infraštruktúru AI.
Je špeciálne navrhnutý tak, aby umožnil vývojárom vytvárať rýchlejšie a robustnejšie aplikácie pre niekoľko prípadov použitia vrátane vývoja AI. V tomto príspevku sa pozrieme na to, čo Mojo je, ako to funguje a prečo by ste ho mali použiť vo svojom ďalšom projekte.
Pôvod Mojo
Tvorcovia Mojo uznali potrebu programovacieho jazyka, ktorý kombinuje použiteľnosť Pythonu s rýchlosťou a efektívnosťou C.
A vytvorili jazyk, ktorý by vývojárom umožnil vytvárať vysokovýkonné aplikácie bez toho, aby sa museli učiť štandardné jazyky popisu hardvéru.
V dôsledku toho vytvorili Mojo, ktorý má byť plne kompatibilný s ekosystémom Python a zároveň poskytovať rýchlosť na úrovni C.
Modulárny: Organizácia za jazykom Mojo
Kto sú teda tvorcovia tohto futuristického jazyka?
Modular je popredný svetový startup v oblasti infraštruktúry AI, ktorý vytvorili Chris Lattner a Tim Davis, ktorí sa stretli v spoločnosti Google a uvedomili si, že príliš komplikovaná a roztrieštená infraštruktúra obmedzuje globálny vplyv AI.
Cieľom a cieľom Modular je prehodnotiť infraštruktúru AI s cieľom posilniť ľudstvo. Ich kultúra a princípy kladú dôraz na klientov, vysokokvalitný produkčný softvér a poskytovanie zmysluplných výsledkov
Ciele Moja
Mojo bol navrhnutý tak, aby poskytoval jedinečný programovací model pre urýchľovače strojového učenia.
Modular určil, že Mojo by malo umožňovať univerzálne programovanie, pretože dnešné CPU majú tenzory a iné AI akcelerátory. Okrem toho, pretože Python sa vo veľkej miere používa v strojovom učení a iných oblastiach, Modular sa rozhodol pripojiť k ekosystému Python.
Použitie Pythonu ďalej zjednodušilo dizajn jazyka. Pretože väčšina syntaxe už bola určená, spoločnosť sa mohla namiesto toho sústrediť na vytvorenie mechanizmu kompilácie a poskytovanie špecializovaných programovacích možností.
Dôležité funkcie, ktoré je potrebné zvážiť
programovateľnosť
Progresívne typy
Funkcia progresívnych typov jazyka Mojo umožňuje vývojárom používať anotácie typu zvýšiť efektivitu a kontroly chýb.
Vývojári môžu navrhnúť efektívnejší kód, ktorý zisťuje chyby v čase kompilácie, odstraňuje chyby a zvyšuje efektivitu poskytovaním dôkladnejších informácií o type.
Abstrakcie s nulovými nákladmi
Vývojári môžu prevziať kontrolu nad úložiskom vložením údajov do štruktúr vďaka abstrakciám s nulovými nákladmi, ktoré poskytuje jazyk Mojo.
Odstránením požiadavky na ďalšie prideľovanie pamäte táto funkcia zlepšuje efektivitu kódu a znižuje množstvo štandardného kódu.
Integrované automatické ladenie jazyka
Jazykovo integrovaná funkcia automatického ladenia v jazyku Mojo umožňuje vývojárom automaticky určiť ideálne hodnoty parametrov, aby mohli profitovať z cieľového hardvéru.
S touto funkcionalitou je jednoduchšie optimalizovať kód bez toho, aby ste ho museli manuálne upravovať pre každú kombináciu hardvéru.
Mojo Language je flexibilný a efektívny nástroj pre vývoj AI, pretože tiež poskytuje celý výkon MLIR (Multi-Level Intermediate Representation), paralelný heterogénny runtime a rýchle zostavenie.
paralelizácie
Mojo využíva MLIR, ktorý umožňuje programátorom využívať vektory, vlákna a hardvérové jednotky pre AI na paralelizáciu. Mojo podporuje paralelné spracovanie na niekoľkých jadrách na rozdiel od jednovláknového vykonávania Pythonu.
S 35,000 XNUMX-násobným zrýchlením oproti Pythonu Mojo poráža ostatné jazyky z hľadiska rýchlosti.
interoperabilita
Interoperabilita s celým ekosystémom Pythonu je jednou z jedinečných výhod Mojo. To znamená, že Mojo môžete kombinovať s ľubovoľnými knižnicami, ako sú Numpy a Matplotlib, ako aj s vašim kódom na mieru.
Napríklad môžete vizualizovať údaje vo svojom Mojo kóde pomocou knižnice Python Matplotlib.
prodloužitelnost
Mojo je tiež dosť flexibilný a umožňuje používateľom jednoducho pridať kroky pred a po spracovaní do modelov alebo vymeniť existujúce kroky za nové.
Na zlepšenie svojich modelov a modulárneho zásobníka môžu vývojári použiť fúziu jadra, prepisovanie grafov, funkcie tvarov a ďalšie techniky.
Prečo by ste si ho vybrali pred Pythonom?
Python je populárny vývojový jazyk AI vďaka svojej flexibilite a vysokovýkonným kompilovaným knižniciam. Je však výrazne pomalší ako jazyky ako C++.
Preto sa programátori učia používať obaly Pythonu okolo rýchlejších jazykov, aby sa vyhli používaniu Pythonu v oblastiach kritických z hľadiska výkonu.
To vedie k problému dvoch jazykov, v ktorom sa modely musia transformovať z Pythonu na rýchlejšiu implementáciu, ako je ONNX alebo torch script, ktorý nepodporuje všetky schopnosti Pythonu. Python má tiež problémy s výkonom a nedostatok dobrého paralelného spracovania.
Aj pre skúsených programátorov je ťažké študovať, ladiť a riešiť problémy s výkonom kvôli dileme dvoch jazykov.
Existujú aj základné obmedzenia toho, čo Python dokáže, vzhľadom na spôsob, akým je jazyk štruktúrovaný. Zatiaľ čo implementácia algoritmov využívajúcich základné komponenty v reálnom svete sa môže zdať jednoduchá, je podstatne zložitejšia a vyžaduje si použitie rýchlejšieho jazyka.
Ako začať?
Jazyk Mojo môžete začať používať hneď teraz na ich ihrisku. Ihrisko založené na JupyterHub poskytuje lekcie a možnosť vytvoriť si vlastný Mojo kód, aj keď Mojo je stále vo vývoji.
Pre prístup na ihrisko sa môžete zaregistrovať na ich webovej stránke.
Na dosiahnutie svojich výkonnostných cieľov Mojo využíva technológie kompilátorov novej generácie s integrovanými technológiami ukladania do vyrovnávacej pamäte, multithreadingu a cloudovej distribúcie.
Pridáva do programovania systémov ďalšie primitívy a ašpiruje na to, aby sa časom stal nadmnožinou Pythonu. Ak chcete začať kódovať pomocou Mojo, použite kompilátor Mojo na spustenie programu Mojo z terminálu rovnakým spôsobom, ako to robí Python.
Jazyk je momentálne vo vývoji a je určený pre vývojárov so skúsenosťami s programovaním systémov.
Zabaliť
Mojo sa považuje za supermnožinu Pythonu. A má potenciál spôsobiť revolúciu v programovaní tým, že kombinuje jednoduchosť Pythonu s výkonom C++ a Rust.
Dokáže využiť naplno Knižnica Python ekosystém, ktorý umožňuje vývojárom vytvárať vysokovýkonné knižnice bez potreby C, C++, Rust alebo CUDA.
Umožňuje produkciu prenosného kódu vďaka svojim funkciám automatického ladenia a metaprogramovania v čase kompilácie.
Aj keď je to stále prebiehajúca práca, má potenciál stať sa impozantným programovacím nástrojom a transformovať programovací priemysel. Takže by sme mali zostať naladení na budúci vývoj od Modular!
Chris Santos
Myslíte si, že človek so základnými až stredne pokročilými znalosťami by bol schopný začať študovať v tomto novom jazyku? Alebo radíte najprv študovať nejaký základnejší jazyk, ako je Javascript alebo Python?
İlke Candan Bengi
Ahoj Chris, prepáč za neskorú odpoveď! Verím, že základné porozumenie/skúsenosť Pythonu vopred môže byť užitočné predtým, ako začnete s Mojo.