एसोटेरिक प्रोग्रामिंग लैंग्वेज: Difference between revisions
No edit summary |
(→इतिहास) |
||
Line 5: | Line 5: | ||
== इतिहास == | == इतिहास == | ||
एक गूढ़ प्रोग्रामिंग भाषा का सबसे पहला, और अभी भी विहित उदाहरण, [[INTERCAL]] है,<ref>Matthew Fuller, [https://mitpress.mit.edu/books/software-studies Software Studies], MIT Press, 2008</ref> जिसे 1972 में [[डॉन वुड्स (प्रोग्रामर)]] और '''जेम्स एम. ल्योन''' द्वारा डिज़ाइन किया गया,जिन्होंने कहा था कि उनका इरादा एक ऐसी प्रोग्रामिंग भाषा बनाना था जिससे वे परिचित थे <ref name="Raymond1996">{{cite book|author=Eric S. Raymond|title=The New Hacker's Dictionary|url=https://books.google.com/books?id=g80P_4v4QbIC&pg=PA258|year=1996|publisher=MIT Press|isbn=978-0-262-68092-9|page=258}}</ref><ref name="woods-lyon-intercal">{{citation|url=http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |last1=Woods |first1=Donald R. |last2=Lyon |first2=James M. |year=1973 |title=The INTERCAL Programming Language Reference Manual |access-date=2009-04-24 |publisher=Muppetlabs.com |archive-url=https://web.archive.org/web/20090220145921/http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |archive-date=2009-02-20 |url-status=dead }}</ref> यह उस समय की स्थापित प्रोग्रामिंग भाषाओं जैसे कि [[फोरट्रान]], [[COBOL|कोबोल]] और [[सभा की भाषा|असेंबली भाषा]] के तत्वों की पैरोडी करता है। | एक गूढ़ प्रोग्रामिंग भाषा का सबसे पहला, और अभी भी विहित उदाहरण, [[INTERCAL|इंटरकैल]] है,<ref>Matthew Fuller, [https://mitpress.mit.edu/books/software-studies Software Studies], MIT Press, 2008</ref> जिसे 1972 में [[डॉन वुड्स (प्रोग्रामर)]] और '''जेम्स एम. ल्योन''' द्वारा डिज़ाइन किया गया,जिन्होंने कहा था कि उनका इरादा एक ऐसी प्रोग्रामिंग भाषा बनाना था जिससे वे परिचित थे <ref name="Raymond1996">{{cite book|author=Eric S. Raymond|title=The New Hacker's Dictionary|url=https://books.google.com/books?id=g80P_4v4QbIC&pg=PA258|year=1996|publisher=MIT Press|isbn=978-0-262-68092-9|page=258}}</ref><ref name="woods-lyon-intercal">{{citation|url=http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |last1=Woods |first1=Donald R. |last2=Lyon |first2=James M. |year=1973 |title=The INTERCAL Programming Language Reference Manual |access-date=2009-04-24 |publisher=Muppetlabs.com |archive-url=https://web.archive.org/web/20090220145921/http://www.muppetlabs.com/~breadbox/intercal/intercal.txt |archive-date=2009-02-20 |url-status=dead }}</ref> यह उस समय की स्थापित प्रोग्रामिंग भाषाओं जैसे कि [[फोरट्रान]], [[COBOL|कोबोल]] और [[सभा की भाषा|असेंबली भाषा]] के तत्वों की पैरोडी करता है। | ||
कई वर्षों के लिए, | कई वर्षों के लिए, इंटरकैल को केवल इंटरकैल मैनुअल की कागजी प्रतियों द्वारा दर्शाया गया था। [[यूनिक्स]] के तहत [[सी (प्रोग्रामिंग भाषा)]] में एक कार्यान्वयन के रूप में 1990 में इसके पुनरुद्धार ने गूढ़ कंप्यूटर भाषाओं के जानबूझकर डिजाइन में रुचि की लहर को प्रेरित किया। | ||
1993 में, | 1993 में, वाउटर वैन ऊर्टमर्सन ने फालसे बनाया, एक छोटी [[स्टैक-उन्मुख प्रोग्रामिंग भाषा]] जिसमें सिंटैक्स को कोड को स्वाभाविक रूप से अस्पष्ट, भ्रामक और अपठनीय बनाने के लिए डिज़ाइन किया गया था। इसका संकलक आकार में केवल 1024 बाइट का है।<ref name="Wouter">{{cite journal | title = Interview with Wouter van Oortmerssen | journal = Esoteric.codes | url = https://esoteric.codes/blog/interview-with-wouter-van-oortmerssen | ||
| date = 1 July 2015 | access-date = 1 December 2015 | archive-date = 8 December 2015 | archive-url = https://web.archive.org/web/20151208094626/http://esoteric.codes/post/122942498363/interview-with-wouter-van-oortmerssen | url-status = live }}</ref> इसने अर्बन मुलर को और भी छोटी भाषा बनाने के लिए प्रेरित किया, जो अब कुख्यात [[ब्रेनफक]] है, जिसमें केवल आठ मान्यता प्राप्त वर्ण हैं। क्रिस प्रेसी की [[Befung|बेफुंज]] (जैसे | | date = 1 July 2015 | access-date = 1 December 2015 | archive-date = 8 December 2015 | archive-url = https://web.archive.org/web/20151208094626/http://esoteric.codes/post/122942498363/interview-with-wouter-van-oortmerssen | url-status = live }}</ref> इसने अर्बन मुलर को और भी छोटी भाषा बनाने के लिए प्रेरित किया, जो अब कुख्यात [[ब्रेनफक]] है, जिसमें केवल आठ मान्यता प्राप्त वर्ण हैं। क्रिस प्रेसी की [[Befung|बेफुंज]] (जैसे फालसे, लेकिन एक द्वि-आयामी निर्देश सूचक के साथ) के साथ, ब्रेनफक अब [[ट्यूरिंग टैरपिट|ट्यूरिंग टैरपिट्स]] के कैनोनिकल उदाहरणों और अनावश्यक रूप से अस्पष्ट भाषा सुविधाओं के साथ सबसे अच्छी समर्थित गूढ़ प्रोग्रामिंग भाषाओं में से एक है। ब्रेनफक [[ट्यूरिंग मशीन|ट्यूरिंग मशीनों]] के पी' परिवार से संबंधित है। | ||
== सामान्य विशेषताएं == | == सामान्य विशेषताएं == | ||
जबकि गूढ़ प्रोग्रामिंग भाषाएं कई | जबकि गूढ़ प्रोग्रामिंग भाषाएं कई विधियों से भिन्न होती हैं, कुछ सामान्य लक्षण होते हैं जो कई भाषाओं की विशेषता बताते हैं, जैसे पैरोडी, अतिसूक्ष्मवाद, और प्रोग्रामिंग को कठिन बनाने का लक्ष्य बनाते है। <ref>{{Cite book |first=Matthew |last=Fuller |title=Software studies: a lexicon |date=2008 |publisher=MIT Press |isbn=978-0-262-06274-9 |oclc=1156851190}}</ref> | ||
=== अद्वितीय डेटा प्रतिनिधित्व === | === अद्वितीय डेटा प्रतिनिधित्व === | ||
पारंपरिक [[अनिवार्य प्रोग्रामिंग]] सामान्यतः डेटा को चर में संग्रहीत करने की अनुमति देती हैं, लेकिन गूढ़ भाषाएं डेटा को संग्रहीत करने और एक्सेस करने के विभिन्न | पारंपरिक [[अनिवार्य प्रोग्रामिंग]] सामान्यतः डेटा को चर में संग्रहीत करने की अनुमति देती हैं, लेकिन गूढ़ भाषाएं डेटा को संग्रहीत करने और एक्सेस करने के विभिन्न विधियों का उपयोग कर सकती हैं। '''ब्रेनफक और मालबोल्गे''' जैसी भाषाएं केवल एक सूचक के माध्यम से डेटा को पढ़ने की अनुमति देती हैं, जिसे डेटा पढ़ने से पहले रुचि के स्थान पर ले जाना चाहिए। अन्य, जैसे बेफंज और [[शेक्सपियर प्रोग्रामिंग भाषा]] जैसे डेटा को डेटा को होल्ड करने के लिए एक या एक से अधिक स्टैक का उपयोग करते हैं, जिससे [[रिवर्स पोलिश नोटेशन]] के समान निष्पादन का तरीका सामने आता है। अंत में, ऐसी भाषाएं हैं जो संख्या प्रतिनिधित्व के वैकल्पिक रूपों का पता लगाती हैं: ब्रेनफक संस्करण बूलफक केवल एकल बिट्स पर संचालन की अनुमति देता है, जबकि [[मालबोल्गे]] और और इंटरकैल वेरिएंट ट्राईइंटरकल बिट्स को एक आधार 3 टर्नरी सिस्टम के साथ पूरी तरह से बदल देता है। <ref name=":1">Morr, Sebastian. "Esoteric Programming Languages." (2015).</ref> | ||
=== अद्वितीय निर्देश प्रतिनिधित्व === | === अद्वितीय निर्देश प्रतिनिधित्व === | ||
गूढ़ भाषाएँ कार्यक्रम के निर्देशों का प्रतिनिधित्व करने के अनूठे तरीके भी प्रदर्शित करती हैं। कुछ भाषाएँ, जैसे कि बेफुंज और पीट, दो या दो से अधिक आयामों में कार्यक्रमों का प्रतिनिधित्व करती हैं, कार्यक्रम नियंत्रण कार्यक्रम के माध्यम से कई संभावित दिशाओं में घूमता है।{{sfn|Cox|2013}}{{page needed|date=June 2022}} यह पारंपरिक भाषाओं से भिन्न है जिसमें एक प्रोग्राम निर्देशों का एक सेट होता है जो सामान्यतः अनुक्रम में मिलते हैं। अन्य भाषाएं असामान्य रूप में प्रकट होने के लिए निर्देशों को संशोधित करती हैं, अक्सर एक जिसे मानव द्वारा अंतर्निहित निर्देशों के वैकल्पिक अर्थ के साथ पढ़ा जा सकता है। शेक्सपियर प्रोग्रामिंग भाषा सभी कार्यक्रमों को शेक्सपियरियन नाटकों के समान बनाकर इसे प्राप्त करती है। [[शेफ प्रोग्रामिंग भाषा]] सभी कार्यक्रमों को रेसिपीज बना कर शेफ समान प्राप्त करता है।<ref name=":1" /> शेफ विशेष रूप से उल्लेखनीय है कि कुछ ऐसे कार्यक्रम बनाए हैं, जो इस दोहरे अर्थ को उत्पन्न करने के लिए भाषा की क्षमता का प्रदर्शन करते हुए कार्यक्रम और नुस्खा दोनों के रूप में सफलतापूर्वक कार्य करते हैं।<ref>{{Cite web |last=Mike |date=2013-03-31 |title=Baking a Hello World Cake |url=http://www.mike-worth.com/2013/03/31/baking-a-hello-world-cake/ |access-date=2022-06-01 |website=Products of Mike's Mind |language=en-US}}</ref> | गूढ़ भाषाएँ कार्यक्रम के निर्देशों का प्रतिनिधित्व करने के अनूठे तरीके भी प्रदर्शित करती हैं। कुछ भाषाएँ, जैसे कि बेफुंज और पीट, दो या दो से अधिक आयामों में कार्यक्रमों का प्रतिनिधित्व करती हैं, कार्यक्रम नियंत्रण कार्यक्रम के माध्यम से कई संभावित दिशाओं में घूमता है।{{sfn|Cox|2013}}{{page needed|date=June 2022}} यह पारंपरिक भाषाओं से भिन्न है जिसमें एक प्रोग्राम निर्देशों का एक सेट होता है जो सामान्यतः अनुक्रम में मिलते हैं। अन्य भाषाएं असामान्य रूप में प्रकट होने के लिए निर्देशों को संशोधित करती हैं, अक्सर एक जिसे मानव द्वारा अंतर्निहित निर्देशों के वैकल्पिक अर्थ के साथ पढ़ा जा सकता है। शेक्सपियर प्रोग्रामिंग भाषा सभी कार्यक्रमों को शेक्सपियरियन नाटकों के समान बनाकर इसे प्राप्त करती है। [[शेफ प्रोग्रामिंग भाषा]] सभी कार्यक्रमों को रेसिपीज बना कर शेफ समान प्राप्त करता है।<ref name=":1" /> शेफ विशेष रूप से उल्लेखनीय है कि कुछ ऐसे कार्यक्रम बनाए हैं, जो इस दोहरे अर्थ को उत्पन्न करने के लिए भाषा की क्षमता का प्रदर्शन करते हुए कार्यक्रम और नुस्खा दोनों के रूप में सफलतापूर्वक कार्य करते हैं।<ref>{{Cite web |last=Mike |date=2013-03-31 |title=Baking a Hello World Cake |url=http://www.mike-worth.com/2013/03/31/baking-a-hello-world-cake/ |access-date=2022-06-01 |website=Products of Mike's Mind |language=en-US}}</ref> | ||
=== पढ़ने और लिखने में कठिनाई === | === पढ़ने और लिखने में कठिनाई === | ||
कई गूढ़ प्रोग्रामिंग भाषाओं को | कई गूढ़ प्रोग्रामिंग भाषाओं को कोड तैयार करने के लिए डिज़ाइन किया गया है जो गहराई से अस्पष्ट है, जिससे इसे पढ़ना और लिखना मुश्किल हो जाता है।<ref name=":2">Mateas, M. and Montfort, N. A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics. In ''Digital Arts and Culture: Digital Experience: Design, Aesthetics, Practice'' ''(DAC 2005)'', Copenhagen, Denmark, 2005.</ref> इसका उद्देश्य कार्यक्रम लेखकों के लिए एक दिलचस्प पहेली या चुनौती प्रदान करना हो सकता है: उदाहरण के लिए मालबोलगे को स्पष्ट रूप से चुनौतीपूर्ण होने के लिए डिज़ाइन किया गया था, और इसलिए इसमें [[स्व-संशोधित कोड]] और अत्यधिक प्रतिसंवेदी संचालन जैसी विशेषताएं हैं।<ref name=":2" /> दूसरी ओर, कुछ गूढ़ भाषाओं को उनके अन्य डिज़ाइन विकल्पों के कारण लिखना कठिन हो जाता है। ब्रेनफक एक न्यूनतम निर्देश सेट के विचार के लिए प्रतिबद्ध है, इसलिए भले ही इसके निर्देश सिद्धांत रूप में सीधे हों, जो कोड उत्पन्न होता है वह मनुष्य के लिए पढ़ना मुश्किल होता है। इंटरकैल की कठिनाई किसी अन्य प्रोग्रामिंग भाषा में उपयोग किए जाने वाले संचालन से बचने के विकल्प के परिणामस्वरूप उत्पन्न होती है, जो अन्य भाषाओं की पैरोडी के रूप में इसकी उत्पत्ति से उत्पन्न होती है।<ref name=":2" /> | ||
=== पैरोडी और स्पूफ === | === पैरोडी और स्पूफ === | ||
गूढ़ प्रोग्रामिंग भाषाओं का एक उद्देश्य प्रोग्रामिंग के क्षेत्र में मौजूदा भाषाओं और रुझानों की पैरोडी या स्पूफ करना है।<ref name=":2" />उदाहरण के लिए, पहली गूढ़ भाषा | गूढ़ प्रोग्रामिंग भाषाओं का एक उद्देश्य प्रोग्रामिंग के क्षेत्र में मौजूदा भाषाओं और रुझानों की पैरोडी या स्पूफ करना है।<ref name=":2" />उदाहरण के लिए, पहली गूढ़ भाषा इंटरकैल 1960 के दशक में APL (प्रोग्रामिंग लैंग्वेज), फोरट्रान और COBOL जैसी भाषाओं की नकल के रूप में शुरू हुई। इंटरकैल के नियम इन अन्य भाषाओं के नियमों के विपरीत प्रतीत होते हैं।<ref>{{cite book |last=Gaboury |first=Jacob |chapter=Critical Unmaking: Toward a Queer Computation |date=2018 |doi=10.4324/9781315730479-50 |editor=Jentery Sayers |title=The Routledge Companion to Media Studies and Digital Humanities |pages=483–491 |location=New York |publisher=Routledge |isbn=978-1-315-73047-9}}</ref> हालाँकि, पैरोडी का विषय हमेशा एक अन्य स्थापित प्रोग्रामिंग भाषा नहीं है। उदाहरण के लिए, शेक्सपियर प्रोग्रामिंग लैंग्वेज को शेक्सपियर के नाटकों की संरचना को खराब करने के रूप में देखा जा सकता है। भाषा ठीक है! ब्रेनफक की पैरोडी है, जहां ब्रेनफक के 8 कमांड को ओक जैसी विभिन्न ऑरंगुटैंग ध्वनियों द्वारा प्रतिस्थापित किया जाता है। ठीक है?<ref name=":1" /> | ||
Line 98: | Line 96: | ||
=== इंटरकाल === | === इंटरकाल === | ||
[[INTERCAL]], short for "Comp'''<u>i</u>'''ler La'''<u>n</u>'''guage Wi'''<u>t</u>'''h No P'''<u>r</u>'''onoun'''<u>c</u>'''e'''<u>a</u>'''b'''<u>l</u>'''e Acronym", | [[INTERCAL|इंटरकैल]], short for "Comp'''<u>i</u>'''ler La'''<u>n</u>'''guage Wi'''<u>t</u>'''h No P'''<u>r</u>'''onoun'''<u>c</u>'''e'''<u>a</u>'''b'''<u>l</u>'''e Acronym", | ||
1972 में उस समय की विभिन्न प्रोग्रामिंग भाषाओं के पहलुओं पर व्यंग्य करने के लिए पैरोडी के रूप में बनाया गया था।<ref name="woods-lyon-intercal"/> | 1972 में उस समय की विभिन्न प्रोग्रामिंग भाषाओं के पहलुओं पर व्यंग्य करने के लिए पैरोडी के रूप में बनाया गया था।<ref name="woods-lyon-intercal"/> | ||
Revision as of 00:10, 24 February 2023
एक गूढ़ प्रोग्रामिंग भाषा (कभी-कभी एसोलंग के लिए संक्षिप्त) एक प्रोग्रामिंग भाषा है जिसे कंप्यूटर प्रोग्रामिंग भाषा डिज़ाइन की सीमाओं का परीक्षण करने के लिए डिज़ाइन किया गया है, अवधारणा के प्रमाण के रूप में, सॉफ़्टवेयर कला के रूप में, किसी अन्य भाषा (विशेष रूप से कार्यात्मक प्रोग्रामिंग या प्रक्रियात्मक प्रोग्रामिंग भाषाओं) के लिए हैकिंग इंटरफ़ेस के रूप में ), या परिहास के रूप में किया जाता है। विक्षनरी: एसोटेरिक शब्द का उपयोग उन्हें उन भाषाओं से अलग करता है जो काम करने वाले डेवलपर्स सॉफ़्टवेयर लिखने के लिए उपयोग करते हैं। अधिकांश एसोलैंग्स के निर्माता उउन्हें मुख्यधारा की प्रोग्रामिंग के लिए उपयोग करने का इरादा नहीं रखते हैं, चूँकि कुछ गूढ़ विशेषताएं, जैसे कि विसुओस्पेशियल सिंटैक्स, (प्रोग्रामिंग भाषाएं),[1]ने कला में व्यावहारिक अनुप्रयोगों को प्रेरित किया है। ऐसी भाषाएँ अक्सर हैकर और शौकीनों के बीच लोकप्रिय होती हैं।[citation needed]
गूढ़ प्रोग्रामिंग भाषाओं के डिजाइनरों के लिए उपयोगिता शायद ही कभी एक लक्ष्य है; अक्सर उनका डिजाइन काफी विपरीत होता है। अक्सर उनका डिजाइन काफी विपरीत होता है। उनका सामान्य उद्देश्य ट्यूरिंग-पूर्ण, या यहां तक कि जिसके लिए कम्प्यूटेशनल वर्ग अज्ञात है, उस्को बनाए रखते हुए पारंपरिक भाषा सुविधाओं को हटाना या बदलना है।
इतिहास
एक गूढ़ प्रोग्रामिंग भाषा का सबसे पहला, और अभी भी विहित उदाहरण, इंटरकैल है,[2] जिसे 1972 में डॉन वुड्स (प्रोग्रामर) और जेम्स एम. ल्योन द्वारा डिज़ाइन किया गया,जिन्होंने कहा था कि उनका इरादा एक ऐसी प्रोग्रामिंग भाषा बनाना था जिससे वे परिचित थे [3][4] यह उस समय की स्थापित प्रोग्रामिंग भाषाओं जैसे कि फोरट्रान, कोबोल और असेंबली भाषा के तत्वों की पैरोडी करता है।
कई वर्षों के लिए, इंटरकैल को केवल इंटरकैल मैनुअल की कागजी प्रतियों द्वारा दर्शाया गया था। यूनिक्स के तहत सी (प्रोग्रामिंग भाषा) में एक कार्यान्वयन के रूप में 1990 में इसके पुनरुद्धार ने गूढ़ कंप्यूटर भाषाओं के जानबूझकर डिजाइन में रुचि की लहर को प्रेरित किया।
1993 में, वाउटर वैन ऊर्टमर्सन ने फालसे बनाया, एक छोटी स्टैक-उन्मुख प्रोग्रामिंग भाषा जिसमें सिंटैक्स को कोड को स्वाभाविक रूप से अस्पष्ट, भ्रामक और अपठनीय बनाने के लिए डिज़ाइन किया गया था। इसका संकलक आकार में केवल 1024 बाइट का है।[5] इसने अर्बन मुलर को और भी छोटी भाषा बनाने के लिए प्रेरित किया, जो अब कुख्यात ब्रेनफक है, जिसमें केवल आठ मान्यता प्राप्त वर्ण हैं। क्रिस प्रेसी की बेफुंज (जैसे फालसे, लेकिन एक द्वि-आयामी निर्देश सूचक के साथ) के साथ, ब्रेनफक अब ट्यूरिंग टैरपिट्स के कैनोनिकल उदाहरणों और अनावश्यक रूप से अस्पष्ट भाषा सुविधाओं के साथ सबसे अच्छी समर्थित गूढ़ प्रोग्रामिंग भाषाओं में से एक है। ब्रेनफक ट्यूरिंग मशीनों के पी' परिवार से संबंधित है।
सामान्य विशेषताएं
जबकि गूढ़ प्रोग्रामिंग भाषाएं कई विधियों से भिन्न होती हैं, कुछ सामान्य लक्षण होते हैं जो कई भाषाओं की विशेषता बताते हैं, जैसे पैरोडी, अतिसूक्ष्मवाद, और प्रोग्रामिंग को कठिन बनाने का लक्ष्य बनाते है। [6]
अद्वितीय डेटा प्रतिनिधित्व
पारंपरिक अनिवार्य प्रोग्रामिंग सामान्यतः डेटा को चर में संग्रहीत करने की अनुमति देती हैं, लेकिन गूढ़ भाषाएं डेटा को संग्रहीत करने और एक्सेस करने के विभिन्न विधियों का उपयोग कर सकती हैं। ब्रेनफक और मालबोल्गे जैसी भाषाएं केवल एक सूचक के माध्यम से डेटा को पढ़ने की अनुमति देती हैं, जिसे डेटा पढ़ने से पहले रुचि के स्थान पर ले जाना चाहिए। अन्य, जैसे बेफंज और शेक्सपियर प्रोग्रामिंग भाषा जैसे डेटा को डेटा को होल्ड करने के लिए एक या एक से अधिक स्टैक का उपयोग करते हैं, जिससे रिवर्स पोलिश नोटेशन के समान निष्पादन का तरीका सामने आता है। अंत में, ऐसी भाषाएं हैं जो संख्या प्रतिनिधित्व के वैकल्पिक रूपों का पता लगाती हैं: ब्रेनफक संस्करण बूलफक केवल एकल बिट्स पर संचालन की अनुमति देता है, जबकि मालबोल्गे और और इंटरकैल वेरिएंट ट्राईइंटरकल बिट्स को एक आधार 3 टर्नरी सिस्टम के साथ पूरी तरह से बदल देता है। [7]
अद्वितीय निर्देश प्रतिनिधित्व
गूढ़ भाषाएँ कार्यक्रम के निर्देशों का प्रतिनिधित्व करने के अनूठे तरीके भी प्रदर्शित करती हैं। कुछ भाषाएँ, जैसे कि बेफुंज और पीट, दो या दो से अधिक आयामों में कार्यक्रमों का प्रतिनिधित्व करती हैं, कार्यक्रम नियंत्रण कार्यक्रम के माध्यम से कई संभावित दिशाओं में घूमता है।[8][page needed] यह पारंपरिक भाषाओं से भिन्न है जिसमें एक प्रोग्राम निर्देशों का एक सेट होता है जो सामान्यतः अनुक्रम में मिलते हैं। अन्य भाषाएं असामान्य रूप में प्रकट होने के लिए निर्देशों को संशोधित करती हैं, अक्सर एक जिसे मानव द्वारा अंतर्निहित निर्देशों के वैकल्पिक अर्थ के साथ पढ़ा जा सकता है। शेक्सपियर प्रोग्रामिंग भाषा सभी कार्यक्रमों को शेक्सपियरियन नाटकों के समान बनाकर इसे प्राप्त करती है। शेफ प्रोग्रामिंग भाषा सभी कार्यक्रमों को रेसिपीज बना कर शेफ समान प्राप्त करता है।[7] शेफ विशेष रूप से उल्लेखनीय है कि कुछ ऐसे कार्यक्रम बनाए हैं, जो इस दोहरे अर्थ को उत्पन्न करने के लिए भाषा की क्षमता का प्रदर्शन करते हुए कार्यक्रम और नुस्खा दोनों के रूप में सफलतापूर्वक कार्य करते हैं।[9]
पढ़ने और लिखने में कठिनाई
कई गूढ़ प्रोग्रामिंग भाषाओं को कोड तैयार करने के लिए डिज़ाइन किया गया है जो गहराई से अस्पष्ट है, जिससे इसे पढ़ना और लिखना मुश्किल हो जाता है।[10] इसका उद्देश्य कार्यक्रम लेखकों के लिए एक दिलचस्प पहेली या चुनौती प्रदान करना हो सकता है: उदाहरण के लिए मालबोलगे को स्पष्ट रूप से चुनौतीपूर्ण होने के लिए डिज़ाइन किया गया था, और इसलिए इसमें स्व-संशोधित कोड और अत्यधिक प्रतिसंवेदी संचालन जैसी विशेषताएं हैं।[10] दूसरी ओर, कुछ गूढ़ भाषाओं को उनके अन्य डिज़ाइन विकल्पों के कारण लिखना कठिन हो जाता है। ब्रेनफक एक न्यूनतम निर्देश सेट के विचार के लिए प्रतिबद्ध है, इसलिए भले ही इसके निर्देश सिद्धांत रूप में सीधे हों, जो कोड उत्पन्न होता है वह मनुष्य के लिए पढ़ना मुश्किल होता है। इंटरकैल की कठिनाई किसी अन्य प्रोग्रामिंग भाषा में उपयोग किए जाने वाले संचालन से बचने के विकल्प के परिणामस्वरूप उत्पन्न होती है, जो अन्य भाषाओं की पैरोडी के रूप में इसकी उत्पत्ति से उत्पन्न होती है।[10]
पैरोडी और स्पूफ
गूढ़ प्रोग्रामिंग भाषाओं का एक उद्देश्य प्रोग्रामिंग के क्षेत्र में मौजूदा भाषाओं और रुझानों की पैरोडी या स्पूफ करना है।[10]उदाहरण के लिए, पहली गूढ़ भाषा इंटरकैल 1960 के दशक में APL (प्रोग्रामिंग लैंग्वेज), फोरट्रान और COBOL जैसी भाषाओं की नकल के रूप में शुरू हुई। इंटरकैल के नियम इन अन्य भाषाओं के नियमों के विपरीत प्रतीत होते हैं।[11] हालाँकि, पैरोडी का विषय हमेशा एक अन्य स्थापित प्रोग्रामिंग भाषा नहीं है। उदाहरण के लिए, शेक्सपियर प्रोग्रामिंग लैंग्वेज को शेक्सपियर के नाटकों की संरचना को खराब करने के रूप में देखा जा सकता है। भाषा ठीक है! ब्रेनफक की पैरोडी है, जहां ब्रेनफक के 8 कमांड को ओक जैसी विभिन्न ऑरंगुटैंग ध्वनियों द्वारा प्रतिस्थापित किया जाता है। ठीक है?[7]
उदाहरण
बिफंगे
Befunge निर्देश सूचक को कोड के माध्यम से कई आयामों में घूमने की अनुमति देता है। उदाहरण के लिए, निम्न प्रोग्राम हैलो, वर्ल्ड प्रदर्शित करता है! प्रोग्राम| हैलो वर्ल्ड वर्णों को स्टैक पर उल्टे क्रम में धकेल कर, फिर वर्णों को एक लूप में प्रिंट करके जो निर्देशों के माध्यम से दक्षिणावर्त प्रसारित होता है >
, :
, v
, _
, ,
, और ^
.
dlroW OlleH >:v
^,_@
Befunge के कई संस्करण हैं, सबसे आम Befunge-93 है।[citation needed]
बाइनरी लैम्ब्डा कैलकुस
बाइनरी लैम्ब्डा कैलकुलस को एल्गोरिथम सूचना सिद्धांत के दृष्टिकोण से डिज़ाइन किया गया है ताकि सबसे न्यूनतम साधनों के साथ सघनतम संभव कोड की अनुमति दी जा सके, जिसमें 29-बाइट सेल्फ इंटरप्रेटर, 21-बाइट प्राइम नंबर छलनी और 112-बाइट ब्रेनफक इंटरप्रेटर शामिल है।[12]
ब्रेनफक
Brainfuck अत्यधिक अतिसूक्ष्मवाद के लिए डिज़ाइन किया गया है और केवल आठ अलग-अलग वर्णों वाले कार्यक्रमों के साथ अस्पष्ट कोड की ओर जाता है। निम्नलिखित प्रोग्राम हैलो, वर्ल्ड को आउटपुट करता है! :[13]
++++++++++[>++++++++>++++++++++>++++<<<-]>++.>+.++++ +++
..+++.>++.<<++++++++++++++++.>.+++.------.--------. >+।
को छोड़कर सभी पात्र +-<>,.[]
उपेक्षित हैं।
चिकन
चिकन के केवल तीन टोकन हैं, चिकन शब्द, , और \n। कंपाइलर एक लाइन पर मुर्गियों की मात्रा को एक ऑपकोड निर्देश के रूप में व्याख्या करता है जिसका उपयोग वह स्टैक पर डेटा में हेरफेर करने के लिए करता है। एक साधारण चिकन प्रोग्राम में दर्जनों लाइनें हो सकती हैं, लेकिन चिकन शब्द को अनगिनत बार दोहराया जाता है।[14] चिकन का आविष्कार Torbjörn Söderstedt द्वारा किया गया था जिन्होंने एक वैज्ञानिक निबंध की पैरोडी से भाषा के लिए अपनी प्रेरणा प्राप्त की थी।[15][16][17]
शेफ
शेफ एक स्टैक-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है जिसे डेविड मॉर्गन-मार्च द्वारा बनाया गया है, जिसे प्रोग्राम को रेसिपीज विधि की तरह दिखने के लिए डिज़ाइन किया गया है।[18] प्रोग्राम में एक शीर्षक, वेरिएबल्स की एक सूची और उनके डेटा मान और स्टैक हेरफेर निर्देशों की एक सूची शामिल होती है।[19] एक मज़ाकिया डिज़ाइन सिद्धांत बताता है कि कार्यक्रम रेसिपीजों को न केवल वैध आउटपुट उत्पन्न करना चाहिए, बल्कि तैयार करना आसान और स्वादिष्ट होना चाहिए, और मॉर्गन-मार नोट करता है कि 101 अंडे और 111 कप तेल के साथ एक उदाहरण हैलो वर्ल्ड प्रोग्राम एक व्यक्ति के लिए बहुत सारे भोजन का उत्पादन करेगा। .[19][20]
फ्रैक्ट्रान
एक FRACTRAN कार्यक्रम एक प्रारंभिक सकारात्मक पूर्णांक इनपुट के साथ सकारात्मक अंशों की एक क्रमबद्ध सूची है . कार्यक्रम पूर्णांक को गुणा करके चलाया जाता है पहले अंश से जिसके लिए सूची में एक पूर्णांक है। पूर्णांक फिर द्वारा प्रतिस्थापित किया जाता है और नियम दोहराया जाता है। यदि सूची में कोई अंश गुणा करने पर पूर्णांक नहीं बनाता है , कार्यक्रम रुक जाता है। फ्रैक्ट्रान का आविष्कार गणितज्ञ जॉन हॉर्टन कॉनवे ने किया था।[21]
गोल्फस्क्रिप्ट
गोल्फस्क्रिप्ट में प्रोग्राम, कोड गोल्फ़ के लिए बनाई गई एक भाषा, जिसमें वस्तुओं की सूची शामिल है, जिनमें से प्रत्येक को स्टैक (अमूर्त डेटा प्रकार) पर धकेल दिया जाता है, जैसा कि वेरिएबल्स के अपवाद के साथ होता है, जिसमें उनके मूल्य के रूप में कोड ब्लॉक होते हैं, जिसमें मामला कोड निष्पादित किया गया है।[citation needed]
इंटरकाल
इंटरकैल, short for "Compiler Language With No Pronounceable Acronym", 1972 में उस समय की विभिन्न प्रोग्रामिंग भाषाओं के पहलुओं पर व्यंग्य करने के लिए पैरोडी के रूप में बनाया गया था।[4]
जेएसएफक
JSFuck जावास्क्रिप्ट की एक गूढ़ प्रोग्रामिंग शैली है, जहाँ केवल छह वर्णों का उपयोग करके कोड लिखा जाता है: [
, ]
, (
, )
, !
, और +
.
ब्रेनफक के विपरीत, जिसके लिए अपने स्वयं के संकलक या दुभाषिया की आवश्यकता होती है, JSFuck वैध जावास्क्रिप्ट कोड है, जिसका अर्थ है कि JSFuck प्रोग्राम किसी भी वेब ब्राउज़र या इंजन में चलाया जा सकता है जो जावास्क्रिप्ट की व्याख्या करता है।
[22][23]
लोलकोड
LOLCODE को lolcats के भाषण के समान बनाया गया है। निम्नलिखित हैलो वर्ल्ड का उदाहरण है: <पूर्व> है STDIO हो सकता है? विजिबल हाई वर्ल्ड! निजता सार्वजनिक </पूर्व>
जबकि LOLCODE का शब्दार्थ (कंप्यूटर विज्ञान) असामान्य नहीं है, इसके वाक्य-विन्यास को एक भाषाई घटना के रूप में वर्णित किया गया है, जो प्रोग्रामिंग में अनौपचारिक भाषण और इंटरनेट की ख़ास बोली के असामान्य उदाहरण का प्रतिनिधित्व करता है।[24]
मालबोलगे
Malbolge (Malebolge के नाम पर रखा गया) को सबसे कठिन और गूढ़ प्रोग्रामिंग भाषा के रूप में डिजाइन किया गया था। अन्य विशेषताओं में, कोड डिज़ाइन द्वारा स्व-संशोधित है और एक निर्देश का प्रभाव मेमोरी में उसके पते पर निर्भर करता है।[citation needed]
पीट
पीट डेविड मॉर्गन-मार द्वारा डिज़ाइन की गई एक भाषा है, जिसके प्रोग्राम बिटमैप्स हैं जो अमूर्त कला की तरह दिखते हैं।[25] निष्पादन एक सूचक द्वारा निर्देशित होता है जो छवि के चारों ओर घूमता है, एक निरंतर रंगीन क्षेत्र से अगले तक। जब सूचक किसी क्षेत्र से बाहर निकलता है तो प्रक्रियाएं की जाती हैं।
20 रंग हैं जिनके लिए व्यवहार निर्दिष्ट किया गया है: 18 रंगीन रंग, जिन्हें 6-चरणीय रंग चक्र और 3-चरण चमक चक्र द्वारा क्रमबद्ध किया जाता है; और काले और सफेद, जो आदेशित नहीं हैं। एक रंगीन रंग से बाहर निकलने और दूसरे में प्रवेश करने पर, निष्पादित प्रक्रिया रंग और चमक में परिवर्तन के चरणों की संख्या से निर्धारित होती है। काले रंग में प्रवेश नहीं किया जा सकता; जब सूचक एक काले क्षेत्र में प्रवेश करने का प्रयास करता है, तो इसके बजाय अगले ब्लॉक को चुनने के नियम बदल जाते हैं। यदि सभी संभावित नियमों का प्रयास किया जाता है, तो कार्यक्रम समाप्त हो जाता है। छवि की सीमाओं के बाहर के क्षेत्रों को भी काला माना जाता है। व्हाइट ऑपरेशन नहीं करता है, लेकिन पॉइंटर को से गुजरने देता है। निर्दिष्ट 20 के अलावा अन्य रंगों का व्यवहार संकलक या दुभाषिया पर छोड़ दिया जाता है।[25][non-primary source needed] वेरिएबल्स को मेमोरी में सिंगल स्टैक (अमूर्त डेटा प्रकार) में हस्ताक्षरित पूर्णांक के रूप में संग्रहीत किया जाता है। अधिकांश निर्दिष्ट प्रक्रियाएं उस स्टैक पर संचालन से निपटती हैं, जबकि अन्य इनपुट/आउटपुट और उन नियमों से निपटती हैं जिनके द्वारा संकलन सूचक चलता है।[26] पीट का नाम डच चित्रकार पीट मोंड्रियन के नाम पर रखा गया था।[27] मूल इरादा नाम, मोंड्रियन, पहले से ही मोंड्रियन (सॉफ्टवेयर) | एक ओपन-सोर्स सांख्यिकीय डेटा-विज़ुअलाइज़ेशन सिस्टम द्वारा लिया गया था।[25]
रॉकस्टार
रॉकस्टार एक कंप्यूटर प्रोग्रामिंग लैंग्वेज है जिसे प्रोग्राम बनाने के लिए डिज़ाइन किया गया है जो कि डायलन बीट्टी द्वारा बनाए गए हेयर मेटल पावर गाथागीत भी हैं।[28][29][30]
शेक्सपियर
शेक्सपियर (प्रोग्रामिंग भाषा) को कार्यक्रमों को शेक्सपियर के नाटकों की तरह दिखने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, निम्न कथन कार्यक्रम में एक बिंदु की घोषणा करता है जिसे गोटो-प्रकार के बयान के माध्यम से पहुँचा जा सकता है:[citation needed] हेमलेट#अधिनियम I|अधिनियम I: हैमलेट का अपमान और चापलूसी।
अनलंबा
अनलैम्ब्डा एसकेआई कैलकुस पर आधारित एक न्यूनतम कार्यात्मक प्रोग्रामिंग भाषा है, लेकिन प्रथम श्रेणी की निरंतरता और अनिवार्य I/O के साथ संयुक्त है (इनपुट के साथ सामान्यतः निरंतरता के उपयोग की आवश्यकता होती है)।[citation needed]
व्हाइटस्पेस
व्हॉट्सएप (प्रोग्रामिंग लैंग्वेज) केवल व्हाइटस्पेस कैरेक्टर्स (स्पेस, टैब और रिटर्न) का उपयोग करता है, अन्य सभी कैरेक्टर्स को अनदेखा करता है, इसलिए इसका उपयोग टिप्पणियों के लिए किया जा सकता है। यह कई पारंपरिक भाषाओं का उल्टा है, जो अलग-अलग व्हाट्सएप वर्णों के बीच अंतर नहीं करती हैं, टैब और स्पेस को समान मानती हैं। यह व्हॉट्सएप प्रोग्राम को सी जैसी भाषाओं में प्रोग्राम के सोर्स कोड में छिपाने की अनुमति भी देता है।[citation needed]
सांस्कृतिक संदर्भ
ज्योफ कॉक्स द्वारा एसोलांग्स के सांस्कृतिक संदर्भ का अध्ययन किया गया है, जो लिखते हैं कि एसोलांग्स सांस्कृतिक अभिव्यक्ति और इनकार की ओर आदेश और नियंत्रण से ध्यान हटाते हैं,[31] एसोलांग्स को कोड आर्ट और कोड पोएट्री के समान देखना, जैसे कि मेज़ ब्रीज़ की मेज़ेंजेल। डैनियल टेमकिन ने ब्रेनफक का वर्णन मानव अभिव्यक्ति और असेंबली कोड के बीच की सीमा को कम करने से इंकार कर दिया और इस तरह हमें तर्क की हास्यास्पद यात्रा पर ले गया,[32] मानव सोच और कंप्यूटर तर्क के बीच निहित संघर्ष को उजागर करना। वह प्रवाह आंदोलन जैसे इवेंट स्कोर के प्रदर्शन के लिए एक एसोलंग के भीतर प्रोग्रामिंग को जोड़ता है, जहां कोड में तर्क के नियमों को खेलने से भाषा का दृष्टिकोण स्पष्ट हो जाता है।[33]
संदर्भ
- ↑ McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). "Visualisation of Live Code". In Electronic Visualisation and the Arts, London: 2010.
- ↑ Matthew Fuller, Software Studies, MIT Press, 2008
- ↑ Eric S. Raymond (1996). The New Hacker's Dictionary. MIT Press. p. 258. ISBN 978-0-262-68092-9.
- ↑ 4.0 4.1 Woods, Donald R.; Lyon, James M. (1973), The INTERCAL Programming Language Reference Manual, Muppetlabs.com, archived from the original on 20 February 2009, retrieved 24 April 2009
- ↑ "Interview with Wouter van Oortmerssen". Esoteric.codes. 1 July 2015. Archived from the original on 8 December 2015. Retrieved 1 December 2015.
- ↑ Fuller, Matthew (2008). Software studies: a lexicon. MIT Press. ISBN 978-0-262-06274-9. OCLC 1156851190.
- ↑ 7.0 7.1 7.2 Morr, Sebastian. "Esoteric Programming Languages." (2015).
- ↑ Cox 2013.
- ↑ Mike (31 March 2013). "Baking a Hello World Cake". Products of Mike's Mind (in English). Retrieved 1 June 2022.
- ↑ 10.0 10.1 10.2 10.3 Mateas, M. and Montfort, N. A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics. In Digital Arts and Culture: Digital Experience: Design, Aesthetics, Practice (DAC 2005), Copenhagen, Denmark, 2005.
- ↑ Gaboury, Jacob (2018). "Critical Unmaking: Toward a Queer Computation". In Jentery Sayers (ed.). The Routledge Companion to Media Studies and Digital Humanities. New York: Routledge. pp. 483–491. doi:10.4324/9781315730479-50. ISBN 978-1-315-73047-9.
- ↑ John Tromp. "Most functional". The International Obfuscated C Code Contest. Archived from the original on 19 January 2013.
- ↑ "El Brainfuck". copy.sh. Retrieved 30 November 2022.
- ↑ ""Hello world" in Esoteric Programming Languages? (Esolangs)". DEV Community 👩💻👨💻 (in English). Retrieved 4 December 2022.
- ↑ "Weirdest Programming Languages | Programming". www.omnesgroup.com (in English). 8 August 2018. Retrieved 4 December 2022.
- ↑ "8 Goofy Programming Languages". 27 April 2022.
- ↑ Hongkiat.com (8 September 2021). "10 Most Bizarre Programming Languages, Vol. 2". Hongkiat (in English). Retrieved 4 December 2022.
- ↑ Cozens, Simon (2005). Advanced Perl programming. O'Reilly Media. p. 269. ISBN 978-0-596-00456-9.
A final Acme curiosity, and one of my favourites, is Acme::Chef, an implementation of David Morgan-Mar's Chef programming language. In Chef, programs are expressed in the form of recipes: ...
- ↑ 19.0 19.1 Morgan-Mar, David (24 March 2011). "बावर्ची". DM's Esoteric Programming Languages. Self-published. Retrieved 28 June 2014.
- ↑ Morgan-Mar, David (28 June 2014). "Chef Sample Program: Hello World Souffle". DM's Esoteric Programming Languages. Self-published. Retrieved 28 June 2014.
- ↑ Kneusel, Ronald (2022). Strange Code: Esoteric Languages That Make Programming Fun Again. No Starch Press. p. 217. ISBN 978-1718502406.
- ↑ Bailey, Jane (29 February 2016). "Bidding on Security". The Daily WTF (in English). Retrieved 2 March 2020.
- ↑ "Exploring JSF*ck". alligator.io (in English). Retrieved 2 March 2020.
- ↑ Zabenkov, A.A.; Morel Morel, D.A. (2014). "Esoteric programming languages as a state-of-the-art semiotic trend". Experientia Est Optima Magistra: Collected Arts. Belgorod State University. 3: 170.
- ↑ 25.0 25.1 25.2 Morgan-Mar, David (25 January 2008). "Piet programming language". Retrieved 18 May 2013.
- ↑ Kneusel, Ronald (2022). Strange Code: Esoteric Languages That Make Programming Fun Again. No Starch Press. pp. 246–247. ISBN 978-1718502406.
- ↑ Cox 2013, p. 6
- ↑ "rockstar: home". codewithrockstar.com.
- ↑ Lewrypublished, Fraser (1 August 2018). "Meet the boffin behind a computer programming language based on power ballads". loudersound (in English).
- ↑ Doctorow, Cory (25 July 2018). "Rockstar: a programming language whose code takes the form of power ballads". Boing Boing.
- ↑ Cox 2013, p. 5
- ↑ Temkin, Daniel (15 January 2014). "Glitch && Human/Computer Interaction". NOOART: The Journal of Objectless Art (1).
- ↑ Temkin, Daniel. "brainfuck". Media-N Journal (Spring 2013). Retrieved 6 May 2014.
ग्रन्थसूची
- Paloque-Bergès, Camille (2009). "Langages ésotériques". Poétique des codes sur le réseau informatique. Archives contemporaines. ISBN 978-2-914610-70-4.
- Cox, Geoff (2013). Speaking Code: Coding as Aesthetic and Political Expression. MIT Press. ISBN 978-0-262-01836-4.
- Kneusel, Ronald (2022). Strange Code: Esoteric Languages That Make Programming Fun Again. No Starch Press. ISBN 978-1718502406.
बाहरी संबंध