एलएलव्हीएमचे संस्थापक आणि मुख्य वास्तुविशारद आणि स्विफ्ट प्रोग्रामिंग भाषेचे निर्माता क्रिस लॅटनर आणि गुगलच्या टेन्सरफ्लो आणि जेएएक्स सारख्या एआय प्रकल्पांचे माजी प्रमुख टिम डेव्हिस यांनी मोजो ही एक नवीन प्रोग्रामिंग भाषा सादर केली, जी संशोधनासाठी वापरण्यास सोपी आणि जलद प्रोटोटाइपिंगला उच्च-कार्यक्षमता अंतिम उत्पादने तयार करण्यासाठी योग्यतेसह एकत्रित करते. हे पायथॉनच्या परिचित वाक्यरचनाद्वारे साध्य केले जाते, तर नंतरचे मूळ संकलन, मेमरी-सुरक्षा यंत्रणा आणि हार्डवेअर प्रवेग द्वारे साध्य केले जाते.
हा प्रकल्प मशीन लर्निंग डेव्हलपमेंटवर लक्ष केंद्रित करतो, परंतु तो एक सामान्य-उद्देशीय भाषा म्हणून देखील सादर केला जातो जो पायथॉनला सिस्टम प्रोग्रामिंग क्षमतांसह वाढवतो आणि विस्तृत कार्यांसाठी योग्य आहे. उदाहरणार्थ, ही भाषा उच्च-कार्यक्षमता संगणन आणि डेटा प्रोसेसिंग आणि ट्रान्सफॉर्मेशन सारख्या क्षेत्रांना लागू आहे. मोजोचे एक मनोरंजक वैशिष्ट्य म्हणजे ".mojo" टेक्स्ट एक्सटेंशन व्यतिरिक्त, कोड फाइल्ससाठी (उदा., "helloworld.🔥") एक्स्टेंशन म्हणून इमोजी चिन्ह "🔥" निर्दिष्ट करण्याची क्षमता.
सध्या ही भाषा सखोल विकासाधीन आहे आणि चाचणीसाठी फक्त एक ऑनलाइन इंटरफेस उपलब्ध आहे. स्थानिक प्रणालींवर चालण्यासाठी स्वतंत्र बिल्ड्स नंतर प्रकाशित करण्याचे आश्वासन दिले आहे, इंटरॅक्टिव्ह वेब वातावरणावर अभिप्राय मिळाल्यानंतर. अंतर्गत आर्किटेक्चर पूर्ण झाल्यानंतर कंपायलर, JIT आणि इतर संबंधित विकासांसाठी स्त्रोत कोड ओपन सोर्स करण्याची योजना आहे (कार्यरत प्रोटोटाइपसाठी बंद-दरवाजा विकास मॉडेल LLVM, Clang आणि Swift च्या प्रारंभिक विकास टप्प्याची आठवण करून देते). मोजोचा वाक्यरचना पायथॉनवर आधारित असल्याने आणि त्याची प्रकारची प्रणाली C/C++ सारखी असल्याने, भविष्यातील योजनांमध्ये विद्यमान C/C++ आणि पायथॉन प्रकल्पांचे मोजोमध्ये स्थलांतर सुलभ करण्यासाठी टूलिंग विकसित करणे तसेच पायथॉन आणि मोजो कोड एकत्रित करणारे हायब्रिड प्रकल्पांच्या विकासास सुलभ करणे समाविष्ट आहे.
हा प्रकल्प मोजण्यासाठी विविध प्रणालींच्या विद्यमान हार्डवेअर संसाधनांचा वापर करण्यासाठी डिझाइन केला आहे. उदाहरणार्थ, मोजो अॅप्लिकेशन्स चालविण्यासाठी आणि संगणन समांतर करण्यासाठी GPUs, विशेष मशीन लर्निंग अॅक्सिलरेटर्स आणि सिंगल-इन्स्ट्रक्शन व्हेक्टर प्रोसेसर (SIMD) वापरले जाऊ शकतात. ऑप्टिमायझेशनसाठी विद्यमान CPython वर अवलंबून राहण्याऐवजी स्वतंत्र पायथॉन सबसेट विकसित करण्याच्या कारणांमध्ये संकलनावर लक्ष केंद्रित करणे, सिस्टम प्रोग्रामिंग क्षमतांचे एकत्रीकरण आणि GPUs आणि विविध हार्डवेअर अॅक्सिलरेटर्सवर कोड अंमलबजावणी सक्षम करणाऱ्या मूलभूतपणे भिन्न अंतर्गत आर्किटेक्चरचा वापर समाविष्ट आहे. त्याच वेळी, मोजो डेव्हलपर्स शक्य तितके CPython शी सुसंगतता राखण्याचा मानस करतात.
मोजोचा वापर JIT (जस्ट-इन-टाइम) आणि अॅड-ऑफ-टाइम (AOT) मोडमध्ये दोन्ही प्रकारे करता येतो. कंपायलरमध्ये ऑटोमॅटिक ऑप्टिमायझेशन, कॅशिंग आणि डिस्ट्रिब्युटेड कंपायलेशनसाठी आधुनिक तंत्रज्ञानाचा समावेश आहे. मोजो सोर्स कोड हा लो-लेव्हल इंटरमीडिएट कोड (MLIR) मध्ये रूपांतरित केला जातो, जो LLVM प्रोजेक्टद्वारे विकसित केला जातो आणि डेटाफ्लो ग्राफ प्रोसेसिंग ऑप्टिमाइझ करण्यासाठी अतिरिक्त क्षमता देतो. कंपायलर मशीन कोड जनरेशनसाठी विविध MLIR-सक्षम बॅकएंडना समर्थन देतो.
अतिरिक्त हार्डवेअर प्रवेगकतेचा वापर केल्याने C/C++ अनुप्रयोगांपेक्षा जास्त असलेल्या गहन संगणनांसाठी कामगिरी वाढण्यास मदत होते. उदाहरणार्थ, मँडेलब्रॉट सेट जनरेशन अनुप्रयोगाची चाचणी करताना, संकलित मोजो अनुप्रयोग (r7iz.metal-16xl) AWS क्लाउडमध्ये चालताना C++ अंमलबजावणीपेक्षा 6 पट वेगवान होता (0.03 सेकंद विरुद्ध 0.20 सेकंद), मानक CPython 3.10.9 (0.03 सेकंद विरुद्ध 1027 सेकंद) वापरताना पायथॉन अनुप्रयोगापेक्षा 35 पट वेगवान होता आणि PYPY वापरताना 1500 पट वेगवान होता (0.03 सेकंद विरुद्ध 46.1 सेकंद).
मशीन लर्निंग कामगिरीचे मूल्यांकन करताना, मोजोमध्ये लिहिलेले मॉड्यूलर इन्फरन्स इंजिन एआय स्टॅक, टेन्सरफ्लो-आधारित सोल्यूशनच्या तुलनेत, इंटेल प्रोसेसरवर भाषा मॉडेलवर प्रक्रिया करताना 3 पट वेगवान होते, शिफारस मॉडेल चालवताना 6.4 पट वेगवान होते आणि व्हिज्युअल माहिती प्रक्रिया मॉडेल चालवताना 2.1 पट वेगवान होते. एएमडी प्रोसेसरवर, मोजोने 3.2x, 5x आणि 2.2x कामगिरी वाढ मिळवली, तर एआरएम प्रोसेसरवर, त्याने 5.3x, 7.5x आणि 1.7x कामगिरी वाढ मिळवली. पायटॉर्च-आधारित सोल्यूशन इंटेल सीपीयूवर मोजोपेक्षा 1.4x, 1.1x आणि 1.5x, एएमडी सीपीयूवर 2.1x, 1.2x आणि 1.5x आणि एआरएम सीपीयूवर 4x, 4.3x आणि 1.3x मागे राहिले.

ही भाषा स्थिर टायपिंग आणि रस्टची आठवण करून देणाऱ्या निम्न-स्तरीय मेमरी सुरक्षा वैशिष्ट्यांना समर्थन देते, जसे की संदर्भ जीवनभर ट्रॅकिंग आणि कर्ज तपासक. पॉइंटर सुरक्षा वैशिष्ट्यांव्यतिरिक्त, ही भाषा निम्न-स्तरीय क्षमता देखील देते, जसे की पॉइंटर प्रकार वापरून असुरक्षित मोडमध्ये थेट मेमरी प्रवेश, वैयक्तिक SIMD सूचना मागवणे आणि TensorCores आणि AMX सारख्या हार्डवेअर विस्तारांमध्ये प्रवेश करणे.

सर्व व्हेरिअबल्ससाठी स्पष्टपणे परिभाषित प्रकारांसह फंक्शन्ससाठी क्लासिक आणि ऑप्टिमाइझ केलेल्या पायथॉन कोडचे पृथक्करण सोपे करण्यासाठी, "def" ऐवजी वेगळा "fn" कीवर्ड वापरण्याचा प्रस्ताव आहे. त्याचप्रमाणे, वर्गांसाठी, जर कंपाइल वेळी (C मध्ये) मेमरीमध्ये स्थिर डेटा पॅकिंग आवश्यक असेल, तर "class" ऐवजी "struct" प्रकार वापरला जाऊ शकतो. C/C++ मॉड्यूल्सची साधी आयात देखील शक्य आहे. उदाहरणार्थ, गणित लायब्ररीमधून cos फंक्शन आयात करण्यासाठी, तुम्ही "from "math.h" import cos." निर्दिष्ट करू शकता.
स्त्रोत: opennet.ru
