एसोटेरिक प्रोग्रामिंग लैंग्वेज

एक गूढ़ प्रोग्रामिंग भाषा (कभी-कभी एसोलंग के लिए संक्षिप्त) एक प्रोग्रामिंग भाषा है जिसे कंप्यूटर प्रोग्रामिंग भाषा डिज़ाइन की सीमाओं का परीक्षण करने के लिए डिज़ाइन किया गया है, अवधारणा के प्रमाण के रूप में, सॉफ़्टवेयर कला के रूप में, किसी अन्य भाषा (विशेष रूप से कार्यात्मक प्रोग्रामिंग या प्रक्रियात्मक प्रोग्रामिंग भाषाओं) के लिए हैकिंग इंटरफ़ेस के रूप में ), या मजाक के रूप में। विक्षनरी: एसोटेरिक शब्द का उपयोग उन्हें उन भाषाओं से अलग करता है जो कामकाजी डेवलपर्स सॉफ्टवेयर लिखने के लिए उपयोग करते हैं। अधिकांश एसोलैंग्स के निर्माता उन्हें मुख्यधारा की प्रोग्रामिंग के लिए उपयोग करने का इरादा नहीं रखते हैं, हालांकि कुछ गूढ़ विशेषताएं, जैसे कि नेत्रहीन सिंटैक्स (प्रोग्रामिंग भाषाएं), कला में व्यावहारिक अनुप्रयोगों को प्रेरित किया है। ऐसी भाषाएँ अक्सर हैकर (शौकीन) और शौकीनों के बीच लोकप्रिय होती हैं। गूढ़ प्रोग्रामिंग भाषाओं के डिजाइनरों के लिए उपयोगिता शायद ही कभी एक लक्ष्य है; अक्सर उनका डिजाइन काफी विपरीत होता है। उनका सामान्य उद्देश्य ट्यूरिंग-पूर्ण, या यहां तक ​​​​कि एक जिसके लिए कम्प्यूटेबिलिटी सिद्धांत (कंप्यूटर विज्ञान) अज्ञात है, को बनाए रखते हुए पारंपरिक भाषा सुविधाओं को हटाना या बदलना है।

इतिहास
एक गूढ़ प्रोग्रामिंग भाषा का प्रारंभिक, और अभी भी विहित उदाहरण, INTERCAL है, 1972 में डॉन वुड्स (प्रोग्रामर) और जेम्स एम. ल्योन द्वारा डिज़ाइन किया गया, जिन्होंने कहा कि उनका इरादा एक ऐसी प्रोग्रामिंग भाषा बनाना था जिससे वे परिचित थे। यह दिन की स्थापित प्रोग्रामिंग भाषाओं जैसे कि फोरट्रान, COBOL और सभा की भाषा के हास्यानुकृति तत्व हैं।

कई वर्षों के लिए, INTERCAL को केवल INTERCAL मैनुअल की कागजी प्रतियों द्वारा दर्शाया गया था। 1990 में यूनिक्स के तहत सी (प्रोग्रामिंग भाषा) में कार्यान्वयन के रूप में इसके पुनरुद्धार ने गूढ़ कंप्यूटर भाषाओं के जानबूझकर डिजाइन में रुचि की लहर को प्रेरित किया।

1993 में, Wouter van Oortmerssen ने FALSE बनाया, एक छोटी स्टैक-उन्मुख प्रोग्रामिंग भाषा जिसमें सिंटैक्स को कोड को स्वाभाविक रूप से अस्पष्ट, भ्रामक और अपठनीय बनाने के लिए डिज़ाइन किया गया था। इसका कम्पाइलर साइज में केवल 1024 बाइट्स का होता है। इसने अर्बन मुलर को और भी छोटी भाषा बनाने के लिए प्रेरित किया, जो अब कुख्यात ब्रेनफक है, जिसमें केवल आठ मान्यता प्राप्त वर्ण हैं। क्रिस प्रेसी की Befung (जैसे FALSE, लेकिन एक द्वि-आयामी निर्देश सूचक के साथ) के साथ, ब्रेनफक अब न्यूनतम ट्यूरिंग टैरपिट्स के कैनोनिकल उदाहरणों और अनावश्यक रूप से अस्पष्ट भाषा सुविधाओं के साथ सबसे अच्छी समर्थित गूढ़ प्रोग्रामिंग भाषाओं में से एक है। ब्रेनफक ट्यूरिंग मशीनों के पी' परिवार से संबंधित है।

सामान्य विशेषताएं
जबकि गूढ़ प्रोग्रामिंग भाषाएँ कई मायनों में भिन्न हैं, कुछ सामान्य लक्षण हैं जो कई भाषाओं की विशेषताएँ हैं, जैसे पैरोडी, अतिसूक्ष्मवाद और प्रोग्रामिंग को कठिन बनाने का लक्ष्य।

अद्वितीय डेटा प्रतिनिधित्व
पारंपरिक अनिवार्य प्रोग्रामिंग आमतौर पर डेटा को चर में संग्रहीत करने की अनुमति देती है, लेकिन गूढ़ भाषाएँ डेटा को संग्रहीत करने और एक्सेस करने के विभिन्न तरीकों का उपयोग कर सकती हैं। Brainfuck और Malbolge जैसी भाषाएं केवल एक पॉइंटर (कंप्यूटर प्रोग्रामिंग) के माध्यम से डेटा को पढ़ने की अनुमति देती हैं, जिसे डेटा पढ़ने से पहले रुचि के स्थान पर ले जाना चाहिए। बेफंज और शेक्सपियर प्रोग्रामिंग भाषा जैसे अन्य, डेटा को होल्ड करने के लिए एक या एक से अधिक स्टैक (सार डेटा प्रकार) का उपयोग करते हैं, जिससे रिवर्स पोलिश नोटेशन के समान निष्पादन का तरीका सामने आता है। अंत में, ऐसी भाषाएं हैं जो संख्या प्रतिनिधित्व के वैकल्पिक रूपों का पता लगाती हैं: ब्रेनफक संस्करण बूलफक केवल एकल बिट्स पर संचालन की अनुमति देता है, जबकि मालबोल्गे और इंटरकैल संस्करण त्रिइन्टरकैल बिट्स को एक आधार 3 टर्नरी अंक प्रणाली प्रणाली के साथ पूरी तरह से बदल देता है।

अद्वितीय निर्देश प्रतिनिधित्व
गूढ़ भाषाएँ कार्यक्रम के निर्देशों का प्रतिनिधित्व करने के अनूठे तरीके भी प्रदर्शित करती हैं। कुछ भाषाएँ, जैसे कि बेफुंज और पीट, दो या दो से अधिक आयामों में कार्यक्रमों का प्रतिनिधित्व करती हैं, कार्यक्रम नियंत्रण के साथ कार्यक्रम के माध्यम से कई संभावित दिशाओं में घूमता है। यह पारंपरिक भाषाओं से भिन्न है जिसमें एक प्रोग्राम निर्देशों का एक सेट होता है जो आमतौर पर अनुक्रम में सामने आता है। अन्य भाषाएं असामान्य रूप में प्रकट होने के लिए निर्देशों को संशोधित करती हैं, अक्सर एक जिसे मानव द्वारा अंतर्निहित निर्देशों के वैकल्पिक अर्थ के साथ पढ़ा जा सकता है। शेक्सपियर प्रोग्रामिंग भाषा सभी कार्यक्रमों को शेक्सपियरियन नाटकों के समान बनाकर इसे प्राप्त करती है। शेफ प्रोग्रामिंग भाषा सभी कार्यक्रमों को रेसिपी बनाकर समान प्राप्त करती है। बावर्ची विशेष रूप से उल्लेखनीय है कि कुछ ने ऐसे कार्यक्रम बनाए हैं जो इस दोहरे अर्थ को उत्पन्न करने के लिए भाषा की क्षमता का प्रदर्शन करते हुए कार्यक्रम और नुस्खा दोनों के रूप में सफलतापूर्वक कार्य करते हैं।

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

पैरोडी और स्पूफ
गूढ़ प्रोग्रामिंग भाषाओं का एक उद्देश्य प्रोग्रामिंग के क्षेत्र में मौजूदा भाषाओं और रुझानों की पैरोडी या स्पूफ करना है। उदाहरण के लिए, पहली गूढ़ भाषा INTERCAL 1960 के दशक में APL (प्रोग्रामिंग लैंग्वेज), फोरट्रान और COBOL जैसी भाषाओं की नकल के रूप में शुरू हुई। इंटरकैल के नियम इन अन्य भाषाओं के नियमों के विपरीत प्रतीत होते हैं। हालाँकि, पैरोडी का विषय हमेशा एक अन्य स्थापित प्रोग्रामिंग भाषा नहीं है। उदाहरण के लिए, शेक्सपियर प्रोग्रामिंग लैंग्वेज को शेक्सपियर के नाटकों की संरचना को खराब करने के रूप में देखा जा सकता है। भाषा ठीक है! ब्रेनफक की पैरोडी है, जहां ब्रेनफक के 8 कमांड को ओक जैसी विभिन्न ऑरंगुटैंग ध्वनियों द्वारा प्रतिस्थापित किया जाता है। ठीक है?

बिफंगे
Befunge निर्देश सूचक को कोड के माध्यम से कई आयामों में घूमने की अनुमति देता है। उदाहरण के लिए, निम्न प्रोग्राम हैलो, वर्ल्ड प्रदर्शित करता है! प्रोग्राम| हैलो वर्ल्ड वर्णों को स्टैक पर उल्टे क्रम में धकेल कर, फिर वर्णों को एक लूप में प्रिंट करके जो निर्देशों के माध्यम से दक्षिणावर्त प्रसारित होता है,  ,  ,  ,  , और. Befunge के कई संस्करण हैं, सबसे आम Befunge-93 है।

बाइनरी लैम्ब्डा कैलकुस
बाइनरी लैम्ब्डा कैलकुलस को एल्गोरिथम सूचना सिद्धांत के दृष्टिकोण से डिज़ाइन किया गया है ताकि सबसे न्यूनतम साधनों के साथ सघनतम संभव कोड की अनुमति दी जा सके, जिसमें 29-बाइट सेल्फ इंटरप्रेटर, 21-बाइट प्राइम नंबर छलनी और 112-बाइट ब्रेनफक इंटरप्रेटर शामिल है।

ब्रेनफक
Brainfuck अत्यधिक अतिसूक्ष्मवाद के लिए डिज़ाइन किया गया है और केवल आठ अलग-अलग वर्णों वाले कार्यक्रमों के साथ अस्पष्ट कोड की ओर जाता है। निम्नलिखित प्रोग्राम हैलो, वर्ल्ड को आउटपुट करता है! :

को छोड़कर सभी पात्र +-<>,.[] उपेक्षित हैं।

चिकन
चिकन के केवल तीन टोकन हैं, चिकन शब्द,, और \n। कंपाइलर एक लाइन पर मुर्गियों की मात्रा को एक ऑपकोड निर्देश के रूप में व्याख्या करता है जिसका उपयोग वह स्टैक पर डेटा में हेरफेर करने के लिए करता है। एक साधारण चिकन प्रोग्राम में दर्जनों लाइनें हो सकती हैं, लेकिन चिकन शब्द को अनगिनत बार दोहराया जाता है। चिकन का आविष्कार Torbjörn Söderstedt द्वारा किया गया था जिन्होंने एक वैज्ञानिक निबंध की पैरोडी से भाषा के लिए अपनी प्रेरणा प्राप्त की थी।

बावर्ची
शेफ एक स्टैक-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है जिसे डेविड मॉर्गन-मार्च द्वारा बनाया गया है, जिसे प्रोग्राम को व्यंजन विधि की तरह दिखने के लिए डिज़ाइन किया गया है। प्रोग्राम में एक शीर्षक, वेरिएबल्स की एक सूची और उनके डेटा मान और स्टैक हेरफेर निर्देशों की एक सूची शामिल होती है। एक मज़ाकिया डिज़ाइन सिद्धांत बताता है कि कार्यक्रम व्यंजनों को न केवल वैध आउटपुट उत्पन्न करना चाहिए, बल्कि तैयार करना आसान और स्वादिष्ट होना चाहिए, और मॉर्गन-मार नोट करता है कि 101 अंडे और 111 कप तेल के साथ एक उदाहरण हैलो वर्ल्ड प्रोग्राम एक व्यक्ति के लिए बहुत सारे भोजन का उत्पादन करेगा।.

फ्रैक्ट्रान
एक FRACTRAN कार्यक्रम एक प्रारंभिक सकारात्मक पूर्णांक इनपुट के साथ सकारात्मक अंशों की एक क्रमबद्ध सूची है $$n$$. कार्यक्रम पूर्णांक को गुणा करके चलाया जाता है $$n$$ पहले अंश से $$f$$ जिसके लिए सूची में $$nf$$ एक पूर्णांक है। पूर्णांक $$n$$ फिर द्वारा प्रतिस्थापित किया जाता है $$nf$$ और नियम दोहराया जाता है। यदि सूची में कोई अंश गुणा करने पर पूर्णांक नहीं बनाता है $$n$$, कार्यक्रम रुक जाता है। फ्रैक्ट्रान का आविष्कार गणितज्ञ जॉन हॉर्टन कॉनवे ने किया था।

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

इंटरकाल
INTERCAL, short for "Comp i ler La n guage Wi t h No P r onoun c e a b l e Acronym", 1972 में उस समय की विभिन्न प्रोग्रामिंग भाषाओं के पहलुओं पर व्यंग्य करने के लिए पैरोडी के रूप में बनाया गया था।

जेएसएफक
JSFuck जावास्क्रिप्ट की एक गूढ़ प्रोग्रामिंग शैली है, जहाँ केवल छह वर्णों का उपयोग करके कोड लिखा जाता है:,  ,  ,  ,  , और. ब्रेनफक के विपरीत, जिसके लिए अपने स्वयं के संकलक या दुभाषिया की आवश्यकता होती है, JSFuck वैध जावास्क्रिप्ट कोड है, जिसका अर्थ है कि JSFuck प्रोग्राम किसी भी वेब ब्राउज़र या इंजन में चलाया जा सकता है जो जावास्क्रिप्ट की व्याख्या करता है।

लोलकोड
LOLCODE को lolcats के भाषण के समान बनाया गया है। निम्नलिखित हैलो वर्ल्ड का उदाहरण है:  है STDIO हो सकता है? विजिबल हाई वर्ल्ड! निजता सार्वजनिक 

जबकि LOLCODE का शब्दार्थ (कंप्यूटर विज्ञान) असामान्य नहीं है, इसके वाक्य-विन्यास को एक भाषाई घटना के रूप में वर्णित किया गया है, जो प्रोग्रामिंग में अनौपचारिक भाषण और इंटरनेट की ख़ास बोली के असामान्य उदाहरण का प्रतिनिधित्व करता है।

मालबोलगे
Malbolge (Malebolge के नाम पर रखा गया) को सबसे कठिन और गूढ़ प्रोग्रामिंग भाषा के रूप में डिजाइन किया गया था। अन्य विशेषताओं में, कोड डिज़ाइन द्वारा स्व-संशोधित है और एक निर्देश का प्रभाव मेमोरी में उसके पते पर निर्भर करता है।

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

20 रंग हैं जिनके लिए व्यवहार निर्दिष्ट किया गया है: 18 रंगीन रंग, जिन्हें 6-चरणीय रंग चक्र और 3-चरण चमक चक्र द्वारा क्रमबद्ध किया जाता है; और काले और सफेद, जो आदेशित नहीं हैं। एक रंगीन रंग से बाहर निकलने और दूसरे में प्रवेश करने पर, निष्पादित प्रक्रिया रंग और चमक में परिवर्तन के चरणों की संख्या से निर्धारित होती है। काले रंग में प्रवेश नहीं किया जा सकता; जब सूचक एक काले क्षेत्र में प्रवेश करने का प्रयास करता है, तो इसके बजाय अगले ब्लॉक को चुनने के नियम बदल जाते हैं। यदि सभी संभावित नियमों का प्रयास किया जाता है, तो कार्यक्रम समाप्त हो जाता है। छवि की सीमाओं के बाहर के क्षेत्रों को भी काला माना जाता है। व्हाइट ऑपरेशन नहीं करता है, लेकिन पॉइंटर को से गुजरने देता है। निर्दिष्ट 20 के अलावा अन्य रंगों का व्यवहार संकलक या दुभाषिया पर छोड़ दिया जाता है। वेरिएबल्स को मेमोरी में सिंगल स्टैक (अमूर्त डेटा प्रकार) में हस्ताक्षरित पूर्णांक के रूप में संग्रहीत किया जाता है। अधिकांश निर्दिष्ट प्रक्रियाएं उस स्टैक पर संचालन से निपटती हैं, जबकि अन्य इनपुट/आउटपुट और उन नियमों से निपटती हैं जिनके द्वारा संकलन सूचक चलता है। पीट का नाम डच चित्रकार पीट मोंड्रियन के नाम पर रखा गया था। मूल इरादा नाम, मोंड्रियन, पहले से ही मोंड्रियन (सॉफ्टवेयर) | एक ओपन-सोर्स सांख्यिकीय डेटा-विज़ुअलाइज़ेशन सिस्टम द्वारा लिया गया था।

रॉकस्टार
रॉकस्टार एक कंप्यूटर प्रोग्रामिंग लैंग्वेज है जिसे प्रोग्राम बनाने के लिए डिज़ाइन किया गया है जो कि डायलन बीट्टी द्वारा बनाए गए हेयर मेटल पावर गाथागीत भी हैं।

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

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

व्हाइटस्पेस
व्हॉट्सएप (प्रोग्रामिंग लैंग्वेज) केवल व्हाइटस्पेस कैरेक्टर्स (स्पेस, टैब और रिटर्न) का उपयोग करता है, अन्य सभी कैरेक्टर्स को अनदेखा करता है, इसलिए इसका उपयोग टिप्पणियों के लिए किया जा सकता है। यह कई पारंपरिक भाषाओं का उल्टा है, जो अलग-अलग व्हाट्सएप वर्णों के बीच अंतर नहीं करती हैं, टैब और स्पेस को समान मानती हैं। यह व्हॉट्सएप प्रोग्राम को सी जैसी भाषाओं में प्रोग्राम के सोर्स कोड में छिपाने की अनुमति भी देता है।

सांस्कृतिक संदर्भ
ज्योफ कॉक्स द्वारा एसोलांग्स के सांस्कृतिक संदर्भ का अध्ययन किया गया है, जो लिखते हैं कि एसोलांग्स सांस्कृतिक अभिव्यक्ति और इनकार की ओर आदेश और नियंत्रण से ध्यान हटाते हैं, एसोलांग्स को कोड आर्ट और कोड पोएट्री के समान देखना, जैसे कि मेज़ ब्रीज़ की मेज़ेंजेल। डैनियल टेमकिन ने ब्रेनफक का वर्णन मानव अभिव्यक्ति और असेंबली कोड के बीच की सीमा को कम करने से इंकार कर दिया और इस तरह हमें तर्क की हास्यास्पद यात्रा पर ले गया, मानव सोच और कंप्यूटर तर्क के बीच निहित संघर्ष को उजागर करना। वह प्रवाह आंदोलन जैसे इवेंट स्कोर के प्रदर्शन के लिए एक एसोलंग के भीतर प्रोग्रामिंग को जोड़ता है, जहां कोड में तर्क के नियमों को खेलने से भाषा का दृष्टिकोण स्पष्ट हो जाता है।

बाहरी संबंध

 * Esolang, the esoteric programming languages wiki