नेमर्ले

नेमर्ले सामान्य-उद्देश्य, उच्च स्तरीय, वैधानिक रूप से स्थिर लिखी गयी कार्यक्रमिक भाषा है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर अर्थात सामान्य भाषा अवसंरचना (.नेट/मोनो) का उपयोग करने वाले मंचों के लिए रूपांकित किया गया है। यह कार्यात्मक कार्यक्रमिक, वस्तु-उन्मुख, पक्ष-उन्मुख कार्यक्रमिक , चिंतनशील कार्यक्रमिक और अनिवार्य कार्यक्रमिक सुविधाएँ प्रदान करता है। इसमें साधारण सी-शार्प (कार्यक्रमिक भाषा) अर्थात सी#-जैसे सिंटैक्स और शक्तिशाली मेटाप्रोग्रामिंग प्रणाली है।

जून 2012 में, जांच सॉफ्टवेयर विकास क्षेत्र जेटब्रेन्स द्वारा नेमर्ले के मुख्य विकासकर्ताओं को काम पर रखा गया था। यह समूह नाइट्रा(नित्रा) को विकसित करने पर ध्यान केंद्रित कर रहा था, जो आधुनिक और नई कार्यक्रमिक भाषाओं को प्रयुक्त करने के लिए रूपरेखा है।  नेमर्ले भाषा और नाइट्रा दोनों को जेटब्रेन्स द्वारा छोड़ दिया गया है अथवा इन्हें बंद कर दिया गया है; नाइट्रा को 2017 के बाद से इसके मूल रचनाकारों द्वारा अद्यतन नहीं किया गया है और नेमर्ले को अब पूरी तरह से रूसी सॉफ्टवेयर विकास नेटवर्क, जेटब्रेन्स से स्वतंत्र रूप से बनाए रखा गया है, चूंकि अभी तक कोई बड़ा अद्यतन जारी नहीं किया गया है और विकास बहुत धीमी गति से आगे बढ़ रहा है। जेटब्रेन्स द्वारा वर्षों से न तो नेमेर्ले और न ही नाइट्रा का उल्लेख या संदर्भ दिया गया है।

विशेषताएं
नेमर्ले की सबसे उल्लेखनीय विशेषता कार्यक्रमिकता की शैलियों को मिलाने की क्षमता है जो वस्तु उन्मुख और कार्यात्मक हैं। कार्यक्रम को वस्तु उन्मुख अवधारणाएँ जैसे वर्ग और नाम-स्थान का उपयोग करके संरचित किया जा सकता है, अपितु विधियों को कार्यात्मक शैली में लिखा जा सकता है। अन्य उल्लेखनीय विशेषताओं में सम्मिलित बिंदु निम्नवत हैं:
 * शक्तिशाली प्रकार का निष्कर्ष।
 * लचीला मेटाप्रोग्रामिंग उपप्रणाली (मैक्रोज़ का उपयोग करके)।
 * सी#, जावा ( कार्यक्रमिक भाषा ), और सी++ की शैली में ऑब्जेक्ट ओरिएंटेड कार्यक्रमिक अथवा वस्तु उन्मुख कार्यकर्म(ओओपी) के लिए पूर्ण समर्थन।
 * एमएल (कार्यक्रमिक भाषा), ओकैमल, और हास्केल कार्यक्रमिक भाषा) की शैली में कार्यात्मक कार्यक्रमिक के लिए पूर्ण समर्थन, इसकी विशेषताओं के साथ:
 * उच्च क्रम के कार्य
 * प्रतिरूप मिलान
 * बीजगणितीय प्रकार
 * स्थानीय कार्य
 * ट्यूपल्स और अज्ञात प्रकार
 * कार्यों का आंशिक अनुप्रयोग

उच्च-स्तरीय कार्यक्रमिक भाषा जावा( कार्यक्रमिक भाषा) है। मेटाप्रोग्रामिंग प्रणाली क्रमादेशकों से संभवतानुसार भार उठाने के लिए उच्च-स्तरीय दृष्टिकोण लेते हुए, महान संकलक विस्तारशीलता, डोमेन-विशिष्ट भाषाओं को अंत:स्थापन करने, आंशिक मूल्यांकन और पक्ष-उन्मुख कार्यक्रमिक की अनुमति देता है। भाषा प्राचलिक बहुरूपता, अज्ञात प्रकार्य, विस्तार विधियों आदि सहित सभी सामान्य भाषा अवसंरचना (सीएलआई) मानक सुविधाओं को जोड़ती है। .नेट या मोनो मंच में सम्मिलित पुस्तकालयों तक पहुँचना सी# जितना सरल है।

प्रकार
प्रकार (एसएमएल और ओकैमल में आंकड़ा प्रकार या योग प्रकार कहा जाता है) कई अलग-अलग प्रकार के आंकड़े को व्यक्त करने के रूप हैं:

मेटाप्रोग्रामिंग
नेमर्ले का मैक्रो प्रणाली संकलन के समय कार्यक्रम संहिता बनाने, विश्लेषण करने और संशोधित करने की अनुमति देता है। मैक्रोज़ का उपयोग विधि कॉल के रूप में या नई भाषा निर्माण के रूप में किया जा सकता है। भाषा के अंदर कई निर्माण मैक्रोज़ (यदि, के लिए, प्रत्येक के लिए, अपितु, आदि का उपयोग करके) का उपयोग करके कार्यान्वित किए जाते हैं।

ब्रेसलेस सिंटैक्स
बाद में स्काला( कार्यक्रमिक भाषा) में जोड़े गए ब्रेसलेस सिंटैक्स के समान, नेमर्ले क्रमादेशक को वैकल्पिक रूप से पायथन ( कार्यक्रमिक भाषा) के समान ऑफ-साइड नियम के आधार पर श्वेत रिक्ति-संवेदनशील सिंटैक्स का उपयोग करने की अनुमति देता है।

निम्नलिखित कर्ली-ब्रेस स्निपेट: इसे अन्य रूप में इस निम्न प्रकार फिर से लिखा जा सकता है: विशेष रूप से, बैकस्लैश का उपयोग किए बिना कई पंक्तियों में मैचों में अभिव्यक्तियों या वैकल्पिक खंडों को तोड़ना संभव नहीं है : इस सिंटैक्स को सक्रिय करने के लिए, उपयोगकर्ता को जोड़ना होगा फ़ाइल के शीर्ष पर   या संकलक विकल्प का उपयोग करें।

आईडीई
नेमर्ले को एकीकृत विकास पर्यावरण(आईडीई) विजुअल स्टूडियो 2008 में एकीकृत किया जा सकता है।इसमें विजुअल स्टूडियो 2008 शेल (विजुअल स्टूडियो एक्सप्रेस संस्करण की तरह) और SharpDevelop या तीव्र विकास(लिंक टू प्लगइन सोर्स संहिता ) पर आधारित पूरी तरह से मुफ्त आईडीई भी है।

ऐड-इन्स और एक्सटेंशन(विस्तार) का उपयोग करके नेमर्ले को विजुअल स्टूडियो (2017 तक) में भी एकीकृत किया जा सकता है।

हैलो, विश्व!
पारंपरिक हैलो वर्ल्ड! कार्यक्रम अधिक सी #-जैसी फैशन में कार्यान्वित किया जा सकता है: या अधिक सरलता से:

मैक्रोज़ के उदाहरण
मैक्रोज़ संकलक द्वारा किए गए अतिरिक्त सांख्यिकीय रूप से जांच के साथ बॉयलरप्लेट संहिता उत्पन्न करने की अनुमति देते हैं। वे हाथ से लिखे जाने वाले संहिता की मात्रा को कम करते हैं, संहिता पीढ़ी(कोड जेनरेशन) को सुरक्षित बनाते हैं, और स्रोत संहिता को अपेक्षाकृत छोटा और पठनीय रखते हुए कार्यक्रम को संकलक जांच के साथ संहिता उत्पन्न करने की अनुमति देते हैं।

स्ट्रिंग स्वरूपण
स्ट्रिंग स्वरूपण मैक्रो $ संकेतन का उपयोग करके चर को तंत्रिका नष्ट और निर्माण के लिए सरल करता है:

घोषणात्मक संहिता पीढ़ी
संरचनात्मक समानता, मेमोइज़, जेसन, और मैक्रोज़ हैं जो संकलन समय में संहिता उत्पन्न करते हैं। चूंकि उनमें से कुछ (संरचनात्मक समानता, मेमोइज़) सी# विशेषताओं की तरह दिख सकते हैं, संकलन के समय, उन्हें संकलक द्वारा जांचा जाएगा और उनके मैक्रोज़ द्वारा पूर्वनिर्धारित तर्क का उपयोग करके उपयुक्त संहिता में बदल दिया जाएगा।

डेटाबेस पहुंच
एसक्यूएल के लिए नेमर्ले मैक्रोज़ का उपयोग करके आप लिख सकते हैं: इसके अतिरिक्त: और यह केवल लाइब्रेरी में कुछ संचालन छुपा नहीं रहा है, किंतु जिज्ञासा तंत्रिका(क्वेरी स्ट्रिंग) को समझने के लिए संकलक द्वारा किया गया अतिरिक्त कार्य, वहां उपयोग किए जाने वाले चर, और स्तम्भ डेटाबेस से लौटाए गए हैं। ExecuteReaderLoop(रीडरलूप निष्पादित करें) मैक्रो आपको मैन्युअल(स्वनिर्मित) रूप से अंकित करने के लिए सामान्यतः समतुल्य संहिता उत्पन्न करेगा। इसके अतिरिक्त, यह जाँचने के लिए संकलन समय पर डेटाबेस से जुड़ता है कि आपकी एसक्यूएल जिज्ञासा वास्तव में समझ में आती है।

नई भाषा का निर्माण
नेमर्ले मैक्रोज़ के साथ आप भाषा में कुछ नए सिंटैक्स भी प्रस्तुत कर सकते हैं: ford(EXPR ; EXPR) EXPR सिंटैक्स को प्रस्तुत करते हुए एक मैक्रो को परिभाषित करता है और इसका उपयोग किया जा सकता है:

एएसपी.नेट के साथ नेमेर्ले
नेमर्ले को या तो सीधे एएसपी.नेट(ASP.NET) में अंत:स्थापन किया जा सकता है: ..अथवा एक अलग फ़ाइल(लिखित पत्र) में संग्रहीत और एक पंक्ति के साथ अंकित किया गया:

पी इनवोक
नेमेर्ले वास्तविक मंच पुस्तकालय का लाभ उठा सकता है। सिंटैक्स सी# और अन्य .नेट भाषाओं के समान है। यहाँ सबसे सरल उदाहरण है:

अग्रिम पठन

 * Publications about नेमर्ले in RSDN Magazine, Russian official science magazine
 * Presentation "नेमर्ले is notable" by Denis Rystsov
 * Article "Unconventional languages for unconventional supercomputers" by Andrey Adinetz
 * Article "Unconventional languages for unconventional supercomputers" by Andrey Adinetz

बाहरी संबंध

 * GitHub project and repository (new development)
 * Google Code project and repository (old development)
 * नेमर्ले Forum
 * नेमर्ले presentation on Microsoft Research SSCLI RFP II Capstone 2005 workshop
 * नेमर्ले at 99 Bottles of Beer
 * नेमर्ले at 99 Bottles of Beer