नेमर्ले

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

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

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

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

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

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

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

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

आईडीई
नेमर्ले को एकीकृत विकास पर्यावरण(आईडीई) विजुअल स्टूडियो 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