Jeste li ikada poželjeli konstruirati brže i učinkovitije aplikacije, a otkrili ste da standardni programski jezici ne mogu ispuniti vaše zahtjeve?
Tada Mojo jezik stupa na scenu.
Mojo je novi programski jezik razvijen od strane Modularni, tvrtka specijalizirana za AI infrastrukturu.
Posebno je osmišljen kako bi programerima omogućio izradu bržih i robusnijih aplikacija za nekoliko slučajeva upotrebe, uključujući razvoj umjetne inteligencije. U ovom postu ćemo pogledati što Mojo je, kako funkcionira i zašto biste ga trebali koristiti na svom sljedećem projektu.
Porijeklo Mojoa
Tvorci Mojoa prepoznali su potrebu za programskim jezikom koji kombinira upotrebljivost Pythona s brzinom i učinkovitošću C-a.
Uspostavili su i jezik koji bi programerima omogućio izradu aplikacija visokih performansi bez potrebe za učenjem standardnih jezika za opis hardvera.
Kao rezultat toga, stvorili su Mojo, koji bi trebao biti potpuno kompatibilan s ekosustavom Python, a istovremeno pružati brzinu C razine.
Modularno: Organizacija iza jezika Mojo
Dakle, tko su tvorci ovog futurističkog jezika?
Modular je vodeći svjetski startup za infrastrukturu umjetne inteligencije koji su stvorili Chris Lattner i Tim Davis, koji su se upoznali u Googleu i shvatili da previše komplicirana i fragmentirana infrastruktura ograničava globalni utjecaj umjetne inteligencije.
Cilj i cilj Modulara je preispitati AI infrastrukturu kako bi se unaprijedilo čovječanstvo. Njihova kultura i načela daju prednost klijentima, visokokvalitetnom proizvodnom softveru i postizanju smislenih rezultata
Ciljevi Mojoa
Mojo je osmišljen kako bi pružio jedinstven programski model za akceleratore strojnog učenja.
Modular je utvrdio da bi Mojo trebao omogućiti programiranje opće namjene jer današnji procesori imaju tenzore i druge AI akceleratore. Nadalje, budući da se Python intenzivno koristi u strojnom učenju i drugim područjima, Modular se odlučio pridružiti Python ekosustavu.
Korištenje Pythona dodatno je olakšalo dizajn jezika. Budući da je većina sintakse već bila određena, korporacija se umjesto toga mogla usredotočiti na izgradnju mehanizma kompilacije i pružanje specijaliziranih mogućnosti programiranja.
Važne značajke koje treba uzeti u obzir
programabilnost
Progresivni tipovi
Značajka progresivnih tipova jezika Mojo omogućuje razvojnim programerima korištenje komentara tipa za poboljšati učinkovitost i provjere grešaka.
Programeri mogu dizajnirati učinkovitiji kod koji otkriva pogreške tijekom kompajliranja, eliminirajući greške i povećavajući učinkovitost, pružanjem detaljnijih informacija o vrsti.
Apstrakcije bez troškova
Programeri mogu preuzeti kontrolu nad pohranom inline-alociranjem podataka u strukture zahvaljujući apstrakcijama bez troškova koje pruža jezik Mojo.
Ukidanjem zahtjeva za dodatnom dodjelom memorije, ova značajka poboljšava učinkovitost koda i smanjuje količinu standardnog koda.
Integrirano automatsko podešavanje jezika
Funkcionalnost automatskog podešavanja integrirana u jezik u jeziku Mojo omogućuje programerima da automatski odrede idealne vrijednosti parametara kako bi imali koristi od ciljanog hardvera.
S ovom funkcionalnošću jednostavnije je optimizirati kod bez potrebe da ga ručno prilagođavate za svaku kombinaciju hardvera.
Mojo jezik je fleksibilan i učinkovit alat za razvoj umjetne inteligencije budući da također pruža svu snagu MLIR-a (Multi-Level Intermediate Representation), paralelno heterogeno vrijeme izvođenja i brzo vrijeme izgradnje.
Paralelizacija
Mojo koristi MLIR, koji programerima omogućuje korištenje vektora, niti i hardverskih jedinica za AI za paralelizaciju. Mojo podržava paralelnu obradu preko nekoliko jezgri za razliku od Pythonovog izvršavanja u jednoj niti.
Uz 35,000x ubrzanje u odnosu na Python, Mojo pobjeđuje druge jezike u pogledu brzine.
Interoperabilnost
Interoperabilnost s cijelim Python ekosustavom jedna je od jedinstvenih prednosti tvrtke Mojo. To znači da možete kombinirati Mojo s proizvoljnim bibliotekama, kao što su Numpy i Matplotlib, kao i sa svojim prilagođenim kodom.
Na primjer, možete vizualizirati podatke u svom Mojo kodu pomoću Python biblioteke Matplotlib.
rastegljivost
Mojo je također prilično fleksibilan, dopuštajući korisnicima jednostavno dodavanje koraka prije i naknadne obrade modelima ili zamjenu postojećih koraka za nove.
Kako bi poboljšali svoje modele i modularni skup, programeri mogu koristiti fuziju jezgre, prepisivanje grafova, funkcije oblika i druge tehnike.
Zašto biste ga odabrali umjesto Pythona?
Python je popularan razvojni jezik umjetne inteligencije zbog svoje fleksibilnosti i kompiliranih biblioteka visokih performansi. Međutim, značajno je sporiji od jezika kao što je C++.
Stoga programeri uče koristiti Python omote oko bržih jezika kako bi izbjegli korištenje Pythona za područja kritična za performanse.
To dovodi do problema s dva jezika, u kojem se modeli moraju transformirati iz Pythona u bržu implementaciju, kao što je ONNX ili torch skripta, koja ne podržava sve mogućnosti Pythona. Python također ima problema s performansama i nedostatkom dobre paralelne obrade.
Čak je i iskusnim programerima teško proučavati, ispravljati pogreške i rješavati probleme s performansama zbog dileme dva jezika.
Postoje i osnovna ograničenja onoga što Python može učiniti zbog načina na koji je jezik strukturiran. Dok se realna implementacija algoritama koji koriste osnovne komponente može činiti jednostavnom, znatno je teža i zahtijeva upotrebu bržeg jezika.
Kako započeti?
Možete početi koristiti Mojo Language odmah u njihovom Playgroundu da biste započeli. Playground temeljen na JupyterHubu daje lekcije i priliku za stvaranje vlastitog Mojo koda, iako je Mojo još u tijeku.
Možete se registrirati za pristup na njihovoj web stranici kako biste pristupili igralištu.
Kako bi postigao svoje ciljeve izvedbe, Mojo koristi tehnologije kompajlera sljedeće generacije s integriranim tehnologijama predmemoriranja, višenitnosti i distribucije u oblaku.
Dodaje dodatne primitive sistemskom programiranju i s vremenom teži postati Python superset. Za početak kodiranja s Mojoom, upotrijebite Mojo kompajler za pokretanje Mojo programa s terminala na isti način na koji to radi Python.
Jezik je trenutno u razvoju i namijenjen je programerima s iskustvom u sistemskom programiranju.
Zamotati
Mojo se smatra Python supersetom. I ima potencijal napraviti revoluciju u programiranju kombinirajući jednostavnost Pythona s performansama C++ i Rust-a.
To može iskoristiti puni Python knjižnica ekosustava, omogućujući razvojnim programerima da stvaraju biblioteke visokih performansi bez potrebe za C, C++, Rust ili CUDA.
Omogućuje proizvodnju prenosivog koda zahvaljujući značajkama automatskog podešavanja i meta-programiranja tijekom kompajliranja.
Iako je još uvijek u tijeku, ima potencijal postati nevjerojatan alat za programiranje i transformirati industriju programiranja. Dakle, trebali bismo pratiti budući razvoj Modulara!
Chris Santos
Mislite li da bi osoba s osnovnim do srednjim znanjem mogla započeti studij ovog novog jezika? Ili savjetujete da prvo proučite neki osnovniji jezik, poput Javascripta ili Pythona?
İlke Candan Bengi
Pozdrav Chris, ispričavamo se na kasnom odgovoru! Vjerujem da bi prethodno osnovno razumijevanje/iskustvo Pythona moglo biti od pomoći prije nego počnete s Mojoom.