Nais mo na bang bumuo ng mas mabilis at mas mahusay na mga app ngunit natuklasan na ang mga karaniwang programming language ay hindi kayang matugunan ang iyong mga kinakailangan?
Ito ay kapag ang Mojo Language ay naglaro.
Ang Mojo ay isang bagong programming language na binuo ni modular, isang kumpanyang dalubhasa sa imprastraktura ng AI.
Ito ay partikular na idinisenyo upang bigyang-daan ang mga developer na makabuo ng mas mabilis at mas matatag na mga app para sa ilang mga kaso ng paggamit, kabilang ang AI development. Sa post na ito, titingnan natin kung ano MoJo ay, kung paano ito gumagana, at kung bakit mo ito dapat gamitin sa iyong susunod na proyekto.
Ang Pinagmulan ng Mojo
Kinilala ng mga tagalikha ng Mojo ang pangangailangan para sa isang programming language na pinagsama ang kakayahang magamit ng Python sa bilis at kahusayan ng C.
At, nagtayo sila ng isang wika na magpapahintulot sa mga developer na bumuo ng mga app na may mataas na pagganap nang hindi kinakailangang matuto ng mga karaniwang wika sa paglalarawan ng hardware.
Bilang resulta, nilikha nila ang Mojo, na nilalayong maging ganap na katugma sa Python ecosystem habang nagbibigay ng bilis sa antas ng C.
Modular: Ang Organisasyon sa Likod ng Wikang Mojo
Kaya, sino ang mga tagalikha ng futuristic na wikang ito?
Ang Modular ay isang nangungunang imprastraktura ng AI sa buong mundo na nilikha nina Chris Lattner at Tim Davis, na nakilala sa Google at natanto na ang masyadong kumplikado at pira-pirasong imprastraktura ay naglilimita sa pandaigdigang impluwensya ng AI.
Ang layunin at layunin ng Modular ay pag-isipang muli ang imprastraktura ng AI upang mapahusay ang sangkatauhan. Ang kanilang kultura at mga prinsipyo ay nagbibigay ng isang premium sa mga kliyente, mataas na kalidad na produksyon ng software, at naghahatid ng makabuluhang mga resulta
Ang Mga Layunin ng Mojo
Ang Mojo ay idinisenyo upang magbigay ng isang natatanging modelo ng programming para sa mga machine learning accelerators.
Tinukoy ng Modular na dapat payagan ng Mojo ang pangkalahatang layunin na programming dahil ang mga CPU ngayon ay may mga tensor at iba pang AI accelerators. Higit pa rito, dahil malawakang ginagamit ang Python sa machine learning at iba pang larangan, pinili ng Modular na sumali sa Python ecosystem.
Ang paggamit ng Python ay lalong nagpadali sa disenyo ng wika. Dahil ang karamihan sa syntax ay natukoy na, ang korporasyon sa halip ay maaaring tumutok sa pagbuo ng mekanismo ng compilation at pagbibigay ng mga espesyal na kakayahan sa programming.
Mahalagang Mga Tampok na Isaalang-alang
programmability
Mga Progresibong Uri
Ang tampok na progresibong mga uri ng Mojo Language ay nagbibigay-daan sa mga developer na gumamit ng mga uri ng anotasyon sa mapahusay ang kahusayan at mga pagsusuri ng error.
Maaaring magdisenyo ang mga developer ng mas epektibong code na nakakakita ng mga pagkakamali sa oras ng pag-compile, inaalis ang mga bug at pagpapahusay ng kahusayan, sa pamamagitan ng pagbibigay ng mas masusing uri ng impormasyon.
Zero Cost Abstractions
Maaaring kontrolin ng mga developer ang storage sa pamamagitan ng inline na paglalaan ng data sa mga istruktura salamat sa mga abstraction na walang gastos na ibinigay ng Mojo Language.
Sa pamamagitan ng pag-alis sa kinakailangan para sa mga karagdagang paglalaan ng memorya, ang tampok na ito ay nagpapabuti sa kahusayan ng code at nagpapababa sa dami ng boilerplate code.
Pinagsamang Wika Auto-Tuning
Ang auto-tuning na functionality na pinagsama-sama ng wika sa Mojo Language ay nagbibigay-daan sa mga developer na awtomatikong matukoy ang mga ideal na halaga ng mga parameter upang makinabang mula sa target na hardware.
Gamit ang functionality na ito, mas simple ang pag-optimize ng code nang hindi kinakailangang manu-manong ayusin ito para sa bawat kumbinasyon ng hardware.
Ang Mojo Language ay isang flexible at epektibong tool para sa pagbuo ng AI dahil nagbibigay din ito ng buong kapangyarihan ng MLIR (Multi-Level Intermediate Representation), isang parallel heterogenous runtime, at mabilis na mga oras ng build.
Pagkapareho
Ginagamit ni Mojo ang MLIR, na nagbibigay-daan sa mga programmer na gumamit ng mga vector, thread, at hardware unit para sa AI para sa parallelization. Sinusuportahan ng Mojo ang parallel processing sa ilang mga core kumpara sa single-threaded execution ng Python.
Sa 35,000x na speedup sa Python, tinatalo ng Mojo ang iba pang mga wika sa mga tuntunin ng bilis.
Interoperability
Ang interoperability sa buong Python ecosystem ay isa sa mga natatanging bentahe ng Mojo. Ito ay nagpapahiwatig na maaari mong pagsamahin ang Mojo sa anumang mga arbitrary na aklatan, tulad ng Numpy at Matplotlib, pati na rin ang iyong pasadyang code.
Halimbawa, maaari mong makita ang data sa iyong Mojo code gamit ang Python library na Matplotlib.
Pagpapalawak
Medyo flexible din ang Mojo, na nagpapahintulot sa mga user na magdagdag lang ng mga hakbang bago at pagkatapos ng pagproseso sa mga modelo o magpalit ng mga kasalukuyang hakbang para sa mga bago.
Upang pahusayin ang kanilang mga modelo at ang Modular stack, maaaring gamitin ng mga developer ang kernel fusion, muling pagsusulat ng graph, mga function ng hugis, at iba pang mga diskarte.
Bakit Mo Ito Pipiliin kaysa sa Python?
Ang Python ay isang sikat na AI development language dahil sa kanyang flexibility at high-performance compiled library. Gayunpaman, ito ay makabuluhang mas mabagal kaysa sa mga wika tulad ng C++.
Samakatuwid, natututo ang mga programmer na gumamit ng Python wrapper sa mas mabilis na mga wika upang maiwasan ang paggamit ng Python para sa mga lugar na kritikal sa pagganap.
Ito ay humahantong sa isyu ng dalawang wika, kung saan ang mga modelo ay dapat na mabago mula sa Python tungo sa isang mas mabilis na pagpapatupad, tulad ng ONNX o torch script, na hindi sumusuporta sa lahat ng kakayahan ng Python. Ang Python ay mayroon ding mga isyu sa pagganap at kakulangan ng mahusay na parallel processing.
Kahit na ang mga may karanasang programmer ay nahihirapang mag-aral, mag-debug, at matugunan ang mga isyu sa pagganap dahil sa dalawang wikang dilemma.
Mayroon ding mga pangunahing paghihigpit sa kung ano ang magagawa ng Python dahil sa paraan ng pagkakaayos ng wika. Bagama't ang pagpapatupad ng totoong mundo ng mga algorithm na gumagamit ng mga pangunahing bahagi ay maaaring mukhang madali, ito ay mas mahirap at nangangailangan ng paggamit ng isang mas mabilis na wika.
Paano magsimula?
Maaari mong simulan ang paggamit ng Mojo Language ngayon sa kanilang Playground para makapagsimula. Ang Playground na nakabase sa JupyterHub ay nagbibigay ng mga aralin at pagkakataong gumawa ng sarili mong Mojo code, kahit na ang Mojo ay ginagawa pa rin.
Maaari kang magparehistro para sa pag-access sa kanilang website upang ma-access ang Playground.
Upang maabot ang mga layunin sa pagganap nito, gumagamit ang Mojo ng mga susunod na henerasyong teknolohiya ng compiler na may pinagsamang mga teknolohiya ng caching, multithreading, at pamamahagi ng cloud.
Nagdaragdag ito ng mga karagdagang primitive sa mga system programming at naghahangad na maging isang Python superset sa paglipas ng panahon. Upang simulan ang coding gamit ang Mojo, gamitin ang Mojo compiler upang magpatakbo ng isang Mojo program mula sa terminal sa parehong paraan na ginagawa ng Python.
Ang wika ay kasalukuyang nasa ilalim ng pag-unlad at naglalayon sa mga developer na may karanasan sa mga system programming.
Balutin
Ang Mojo ay itinuturing na isang Python superset. At, ito ay may potensyal na baguhin ang programming sa pamamagitan ng pagsasama-sama ng pagiging simple ng Python sa pagganap ng C++ at Rust.
Maaari itong samantalahin nang buo Python library ecosystem, na nagpapahintulot sa mga developer na lumikha ng mga library na may mataas na pagganap nang hindi nangangailangan ng C, C++, Rust, o CUDA.
Nagbibigay-daan ito sa paggawa ng portable code salamat sa autotuning at compile-time meta-programming na mga feature nito.
Bagama't isa pa itong ginagawa, may potensyal itong maging isang mabigat na tool sa programming at baguhin ang industriya ng programming. Kaya, dapat tayong manatiling nakatutok para sa mga pag-unlad sa hinaharap mula sa Modular!
Chris Santos
Sa palagay mo, ang isang taong may basic hanggang intermediate na kaalaman ay makakapagsimula ng kanilang pag-aaral sa bagong wikang ito? O pinapayuhan mo bang mag-aral muna ng mas pangunahing wika, tulad ng Javascript o Python?
İlke Candan Bengi
Hello Chris, sorry sa late response! Naniniwala ako na ang pagkakaroon ng isang pangunahing pag-unawa/karanasan sa Python bago pa man ay maaaring makatulong bago magsimula sa Mojo.