कोर्स
Mojo एक प्रोग्रामिंग भाषा है जो Python जैसी डायनेमिक भाषाओं की उपयोग-सहजता और लचीलेपन को C++ और Rust जैसी सिस्टम भाषाओं के प्रदर्शन और नियंत्रण के साथ मिलाती है।
यह एकीकृत कैशिंग, मल्टीथ्रेडिंग, और क्लाउड डिस्ट्रीब्यूशन जैसी अभिनव कम्पाइलर तकनीकों के माध्यम से उच्च प्रदर्शन प्राप्त करती है, जबकि ऑटोट्यूनिंग और मेटाप्रोग्रामिंग विभिन्न हार्डवेयर के लिए कोड अनुकूलन सक्षम करती हैं।
Mojo की प्रमुख विशेषताएँ:
- Python-जैसा सिंटैक्स और डायनेमिक टाइपिंग, Mojo को Python डेवलपर्स के लिए सीखना आसान बनाते हैं, क्योंकि आधुनिक AI/ML विकासों के पीछे Python मुख्य भाषा है।
- Mojo के साथ, आप किसी भी Python लाइब्रेरी को आयात कर सकते हैं और उपयोग कर सकते हैं, जिससे Python के साथ पूर्ण इंटरऑपरेबिलिटी सुनिश्चित होती है।
- यह जस्ट-इन-टाइम (JIT) और अहेड-ऑफ-टाइम (AOT) दोनों कम्पाइलेशन का समर्थन करता है। Mojo कम्पाइलर उन्नत ऑप्टिमाइजेशन लागू करता है और GPU/TPU कोड जेनरेशन तक करता है।
- Mojo मेमोरी लेआउट, कॉन्करेंसी, और अन्य लो-लेवल विवरणों पर पूरा नियंत्रण देता है।
- डायनेमिक और सिस्टम भाषा क्षमताओं को मिलाकर, Mojo एक एकीकृत प्रोग्रामिंग मॉडल अपनाता है जो शुरुआती-अनुकूल है और एक्सीलेरेटर्स आधारित विभिन्न उपयोग मामलों के लिए स्केलेबल है।
Mojo फिलहाल एक अपूर्ण भाषा है और सार्वजनिक रूप से उपलब्ध नहीं है। इसकी डॉक्यूमेंटेशन सिस्टम्स प्रोग्रामिंग अनुभव वाले डेवलपर्स के लिए लक्षित है।
हालाँकि, जैसे-जैसे भाषा विकसित होगी, उनका इरादा इसे अधिक उपयोगकर्ता-अनुकूल और शुरुआती प्रोग्रामरों के लिए सुलभ बनाने का है।
Mojo Lang के साथ शुरुआत करना
Mojo सार्वजनिक रूप से उपलब्ध नहीं है, लेकिन आप Modular Products के लिए साइन अप करके Mojo Playground तक पहुँच सकते हैं। साइन अप करते समय, सुनिश्चित करें कि आपने Modular Product Interest में Mojo चुना है।

छवि स्रोत Modular: आज ही शुरू करें
साइन अप करने के बाद, आपको एक घंटे के भीतर Mojo Playground की पहुँच देने वाला ईमेल प्राप्त होगा। Mojo Playground एक JupyterHub वातावरण है जहाँ उपयोगकर्ता एक ही Mojo स्टैंडर्ड लाइब्रेरी तक पहुँच सकते हैं। हालाँकि, उपयोगकर्ताओं के पास अपने Mojo प्रोग्राम लिखने और सहेजने के लिए एक निजी वॉल्यूम होता है।

Mojo Playground से छवि
जब Mojo ओपन-सोर्स और सार्वजनिक रूप से उपलब्ध हो जाएगा, तो आप टर्मिनल से Mojo प्रोग्राम चला सकेंगे। यह इंटरप्रेटेड और कम्पाइल्ड—दोनों तरह की भाषा है।
आप फ़ाइल को test.mojo या test.🔥 के रूप में सहेज सकते हैं।
हाँ, आप अपनी फ़ाइल को फायर इमोजी के साथ सहेज सकते हैं। जैसा कि आप देख सकते हैं, हमने एक साधारण Mojo फ़ाइल test.🔥 बनाई और इसे टर्मिनल में चलाया।
def main():
print("Hello Mojo!")
$ mojo test.🔥
Hello Mojo!
Mojo Lang और Python
Mojo, Python का एक सुपरसैट है और इसका सिंटैक्स लगभग Python जैसा है। यह let, var, struct, और fn जैसी नई विशेषताएँ भी जोड़ता है ताकि वेरिएबल, स्ट्रक्चर, और फ़ंक्शन परिभाषित किए जा सकें और प्रदर्शन बेहतर हो।
let और var घोषणाएँ
Mojo के कोड में, आप let और var कीवर्ड का उपयोग करके विशेष वेरिएबल्स घोषित कर सकते हैं। यह Rust में वेरिएबल घोषित करने जैसा है।
let इंगित करता है कि वेरिएबल अपरिवर्तनीय है, जबकि var बताता है कि उसे बदला जा सकता है। यह कम्पाइल-टाइम पर प्रतिबंध लागू करके प्रदर्शन सुधारता है।
struct प्रकार
Mojo में struct कीवर्ड होता है जो Python के class जैसा है। Python में क्लासेस डायनेमिक और धीमी होती हैं, जबकि struct प्रकार C/C++ और Rust के अधिक समान हैं। इनके मेमोरी लेआउट कम्पाइल-टाइम पर तय होते हैं, जिससे मशीन-नेटिव प्रदर्शन के लिए अनुकूलन होता है।
fn परिभाषाएँ
def से फ़ंक्शन परिभाषित करने पर एक Python फ़ंक्शन बनता है, जिसमें Python की समस्त गतिशीलता और लचीलापन होता है। दूसरी ओर, fn एक Mojo फ़ंक्शन परिभाषित करता है जिसमें अधिक प्रतिबंध होते हैं। इसका अर्थ है कि तर्क डिफ़ॉल्ट रूप से इम्यूटेबल होते हैं और लोकल वेरिएबल्स के लिए स्पष्ट टाइपिंग और घोषणाएँ आवश्यक होती हैं, आदि।
सिंटैक्स तुलना उदाहरण
इस उदाहरण में, हम दो तर्कों को जोड़ने वाला एक Mojo फ़ंक्शन बनाएँगे।
Mojo फ़ंक्शन चलाने के लिए:
- आपको फ़ंक्शन के तर्कों के लिए टाइप निर्दिष्ट करना होगा।
- आपको तीर का उपयोग करके रिटर्न टाइप घोषित करना होगा।
fn add(x: Int, y: Int) -> Int:
return x + y
z = add(3, 5)
print(z)
>>> 8
Python में प्रोग्रामिंग करते समय, हमारे पास तर्क और आउटपुट टाइप को स्पष्ट रूप से बताए बिना फ़ंक्शन परिभाषित करने का विकल्प होता है। यह प्रक्रिया को अधिक डायनेमिक और सीधी बनाता है। हालाँकि, तुलना में, Mojo का fn फ़ंक्शन def से तेज़ है।
def add(x, y):
return x + y
z = add(3, 5)
print(z)
>>> 8
Mojo में Matplotlib
Mojo न केवल प्रदर्शन बढ़ाता है, बल्कि डेवलपर्स को किसी भी Python लाइब्रेरी को आयात करके Mojo फ़ंक्शनों के साथ एकीकृत करने में भी सक्षम बनाता है। CPython इंटरप्रेटर का उपयोग करके, Mojo वर्तमान में उपलब्ध सभी Python मॉड्यूल का सहज समर्थन करता है।
निम्न उदाहरण में, हमने matplotlib.pyplot आयात किया है और लाइन प्लॉट को विज़ुअलाइज़ किया है। उन्नत उदाहरणों के लिए, Mojo में Mandelbrot देखें।
from PythonInterface import Python
let plt = Python.import_module("matplotlib.pyplot")
x = [1, 2, 3, 4]
y = [30, 20, 50, 60]
plt.plot(x, y)
plt.show()

यह व्यापक रूप से स्वीकार किया जाता है कि AI/ML के लिए Python सबसे लोकप्रिय भाषा है। Machine Learning Scientist with Python करियर ट्रैक करने से आपको मशीन लर्निंग वैज्ञानिक के रूप में नौकरी पाने के लिए आवश्यक Python कौशल मिलेंगे।
Mojo Lang के साथ प्रोग्रामिंग
Mojo, Python का सुपरसैट है, जैसे TypeScript, JavaScript का सुपरसैट है। नए कीवर्ड और फ़ंक्शनों के अलावा, कोई भी Python प्रोग्रामर इसे समझकर इससे प्रोग्राम बना सकता है।
इस भाग में, हम Mojo की वे प्रोग्रामिंग विशेषताएँ देखेंगे जो इसे प्रदर्शनक्षम और सुरक्षित बनाती हैं।
लो-लेवल प्रोग्रामिंग
Mojo एक हाई-लेवल प्रोग्रामिंग भाषा है जो MLIR (Multi-Level Intermediate Representation), एक एक्स्टेंसिबल इंटरमीडिएट रिप्रेजेंटेशन फ़ॉर्मेट, के माध्यम से लो-लेवल प्रिमिटिव्स तक पहुँच प्रदान करती है। यह Mojo प्रोग्रामरों को ज़ीरो-कॉस्ट एब्स्ट्रैक्शंस लागू करने की अनुमति देता है, साथ ही शक्तिशाली कम्पाइलर ऑप्टिमाइजेशन का लाभ उठाने देता है।
टाइलिंग ऑप्टिमाइजेशन और ऑटोट्यून
Mojo में इन-बिल्ट टाइलिंग ऑप्टिमाइजेशन टूल है, जो गणनाओं को छोटे-छोटे टाइल्स में बाँटकर कैश लोकैलिटी और मेमोरी एक्सेस पैटर्न सुधारता है, जो तेज़ कैश मेमोरी में फिट हो सकें।
Mojo का Autotune मॉड्यूल एडेप्टिव कम्पाइलेशन के लिए इंटरफेसेज़ प्रदान करता है। यह आपके टार्गेट हार्डवेयर के लिए सर्वोत्तम पैरामीटर्स खोजने में मदद करता है, आपका कोड स्वतः ट्यून करके।
ओनरशिप और बॉरोइंग
Mojo मेमोरी प्रबंधन के लिए ओनरशिप और बॉरोइंग प्रणाली का उपयोग करता है, जिससे गार्बेज कलेक्टर की आवश्यकता समाप्त हो जाती है और स्थिर रनटाइम प्रदर्शन सुनिश्चित होता है। Mojo का कम्पाइलर स्टैटिक एनालिसिस के माध्यम से वेरिएबल्स के जीवनकाल का विश्लेषण करता है और जैसे ही डेटा की आवश्यकता नहीं रह जाती, उसे मुक्त कर देता है।
मैन्युअल मेमोरी प्रबंधन
Mojo, C++ और Rust के समान पॉइंटर्स का उपयोग करते हुए मैन्युअल प्रबंधन प्रणाली भी प्रदान करता है।
Mojo में मैट्रिक्स मल्टिप्लिकेशन
मैट्रिक्स मल्टिप्लिकेशन उदाहरण में, हमने देखा कि Python कोड को Mojo में आयात करने से प्रदर्शन में 17.5 गुना की वृद्धि हुई।
Python इम्प्लीमेंटेशन में टाइप्स जोड़कर, प्रदर्शन और भी बढ़कर 1866.8 गुना हो गया।
इसके अतिरिक्त, उन्होंने वेक्टराइजिंग, पैरेललाइजिंग, टाइलिंग, और ऑटोट्यूनिंग जैसी तकनीकों का उपयोग करके 14050.5 गुना तक प्रदर्शन बढ़ाया। यह शानदार है। यहाँ तक कि Julia और Rust भी इस स्तर का ऑप्टिमाइजेशन प्रदान नहीं कर पाते।
Mojo Lang कोड उदाहरण
इस कार उदाहरण में, हम Mojo सिंटैक्स के साथ एक CAR क्लास बनाएँगे।
- हम
structका उपयोग करके एकCARक्लास बनाएँगे। varका उपयोग करते हुए परिवर्तनीय वेरिएबल प्रारंभ करेंगे।- वेरिएबल टाइप सेट करेंगे। ‘speed’ Float32 है और ‘model’ String है। String बिल्ट-इन टाइप नहीं है, इसलिए हमें इसे आयात करना होगा।
- हम Python के समान दो इनिशियलाइज़ेशन फ़ंक्शंस बनाएँगे, लेकिन
fnफ़ंक्शन के साथ। एक केवल कार की स्पीड के साथ और दूसरा कार की स्पीड और कार मॉडल के साथ। - उसके बाद,
CARका उपयोग करके 300 स्पीड के साथ एक ऑब्जेक्ट बनाएँ। - कार का मॉडल प्रिंट करें।
from String import String
struct CAR:
var speed: Float32
var model: String
fn __init__(inout self, x: Float32):
"""Car with only speed"""
self.speed = x
self.model = 'Base'
fn __init__(inout self, r: Float32, i: String):
"""Car with Speed and model"""
self.speed = r
self.model = i
my_car=CAR(300)
print(my_car.model)
Base
जैसा कि आप देख सकते हैं, Mojo की प्रोग्रामिंग शैली और कार्यक्षमता Python के समान है। यह Python का एक विस्तार है, जो उसके प्रदर्शन और मेमोरी प्रबंधन क्षमताओं को बढ़ाता है। Mojo के साथ, आप अपना मॉडल जल्दी ट्रेन कर सकते हैं, मॉडल इन्फरेंस को तेज़ कर सकते हैं (यहाँ तक कि CPU पर भी), सेकंडों में विशाल डेटासेट का विश्लेषण कर सकते हैं, और रीयल-टाइम में सिमुलेशन कर सकते हैं।
आप Modular Docs पर सभी कोड उदाहरण देख सकते हैं और उन्हें प्लेग्राउंड में Jupyter नोटबुक पर चला सकते हैं।
क्या Mojo, Python की जगह लेगा?
फिलहाल, इसके शुरुआती विकास चरण और आवश्यक सुविधाओं की कमी के कारण Mojo की एक सामान्य प्रोग्रामिंग भाषा के रूप में संभावनाओं का निर्धारण करना कठिन है। हालाँकि, जहाँ उच्च प्रदर्शन महत्वपूर्ण है, ऐसी मशीन लर्निंग और एआई एप्लिकेशनों में यह Python से आगे निकलने की क्षमता रख सकता है।
फिर भी, निकट भविष्य में Mojo के लिए डेटा साइंस और अन्य सॉफ्टवेयर विकास क्षेत्रों में Python की अग्रणी भूमिका को पूरी तरह से बदल देना असंभावित है।
Mojo विशेष रूप से मशीन लर्निंग एप्लिकेशनों के लिए डिज़ाइन किया गया है और वेब बैकएंड, प्रोसेस ऑटोमेशन, या वेब डिज़ाइन जैसे अन्य क्षेत्रों के लिए अभिप्रेत नहीं है। यद्यपि डेवलपर भविष्य में इसकी क्षमताओं का विस्तार कर सकते हैं, Mojo का वर्तमान फोकस मशीन लर्निंग एप्लिकेशनों के लिए अनुकूलन पर है।
इसके अलावा, यह ध्यान देने योग्य है कि Mojo में Python की तुलना में मॉड्यूल और लाइब्रेरियों का सीमित चयन है, जबकि Python को डेवलपर्स के बड़े समुदाय का लाभ मिलता है जो लगातार एआई और डेटा साइंस के लिए नए और बेहतर टूल बनाते रहते हैं। Mojo को Python के विकास स्तर तक पहुँचने में वर्षों लग सकते हैं।
DataCamp के Generative AI Concepts कोर्स में शामिल होकर जानें कि जनरेटिव एआई मॉडल कैसे विकसित किए जाते हैं और आगे चलकर वे समाज को कैसे प्रभावित करेंगे।
निष्कर्ष
निष्कर्षतः, यद्यपि Mojo, AI/ML के लिए अनुकूलित तेज़ और Python-संगत भाषा के रूप में उम्मीद जगाता है, निकट भविष्य में इसके द्वारा Python को पूरी तरह प्रतिस्थापित करना संभव नहीं लगता। Python को विशाल इकोसिस्टम, समुदाय, और डेटा साइंस तथा ML में जमे हुए उपयोग का लाभ है। सर्वश्रेष्ठ स्थिति में, Mojo, Python का पूरक बन सकता है, जहाँ गति अत्यावश्यक हो।
इस ट्यूटोरियल में, हमने कोड उदाहरणों के साथ Mojo प्रोग्रामिंग भाषा की विशेषताओं और सिंटैक्स की समीक्षा की। हमने प्रदर्शन, सिंटैक्स, कार्यक्षमता, और अनुकूलता जैसे कारकों को ध्यान में रखते हुए Python से तुलना भी की। जो लोग एआई और मशीन लर्निंग की बुनियादी बातों में महारत हासिल करना चाहते हैं, हम उन्हें Machine Learning Fundamentals with Python ट्रैक में नामांकन करने की सलाह देते हैं।
एक प्रमाणित डेटा साइंटिस्ट के रूप में, मैं अत्याधुनिक तकनीक का उपयोग करके नवाचारी मशीन लर्निंग अनुप्रयोग बनाने के लिए उत्साहित रहता/रहती हूँ। स्पीच रिकॉग्निशन, डेटा विश्लेषण और रिपोर्टिंग, MLOps, संवादात्मक AI और NLP में मजबूत पृष्ठभूमि के साथ, मैंने ऐसे बुद्धिमान सिस्टम विकसित करने में अपनी विशेषज्ञता निखारी है जो वास्तविक प्रभाव डाल सकें। तकनीकी दक्षता के अलावा, मैं जटिल अवधारणाओं को स्पष्ट और संक्षिप्त भाषा में प्रस्तुत करने में भी निपुण हूँ। परिणामस्वरूप, मैं डेटा साइंस पर एक मांग में रहने वाला/वाली ब्लॉगर बन गया/गई हूँ, और डेटा प्रोफेशनलों के बढ़ते समुदाय के साथ अपने अनुभव और विचार साझा करता/करती हूँ। वर्तमान में, मैं कंटेंट निर्माण और संपादन पर केंद्रित हूँ, बड़े भाषा मॉडलों के साथ काम करते हुए ऐसा प्रभावशाली और आकर्षक कंटेंट विकसित कर रहा/रही हूँ जो व्यवसायों और व्यक्तियों दोनों को अपने डेटा का अधिकतम लाभ उठाने में मदद कर सके।
