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

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

गूढ़ प्रोग्रामिंग भाषाओं के डिजाइनरों के लिए उपयोगिता संभवतः ही एक लक्ष्य है; जो अधिकांशतः उनका डिजाइन अधिक विपरीत होता है। उनका सामान्य उद्देश्य ट्यूरिंग-पूर्ण, या यहां तक ​​​​कि जिसके लिए संगणनात्मक वर्ग में अज्ञात होता है, उसको बनाए रखते हुए पारंपरिक भाषा सुविधाओं को हटाना या बदलना होता है।

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

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

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

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

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

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

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

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

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

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

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

+-<>,.[]के अतिरिक्त सभी वर्णों पर ध्यान नहीं दिया जाता है।

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

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

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

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

इंटरकाल
इंटरकैल, "कंपाइलर लैंग्वेज विद नो प्रोनाउंसेबल एक्रोनिम" के लिए संक्षिप्त, 1972 में उस समय की विभिन्न प्रोग्रामिंग भाषाओं के पहलुओं पर व्यंग्य करने के लिए एक पैरोडी के रूप में बनाया गया था।

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

लोलकोड
लोलकोड को लोल्कैट्स के भाषण के समान बनाया गया है। निम्नलिखित "हैलो वर्ल्ड" उदाहरण है:

HAI

CAN HAS STDIO?

VISIBLE "HAI WORLD!"

KTHXBYE

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

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

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

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

वेवेरिएबल्स को स्मृति में एक स्टैक में हस्ताक्षरित पूर्णांक के रूप में संग्रहीत किया जाता है। अधिकांश निर्दिष्ट प्रक्रियाएं उस स्टैक पर संचालन से संबंधित हैं, जबकि अन्य इनपुट/आउटपुट और उन नियमों से निपटते हैं जिनके द्वारा संकलन सूचक चलता है।

पीट का नाम डच चित्रकार पीट मोंड्रियन के नाम पर रखा गया था। मूल प्रयोजन नाम, मोंड्रियन,पहले से ही मोंड्रियन (सॉफ्टवेयर) ओपन-सोर्स सांख्यिकीय डेटा-विज़ुअलाइज़ेशन सिस्टम द्वारा लिया गया था।

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

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

हेमलेट अधिनियम I|अधिनियम I: हैमलेट का अपमान और चापलूसी।

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

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

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

बाहरी संबंध

 * Esolang, the esoteric programming languages wiki