मालबोल्गे: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|1998 esoteric programming language}} {{about|the programming language|the eighth circle of hell in Dante's Inferno|Malebolge}} {{Infobox programming langu...")
 
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|1998 esoteric programming language}}
{{Short description|1998 esoteric programming language}}
{{about|the programming language|the eighth circle of hell in Dante's Inferno|Malebolge}}
''यह लेख प्रोग्रामिंग भाषा के बारे में है। दांते के इन्फर्नो में नरक के आठवें चक्र के लिए, मेलबोलगे देखें।''{{Infobox programming language
 
| title = मालबोलगे
{{Infobox programming language
| screenshot = मालबोल्गे इको प्रोग्राम.पीएनजी
| title = Malbolge
| screenshot caption = मालबोलगे में एक प्रतिध्वनि कार्यक्रम
| screenshot = Malbolge echo program.png
| paradigm = गुप्त, अनिवार्य, अदिष्ट, मूल्य-स्तर
| screenshot caption = An echo program in Malbolge
| designer = बेन ओल्मस्टेड<ref name=esolangs>{{Cite web
| paradigm = Esoteric, imperative, scalar, value-level
| designer = Ben Olmstead<ref name=esolangs>{{Cite web
|url=https://esolangs.org/wiki/Malbolge
|url=https://esolangs.org/wiki/Malbolge
|title=Malbolge - Esolang
|title=Malbolge - Esolang
|access-date=2022-08-27}}</ref>
|access-date=2022-08-27}}</ref>
| developer = Ben Olmstead<ref name=esolangs/>
| developer = बेन ओल्मस्टेड<ref name=esolangs/>
| discontinued = yes
| discontinued = हाँ
| released = 1998
| released = 1998
| influenced by = [[Brainfuck]],  [[INTERCAL]] (Tri-INTERCAL), [[Befunge]]
| influenced by = [[ब्रेनफक]],  [[इंटरकैल]] (त्रि-इंटरकैल), [[बेफ़ंगे]]
| influenced = Dis, Malbolge Unshackled
| influenced = है, मालबोल्गे अनशेकल्ड
| File extensions = .mal, .mb
| File extensions = .mal, .mb
| typing = Untyped
| typing = अनटाइप
}}
}}
मालबोलगे ({{IPAc-en|m|æ|l|ˈ|b|oʊ|l|dʒ}}) 1998 में बेन ओल्मस्टेड द्वारा आविष्कार की गई एक सार्वजनिक डोमेन [[गूढ़ प्रोग्रामिंग भाषा]] है, जिसका नाम [[दांटे अलीघीरी]] के [[नरक (दांते)]]डांटे), [[मालेबॉल्ज]] में नरक के आठवें चक्र के नाम पर रखा गया है। यह विशेष रूप से उपयोग करने के लिए लगभग असंभव होने के लिए डिज़ाइन किया गया था, एक प्रति-सहज ज्ञान युक्त 'पागल ऑपरेशन', आधार-तीन अंकगणितीय और आत्म-परिवर्तनकारी कोड के माध्यम से।<ref name=":0" />यह पहले की चुनौतीपूर्ण गूढ़ भाषाओं (जैसे [[ब्रेनफक]] और बेफंज) की कठिनाई पर बनाता है, लेकिन कंप्यूटर विज्ञान और [[कूटलेखन]] के इतिहास के उलझे हुए इतिहास पर खेलते हुए, इस पहलू को चरम पर ले जाता है। इस डिजाइन के बावजूद उपयोगी मालबोलगे प्रोग्राम लिखना संभव है।
'''''मालबोलगे ({{IPAc-en|m|æ|l|ˈ|b|oʊ|l|dʒ}})''''' 1998 में बेन ओल्मस्टेड द्वारा आविष्कार की गई एक सार्वजनिक डोमेन [[गूढ़ प्रोग्रामिंग भाषा|गोपनीय प्रोग्रामिंग भाषा]] है, जिसका नाम डांटे के इन्फर्नो, द मालेबोल में नरक के आठवें चक्र के नाम पर रखा गया है। यह विशेष रूप से प्रति-सहज ज्ञान युक्त 'दुर्बल संचालन', आधार-तीन अंकगणितीय और स्व-परिवर्तनकारी कोड के माध्यम से उपयोग करने के लिए लगभग असंभव होने के लिए डिज़ाइन किया गया था।।<ref name=":0" /> यह पहले की चुनौतीपूर्ण गोपनीय भाषाओं (जैसे [[ब्रेनफक]] और बेफंज) की कठिनाई पर आधारित है, लेकिन कंप्यूटर विज्ञान और [[कूटलेखन]] (एन्क्रिप्शन) के जटिल इतिहास पर खेलते हुए, इस स्वरूप को अधिकतम पर ले जाता है। इस डिजाइन के होते हुए भी उपयोगी मालबोलगे प्रोग्राम लिखना संभव है।


== Malbolge में प्रोग्रामिंग ==
== मालबोल्गे में प्रोग्रामिंग ==
मालबोल्गे के आने पर इसे समझना बहुत मुश्किल था। पहले मालबोल्गे कार्यक्रम को प्रदर्शित होने में दो साल लग गए। लेखक ने स्वयं कभी भी मलबोलगे कार्यक्रम नहीं लिखा है।<ref name=":0" />पहला प्रोग्राम किसी इंसान ने नहीं लिखा था; यह एंड्रयू कुक द्वारा डिज़ाइन किए गए एक [[बीम खोज]] एल्गोरिथम द्वारा उत्पन्न किया गया था और [[लिस्प प्रोग्रामिंग भाषा]] में लागू किया गया था।<ref>{{cite web
मालबोल्गे के आने पर इसे समझना बहुत कठिन था। पहले मालबोल्गे प्रोग्राम को प्रदर्शित होने में दो साल लग गए। लेखक ने स्वयं कभी भी मलबोलगे प्रोग्राम नहीं लिखा है।<ref name=":0" /> हला प्रोग्राम किसी इंसान द्वारा नहीं लिखा गया था; यह एंड्रयू कुक द्वारा डिज़ाइन किए गए और सूची प्रक्रमण में प्रयुक्त किए गए एक बीम जाँच एल्गोरिथम द्वारा उत्पन्न किया गया था।<ref>{{cite web
  |url=https://www.acooke.org/malbolge.html
  |url=https://www.acooke.org/malbolge.html
  |url-access=
  |url-access=
Line 34: Line 32:
  |archive-date=2019-12-06
  |archive-date=2019-12-06
  }}</ref>
  }}</ref>
बाद में, लू शेफ़र ने मालबोलगे का एक [[क्रिप्ट विश्लेषण]] पोस्ट किया और इसके इनपुट को इसके आउटपुट में कॉपी करने के लिए एक प्रोग्राम प्रदान किया।<ref name="lscheffer"/>मूल साइट के काम करना बंद करने के बाद उन्होंने मूल दुभाषिया और विनिर्देश को भी सहेजा, और मालबोल्गे में कार्यक्रम लिखने की एक सामान्य रणनीति के साथ-साथ इसकी [[ट्यूरिंग पूर्णता]] पर कुछ विचार पेश किए।<ref>{{Cite web
 
बाद में, लू शेफ़र ने मालबोलगे का [[क्रिप्ट विश्लेषण]] प्रविष्ट किया और इसके इनपुट को इसके आउटपुट में प्रतिलिपि करने के लिए प्रोग्राम प्रदान किया।<ref name="lscheffer" /> मूल साइट के काम करना बंद करने के बाद उन्होंने मूल दुभाषिया और विनिर्देश को भी संग्रहित किया, और मालबोल्गे में प्रोग्राम लिखने की एक सामान्य योजना के साथ-साथ इसकी [[ट्यूरिंग पूर्णता]] पर कुछ विचार प्रस्तुत किए।<ref>{{Cite web
| title = Malbolge - Programming language
| title = Malbolge - Programming language
| url = http://progopedia.com/language/malbolge/
| url = http://progopedia.com/language/malbolge/
Line 42: Line 41:
| publisher = Progopedia
| publisher = Progopedia
| accessdate = 2017-06-09}}</ref>
| accessdate = 2017-06-09}}</ref>
ओल्म्सटेड का मानना ​​था कि मालबोलगे एक रैखिक परिबद्ध ऑटोमेटन है। इस बारे में एक चर्चा है कि क्या कोई मालबोल्गे में समझदार पाशों को कार्यान्वित कर सकता है- पहले गैर-समाप्ति वाले को पेश किए जाने से कई सालों पहले। कंप्यूटर विज्ञान में बीयर की सही 99 बोतलें#संदर्भ, जो गैर-तुच्छ छोरों और स्थितियों से संबंधित है, की घोषणा सात वर्षों तक नहीं की गई थी; पहला सही 2005 में हिसाशी इजावा द्वारा किया गया था।<ref>{{cite web
 
ओल्म्सटेड का मानना ​​था कि मालबोलगे एक रैखिक परिबद्ध स्वचालन है। इस बारे में एक चर्चा है कि क्या कोई मालबोल्गे में उपयुक्त लूप को कार्यान्वित कर सकता है- पहले गैर-गुण वाले को प्रस्तुत किए जाने से पहले कई वर्ष लग गए थे। कंप्यूटर विज्ञान में बीयर की सही 99 बोतलें संदर्भ, जो गैर-साधारण सिरों और स्थितियों से संबंधित है, जिसकी घोषणा सात वर्षों तक नहीं की गई थी; पहला सही 2005 में हिसाशी इजावा द्वारा किया गया था।<ref>{{cite web
| url=http://www.99-bottles-of-beer.net/language-malbolge-995.html
| url=http://www.99-bottles-of-beer.net/language-malbolge-995.html
| title=Language Malbolge
| title=Language Malbolge
Line 50: Line 50:
| archive-date=2020-05-14
| archive-date=2020-05-14
| url-status=dead
| url-status=dead
| accessdate=2020-11-19}}</ref> हिसाशी इजावा एट अल। सॉफ्टवेयर सुरक्षा के लिए भ्रम पैदा करने के उद्देश्य से मालबोलगे में प्रोग्रामिंग के लिए एक गाइड भी प्रस्तावित किया।<ref name=":1" />
| accessdate=2020-11-19}}</ref> हिसाशी इजावा एट अल सॉफ्टवेयर सुरक्षा के लिए भ्रम उत्पन्न करने के उद्देश्य से मालबोलगे में प्रोग्रामिंग के लिए एक गाइड का भी प्रस्ताव रखा।<ref name=":1" />


2020 में, [[GitHub]] उपयोगकर्ता kspalaiologos ने Malbolge Unshackled में एक वर्किंग [[लिस्प (प्रोग्रामिंग भाषा)]] इंटरप्रेटर (कंप्यूटिंग) बनाया।<ref>{{Citation|last=Palaiologos|title=kspalaiologos/malbolge-lisp|date=2021-03-04|url=https://github.com/kspalaiologos/malbolge-lisp|access-date=2021-03-23}}</ref>
2020 में, [[GitHub|गिटहब]] उपयोगकर्ता केस्पलाईोलोजोस ने मालबोल्गे अनशेकल्ड (बंधनमुक्त) में एक कार्यकारी [[लिस्प (प्रोग्रामिंग भाषा)|सूची प्रक्रमण (प्रोग्रामिंग भाषा)]] इंटरप्रेटर (कंप्यूटिंग) बनाया।<ref>{{Citation|last=Palaiologos|title=kspalaiologos/malbolge-lisp|date=2021-03-04|url=https://github.com/kspalaiologos/malbolge-lisp|access-date=2021-03-23}}</ref>




== उदाहरण कार्यक्रम ==
 
== उदाहरण प्रोग्राम ==


=== हैलो, विश्व! ===
=== हैलो, विश्व! ===
यह प्रोग्राम हैलो वर्ल्ड प्रोग्राम प्रदर्शित करता है|हैलो वर्ल्ड। .<ref>{{Citation|last=Palaiologos|title=kspalaiologos/hello.mb|date=2021-03-04|url=https://gist.github.com/kspalaiologos/a1fe6913aaff8edea515b4af385368fe|access-date=2021-03-23}}</ref>
यह प्रोग्राम "हैलो, वर्ल्ड" प्रदर्शित करता है।<ref>{{Citation|last=Palaiologos|title=kspalaiologos/hello.mb|date=2021-03-04|url=https://gist.github.com/kspalaiologos/a1fe6913aaff8edea515b4af385368fe|access-date=2021-03-23}}</ref>
<पूर्व>
(=<`#9]~6ZY327Uv4-QsqpMn&+Ij"'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:`H%c#DD2^WV>gY;dts76qKJImZkj
(=<`#9]~6ZY327Uv4-QsqpMn&+Ij 'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:`H%c#DD2^WV>gY;dts76qKJImZkj
</पूर्व>


===<code>echo</code> कार्यक्रम ===
===<code>echo</code> प्रोग्राम ===
यह प्रोग्राम एक उपयोगकर्ता से एक स्ट्रिंग पढ़ता है और उस स्ट्रिंग को यूनिक्स के समान प्रिंट करता है <code>[[echo (command)|echo]]</code>.<ref>{{Cite web |last=Lutter |first=Matthias |title=Malbolge cat |url=https://lutter.cc/malbolge/cat.html |url-status=live |access-date=2022-08-28 |website=lutter.cc}}</ref><पूर्व>
यह प्रोग्राम एक उपयोगकर्ता से एक स्ट्रिंग पढ़ता है और उस स्ट्रिंग को यूनिक्स <code>[[echo (command)|echo]]</code>के समान उस स्ट्रिंग को प्रिंट करता है।<ref>{{Cite web |last=Lutter |first=Matthias |title=Malbolge cat |url=https://lutter.cc/malbolge/cat.html |url-status=live |access-date=2022-08-28 |website=lutter.cc}}</ref>
(=BA#9 =<;:3y7x54-21q/p-,+*) !h%B0/.
(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~ पी <
~P<
<:(8&
<:(8&
66# !~}|{zyxwvu
66#"!~}|{zyxwvu
जीजे%
gJ%
</पूर्व>


== डिजाइन ==
== डिजाइन ==
Malbolge एक टर्नरी अंक प्रणाली [[आभासी मशीन]], Malbolge दुभाषिया (कंप्यूटिंग) के लिए मशीनी भाषा है।
मालबोल्गे एक त्रिगुट अंक प्रणाली [[आभासी मशीन]], मालबोल्गे दुभाषिया (कंप्यूटिंग) के लिए मशीनी भाषा है।


मानक दुभाषिया और आधिकारिक विनिर्देश पूरी तरह मेल नहीं खाते हैं।<ref>{{Cite web
मानक दुभाषिया और आधिकारिक विनिर्देश पूरी तरह समरूप नहीं हैं।<ref>{{Cite web
| title = Malbolge
| title = Malbolge
| url = http://www2.latech.edu/~acm/helloworld/malbolge.html
| url = http://www2.latech.edu/~acm/helloworld/malbolge.html
Line 82: Line 80:
| date = 2000-12-01
| date = 2000-12-01
| website = [[Louisiana Tech University]]
| website = [[Louisiana Tech University]]
| accessdate = 2017-06-09}}</ref> एक अंतर यह है कि कंपाइलर 33–126 रेंज के बाहर डेटा के साथ निष्पादन को रोक देता है। हालांकि शुरुआत में इसे संकलक में एक बग माना गया था, बेन ओल्म्सटेड ने कहा कि इसका इरादा था और वास्तव में विनिर्देशन में एक बग था।<ref name=":0" /><!-- * Before correcting it, make sure it's actually technically incorrect and not just unfamiliar. -->
| accessdate = 2017-06-09}}</ref> एक अंतर यह है कि कंपाइलर 33–126 सीमा के बाहर डेटा के साथ कार्यान्वयन को रोक देता है। हालांकि प्रारंभ में इसे संकलक में एक बग (त्रुटि) माना गया था, बेन ओल्म्सटेड ने कहा कि इसका उद्देश्य था और वास्तव में "विनिर्देश में एक बग" था।<ref name=":0" />
 




=== रजिस्टर ===
=== रजिस्टर ===
Malbolge में तीन [[प्रोसेसर रजिस्टर]] हैं, ''a'', ''c'', और ''d''। जब कोई प्रोग्राम शुरू होता है, तो तीनों रजिस्टरों का मान शून्य होता है।
मालबोल्गे में तीन [[प्रोसेसर रजिस्टर]] ''a'', ''c'', और ''d हैं'' । जब कोई प्रोग्राम प्रारंभ होता है, तो तीनों रजिस्टरों का मान शून्य होता है।


''a'' का अर्थ 'accumulator' है, जो मेमोरी पर सभी राइट ऑपरेशंस द्वारा लिखे गए मान पर सेट होता है और इनपुट/आउटपुट|मानक I/O के लिए उपयोग किया जाता है। 'सी', कोड पॉइंटर, विशेष है: यह [[कार्यक्रम गणक]] है।<ref>{{Cite web
'''''a''''' का अर्थ 'एक्युमुलेटर' (संचायक) है, जो मेमोरी पर सभी लिखित संचालन द्वारा लिखे गए मूल्य पर व्यवस्थित और मानक इनपुट/आउटपुट के लिए उपयोग किया जाता है। ''''c'''<nowiki/>', कोड पॉइंटर, विशेष है: यह वर्तमान निर्देश की ओर संकेत करता है।<ref>{{Cite web
| title = Malbolge Specification
| title = Malbolge Specification
| url = http://www.lscheffer.com/malbolge_spec.html
| url = http://www.lscheffer.com/malbolge_spec.html
Line 95: Line 94:
| date = 1998
| date = 1998
| website = www.lscheffer.com
| website = www.lscheffer.com
| accessdate = 2017-06-09}}</ref> ''डी'' डेटा सूचक है। यह प्रत्येक निर्देश के बाद स्वचालित रूप से बढ़ जाता है, लेकिन यह जिस स्थान को इंगित करता है उसका उपयोग डेटा हेरफेर कमांड के लिए किया जाता है।
| accessdate = 2017-06-09}}</ref> '''d''' डेटा पॉइंटर है। यह प्रत्येक निर्देश के बाद स्वचालित रूप से बढ़ जाता है, लेकिन यह जिस स्थान को इंगित करता है उसका उपयोग डेटा कुशलतापूर्वक प्रयोग कमांड के लिए किया जाता है।


=== सूचक संकेतन ===
=== पॉइन्टर संकेतन ===
''डी'' मेमोरी एड्रेस को होल्ड कर सकता है; ''[डी]'' एड्रेसिंग मोड है#अप्रत्यक्ष रूप से रजिस्टर करें; उस पते पर संग्रहीत मूल्य। ''[सी]'' समान है।
'''d''' एक मेमोरी एड्रैस रख सकता है; '''[d]''' अप्रत्यक्ष रूप से रजिस्टर है; उस एड्रैस पर संग्रहीत मान '''[c]''' समान है।


=== मेमोरी ===
=== मेमोरी ===
वर्चुअल मशीन में 59,049 (3<sup>10</sup>) [[रैंडम एक्सेस मेमोरी]] लोकेशन, जिनमें से प्रत्येक में दस-ट्रिट टर्नरी अंक प्रणाली हो सकती है। प्रत्येक स्मृति स्थान का पता 0 से 59048 तक होता है और 0 से 59048 तक का मान होल्ड कर सकता है। इस सीमा से आगे बढ़ने पर वापस शून्य हो जाता है।
वर्चुअल मशीन में 59,049 (3<sup>10</sup>) [[रैंडम एक्सेस मेमोरी]] लोकेशन, जिनमें से प्रत्येक में दस-ट्रिट त्रिगुट अंक प्रणाली हो सकती है। प्रत्येक मेमोरी स्थान का एड्रैस 0 से 59048 तक होता है और 0 से 59048 तक का मान रख सकता है। इस सीमा से आगे बढ़ने पर वापस शून्य हो जाता है।


भाषा [[वॉन न्यूमैन वास्तुकला]] का उपयोग करती है। यह x86 आर्किटेक्चर जैसे हार्डवेयर के काम करने के तरीके से प्रभावित था।<ref name=":0" />
भाषा डेटा और निर्देशों दोनों के लिए एक ही मेमोरी स्थान का उपयोग करती है। यह x86 संरचना जैसे हार्डवेयर के काम करने के तरीके से प्रभावित था।<ref name=":0" />


Malbolge प्रोग्राम शुरू होने से पहले, मेमोरी का पहला भाग प्रोग्राम से भर जाता है। प्रोग्राम में सभी व्हाइटस्पेस को अनदेखा किया जाता है और प्रोग्रामिंग को और अधिक कठिन बनाने के लिए, प्रोग्राम में बाकी सब कुछ नीचे दिए गए निर्देशों में से एक के रूप में शुरू होना चाहिए।
मालबोल्गे प्रोग्राम प्रारंभ होने से पहले, मेमोरी का पहला भाग प्रोग्राम से संग्रहित हो जाता है। प्रोग्राम में सभी रिक्त स्थान को उपेक्षित किया जाता है और प्रोग्रामिंग को और अधिक कठिन बनाने के लिए, प्रोग्राम में में सब कुछ नीचे दिए गए निर्देशों से बाहर होना चाहिए।


पिछले दो पतों ('[m] = crz [m - 2], [m - 1]') पर पागल ऑपरेशन (नीचे देखें) का उपयोग करके शेष मेमोरी भर दी गई है। इस तरह से भरी हुई मेमोरी हर बारह पतों को दोहराएगी (व्यक्तिगत टर्नरी अंक हर तीन या चार पतों को दोहराएगा, इसलिए टर्नरी अंकों का एक समूह हर बारह को दोहराने की गारंटी देता है)।
पिछले दो एड्रैस ('[m] = crz [m - 2], [m - 1]') पर दुर्बल संचालन (नीचे देखें) का उपयोग करके शेष मेमोरी संग्रहित कर दी गई है। इस तरह से भंडारण मेमोरी प्रत्येक बारह एड्रैस को पुनरावृत करेगी (व्यक्तिगत त्रिगुट अंक प्रत्येक तीन या चार एड्रैस को पुनरावृत करेगी, इसलिए त्रिगुट अंकों का एक समूह प्रत्येक बारह को पुनरावृत की प्रत्याभूति देता है)।


2007 में, अर्जन जोहान्सन ने मालबोल्गे अनशेकल्ड बनाया, माल्बोल्गे का एक संस्करण जिसमें मनमाना स्मृति सीमा नहीं है। जितना संभव हो मालबोल्गे की भावना में रखते हुए एक ट्यूरिंग-पूर्ण भाषा बनाने की आशा थी। कोई अन्य नियम नहीं बदले गए हैं, और सभी Malbolge प्रोग्राम जो स्मृति सीमा तक नहीं पहुँचते हैं वे पूरी तरह कार्यात्मक हैं।<ref>{{Cite web
2007 में, अर्जन जोहान्सन ने मालबोल्गे अस्पष्ट बनाया, माल्बोल्गे का एक संस्करण जिसमें व्यवस्थित मेमोरी सीमा नहीं है। जितना संभव हो मालबोल्गे की तत्परता में रखते हुए एक ट्यूरिंग-पूर्ण भाषा बनाने की उपेक्षा थी। कोई अन्य नियम नहीं परिवर्तित कर दिए गए हैं, और सभी मालबोल्गे प्रोग्राम जो मेमोरी सीमा तक नहीं पहुँचते हैं वे पूरी तरह कार्यात्मक हैं।<ref>{{Cite web
| title = An interpreter for the Malbolge Unshackled dialect
| title = An interpreter for the Malbolge Unshackled dialect
| url = http://oerjan.nvg.org/esoteric/Unshackled.hs
| url = http://oerjan.nvg.org/esoteric/Unshackled.hs
Line 121: Line 120:


=== निर्देश ===
=== निर्देश ===
मालबोलगे के पास आठ [[opcode]] हैं। Malbolge यह पता लगाता है कि [c] का मान लेकर, उसमें c का मान जोड़कर और शेष को 94 से विभाजित करने पर किस निर्देश को निष्पादित करना है। अंतिम परिणाम दुभाषिया को बताता है कि क्या करना है:
मालबोलगे के आठ निर्देश हैं। मालबोलगे ने यह पता लगाता है कि '''[c]''' का मान लेकर, उसमें '''c''' का मान जोड़कर और शेष को 94 से विभाजित करने पर किस निर्देश को निष्पादित करना है। अंतिम परिणाम दुभाषिया (इंटरप्रेटर) को बताता है कि क्या करना है:


{| style="margin:auto;" class="wikitable"
{| style="margin:auto;" class="wikitable"
|+ Instructions
|+ निर्देश
|-
|-
! Value of <br />{{mono|([c]&nbsp;+&nbsp;c)&nbsp;%&nbsp;94}} !! Instruction<br />represented !! Explanation
! <br />{{mono|([c]&nbsp;+&nbsp;c)&nbsp;%&nbsp;94}} का मान
! निर्देश का प्रतिनिधित्व !! स्पष्टीकरण
|-
|-
! 4
! 4
| {{mono|jmp&nbsp;[d]}} || style="text-align:left;"| Copies the value at '''[d]''' to '''c'''. Note that '''c''' will still be incremented after execution of this instruction, so the next instruction to be executed will be the one at '''[d] + 1 (modulo 59049)'''.
| {{mono|jmp&nbsp;[d]}} || style="text-align:left;"| मान को '''[d]''' से '''c''' पर कॉपी करता है। ध्यान दें कि इस निर्देश के निष्पादन के बाद भी '''c''' में वृद्धि होगी, इसलिए निष्पादित किया जाने वाला अगला निर्देश '''[d] + 1 (सापेक्ष 59049)''' पर होगा।
|-
|-
! 5
! 5
| {{mono|out&nbsp;a}} || style="text-align:left;"| Prints the value of '''a''', as an [[ASCII]] character, to the screen.
| {{mono|out&nbsp;a}} || style="text-align:left;"| '''a''' के मान को सूचना आदान-प्रदान के लिए अमेरिकी मानक कोड (एएससीआईआई) वर्ण के रूप में स्क्रीन पर प्रिंट करता है।
|-
|-
! 23
! 23
| {{mono|in&nbsp;a}} || style="text-align:left;"| Inputs a character, as an ASCII code, into '''a'''. Newlines or line feeds are both code ''10''. An end-of-file condition is code ''59048''.
| {{mono|in&nbsp;a}} || style="text-align:left;"| एएससीआईआई कोड के रूप में एक वर्ण को '''a''' में इनपुट करता है। न्यूलाइन्स या लाइन फीड्स दोनों कोड 10 हैं। फ़ाइल के अंत की स्थिति कोड '''59048''' है।
|-
|-
! 39
! 39
| {{mono|rotr&nbsp;[d]<br />mov&nbsp;a,&nbsp;[d]}} || style="text-align:left;"| Rotates the value at '''[d]''' by one ternary digit to the right (000211111'''2''' becomes '''2'''000211111). Stores the result both at '''[d]''' and in '''a'''.
| {{mono|rotr&nbsp;[d]<br />mov&nbsp;a,&nbsp;[d]}} || style="text-align:left;"| मान को '''[d]''' पर एक त्रिअंकीय अंक से दाईं ओर घुमाता है (000211111'''2''' '''2'''000211111 बन जाता है)। परिणाम को '''[d]''' और '''a''' दोनों में संग्रहीत करता है।
|-
|-
! 40
! 40
| {{mono|mov&nbsp;d,&nbsp;[d]}} || style="text-align:left;"| Copies the value at '''[d]''' to '''d'''.
| {{mono|mov&nbsp;d,&nbsp;[d]}} || style="text-align:left;"| मान को '''[d]''' से '''d''' पर कॉपी करता है।
|-
|-
! 62
! 62
| {{mono|crz&nbsp;[d],&nbsp;a<br />mov&nbsp;a,&nbsp;[d]}} || style="text-align:left;"| Does the ''crazy'' operation (see below) with the value at '''[d]''' and the value of '''a'''. Stores the result both at '''[d]''' and in '''a'''.
| {{mono|crz&nbsp;[d],&nbsp;a<br />mov&nbsp;a,&nbsp;[d]}} || style="text-align:left;"| '''[d]''' के मूल्य और '''a''' के मूल्य के साथ क्रेजी संक्रिया (नीचे देखें) करता है। परिणाम को '''[d]''' और '''a''' दोनों में संग्रहीत करता है।
|-
|-
! 68
! 68
| {{mono|nop}} || style="text-align:left;"| Does nothing.
| {{mono|nop}} || style="text-align:left;"| कुछ नहीं करता।
|-
|-
! 81
! 81
| {{mono|end}} || style="text-align:left;"| Ends the Malbolge program.
| {{mono|end}} || style="text-align:left;"| मालबोलगे प्रोग्राम को समाप्त करता है।
|-
|-
! ''Any other value''
! ''कोई अन्य मान''  
| colspan="2" | ''does the same as '''68''': nothing. These other values are not allowed in a program while it is being loaded, but are allowed afterwards.''
| colspan="2" | ''68 के समान कुछ नहीं करता है। किसी प्रोग्राम में लोड होने के समय इन अन्य मानों की स्वीकृति नहीं है, लेकिन बाद में स्वीकृति दी जाती है।''
|}
|}
प्रत्येक निर्देश के क्रियान्वित होने के बाद, दोषी निर्देश एन्क्रिप्ट किया जाता है (नीचे देखें) ताकि यह अगली बार वही काम न करे, जब तक कि कोई छलांग न लगे। छलांग लगाने के ठीक बाद, मालबोलगे सीधे उस निर्देश को एन्क्रिप्ट करेगा जिस पर उसने छलांग लगाई थी। फिर, c और d दोनों के मानों में एक की वृद्धि की जाती है और अगला निर्देश निष्पादित किया जाता है।
प्रत्येक निर्देश के क्रियान्वित होने के बाद, दोषी निर्देश एन्क्रिप्ट किया जाता है (नीचे देखें) ताकि यह अगली बार वही काम न करे, जब तक कि कोई जंप न लगे। जंप के ठीक बाद, मालबोलगे प्रत्यक्ष रूप से उस निर्देश को एन्क्रिप्ट करेगा जिस पर उसने जंप किया। फिर, '''c''' और '''d''' दोनों के मानों में एक की वृद्धि की जाती है और अगला निर्देश निष्पादित किया जाता है।


=== पागल ऑपरेशन <!--Name Crazy isn't found in source material, see talk page--> ===
=== दुर्बल संचालन ===
दोनों इनपुट के प्रत्येक त्रिअंकीय अंक के लिए, परिणाम का त्रिअंकीय अंक प्राप्त करने के लिए निम्न तालिका का उपयोग करें। उदाहरण के लिए, crz 0001112220, 0120120120 1001022211 देता है।
दोनों इनपुट के प्रत्येक त्रिअंकीय अंक के लिए, परिणाम का त्रिअंकीय अंक प्राप्त करने के लिए निम्न तालिका का उपयोग करें। उदाहरण के लिए, '''crz 0001112220, 0120120120''' देता है।


{| style="margin:auto;" class="wikitable"
{| style="margin:auto;" class="wikitable"
|+ ''Crazy'' operation<ref name=":0">{{Cite web
|+ क्रेजी संक्रिया<ref name=":0">{{Cite web
  | title = Interview with Ben Olmstead
  | title = Interview with Ben Olmstead
  | url = https://esoteric.codes/blog/interview-with-ben-olmstead
  | url = https://esoteric.codes/blog/interview-with-ben-olmstead
Line 177: Line 177:
  | accessdate = 2017-06-09}}</ref>
  | accessdate = 2017-06-09}}</ref>
|- style="text-align:center;"
|- style="text-align:center;"
! colspan="2" rowspan="2" | crz !! colspan="3" | Input 2
! colspan="2" rowspan="2" | सीआरजेड !! colspan="3" | इनपुट 2
|- style="text-align:center;"
|- style="text-align:center;"
! 0 !! 1 !! 2
! 0 !! 1 !! 2
|- style="text-align:center;"
|- style="text-align:center;"
! rowspan="3" | Input 1 !! 0
! rowspan="3" | इनपुट 1 !! 0
| 1 || 0 || 0
| 1 || 0 || 0
|- style="text-align:center;"
|- style="text-align:center;"
Line 192: Line 192:




=== गूढ़लेख ===
=== कूटलेखन ===
एक निर्देश के क्रियान्वित होने के बाद, ''[c]'' (इसमें कुछ भी जोड़े बिना) का मान [[मॉड्यूल ऑपरेशन]] 94 से बदल दिया जाएगा। फिर, परिणाम निम्नलिखित दो समकक्ष [[प्रतिस्थापन सिफर]] में से एक के साथ कूटबद्ध किया जाता है।
एक निर्देश के क्रियान्वित होने के बाद, '''''[c]''''' (इसमें कुछ भी जोड़े बिना) का मान [[मॉड्यूल ऑपरेशन|मॉड्यूल संक्रिया]] 94 से परिवर्तित कर दिया जाएगा। फिर, परिणाम निम्नलिखित दो समकक्ष विधियों में से एक के साथ जोड़ा जाता है।


; विधि 1: नीचे परिणाम प्राप्त करें। इसके नीचे के कैरेक्टर का ASCII कोड ''[c]'' पर स्टोर करें।
; विधि 1: नीचे परिणाम प्राप्त करें। इसके नीचे के वर्ण का सूचना विनिमय के लिए अमेरिकी मानक कोड कोड '''''[c]''''' पर संग्रहित करें।
<वाक्यविन्यास लैंग = पाठ>
  0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999
  000000000011111111112222222222333333333344444444445555555556666666666777777777788888888889999
  0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
  ----------------------------------------------------------------------------------------------
--------------------------------------------------- --------------------------------------------
  9m<.TVac`uY*MK'X~xDl}REokN:#?G"i@5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8|jsb
9मी<.TVac`uY*MK'X~xDl}REokN:#?G i@5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8| jsb
</वाक्यविन्यास हाइलाइट>


; विधि 2: नीचे परिणाम प्राप्त करें। एन्क्रिप्टेड वर्जन को ''[c]'' पर स्टोर करें।
; विधि 2: नीचे परिणाम प्राप्त करें। एन्क्रिप्टेड संस्करण को '''''[c]''''' पर संग्रहित करें।


{| style="margin:auto;" class="wikitable"
{| style="margin:auto;" class="wikitable"
|+ Encryption table
|+ एन्क्रिप्शन (कूटलेखन) तालिका
|- style="text-align:center;"
|- style="text-align:center;"
! Result !! Encrypted !! Result !! Encrypted !! Result !! Encrypted !! Result !! Encrypted !! Result !! Encrypted
! परिणाम !! एन्क्रिप्टेड !! परिणाम !! एन्क्रिप्टेड !! परिणाम !! एन्क्रिप्टेड !! परिणाम !! एन्क्रिप्टेड !! परिणाम !! एन्क्रिप्टेड
|- style="text-align:center;"
|- style="text-align:center;"
| '''0''' || 57 || '''19''' || 108 || '''38''' || 113 || '''57''' || 91 || '''76''' || 79
| '''0''' || 57 || '''19''' || 108 || '''38''' || 113 || '''57''' || 91 || '''76''' || 79
Line 257: Line 255:
* 70 ⇒ 74 ⇒ 70 ...
* 70 ⇒ 74 ⇒ 70 ...


इन चक्रों का उपयोग लूप बनाने के लिए किया जा सकता है जो हर बार अलग-अलग काम करते हैं और जो अंततः दोहराए जाते हैं। लो शेफ़र ने इस विचार का उपयोग एक मैलबॉल्ज प्रोग्राम बनाने के लिए किया (नीचे दिए गए उनके क्रिप्ट विश्लेषण में शामिल) जो उपयोगकर्ता इनपुट को दोहराता है।
इन चक्रों का उपयोग लूप बनाने के लिए किया जा सकता है जो प्रत्येक बार अलग-अलग कार्य करते हैं और जो अंततः पुनरावृत किए जाते हैं। लो शेफ़र ने इस विचार का उपयोग एक मैलबॉल्ज प्रोग्राम बनाने के लिए किया (नीचे दिए गए उनके क्रिप्ट विश्लेषण में सम्मिलित) जो उपयोगकर्ता इनपुट की पुनरावृति करता है।


== वेरिएंट ==
== वेरिएंट ==
मालबोल्गे [[ट्यूरिंग-पूर्ण भाषा]] नहीं है | ट्यूरिंग-पूर्ण, इसकी स्मृति सीमा के कारण। हालाँकि, इसमें अन्यथा अनुक्रमिक निष्पादन, पुनरावृत्ति और सशर्त-निष्पादन है। मालबोलगे के ट्यूरिंग-पूर्ण संस्करण बनाने के लिए कई प्रयास किए गए हैं:
मैल्बोलगे अपनी मेमोरी सीमाओं के कारण ट्यूरिंग-पूर्ण नहीं है। हालाँकि, इसमें अन्यथा अनुक्रमिक निष्पादन, पुनरावृत्ति और सशर्त-निष्पादन है। मालबोलगे के ट्यूरिंग-पूर्ण संस्करण बनाने के लिए कई प्रयास किए गए हैं:


* Malbolge20 20 ट्रिट्स के विस्तारित शब्द-आकार के साथ Malbolge का एक संस्करण है, जिससे एक व्यक्ति को ~3.4 गीगाबाइट तक के आकार के साथ एक प्रोग्राम लिखने की अनुमति मिलती है।<ref>{{Cite web |title=Malbolge20 - Esolang |url=https://esolangs.org/wiki/Malbolge20 |access-date=2022-12-12 |website=esolangs.org}}</ref>
* मालबोल्गे20, 20 ट्रिट्स के विस्तारित पद-आकार के साथ मालबोल्गे का एक संस्करण है, जिससे एक व्यक्ति को ~3.4 गीगाबाइट तक के आकार के साथ एक प्रोग्राम लिखने की स्वीकृति मिलती है।<ref>{{Cite web |title=Malbolge20 - Esolang |url=https://esolangs.org/wiki/Malbolge20 |access-date=2022-12-12 |website=esolangs.org}}</ref>
* Malbolge-T, Malbolge का एक सैद्धांतिक संस्करण है जो अंत तक पहुँचने पर इनपुट/आउटपुट स्ट्रीम को रीसेट करता है, जिससे असीमित प्रोग्रामों की अनुमति मिलती है। Malbolge-T Malbolge के साथ पश्चगामी अनुकूलता होगी।<ref name="lscheffer">{{Cite web
* मालबोल्गे-T, मालबोल्गे का एक सैद्धांतिक संस्करण है जो अंत तक पहुँचने पर इनपुट/आउटपुट स्ट्रीम को पुनः स्थापित करता है, जिससे असीमित प्रोग्रामों की स्वीकृति मिलती है। मालबोल्गे-T मालबोल्गे के साथ पश्चगामी अनुकूलता होगी।<ref name="lscheffer">{{Cite web
| title = Introduction to Malbolge
| title = Introduction to Malbolge
| url = http://www.lscheffer.com/malbolge.shtml
| url = http://www.lscheffer.com/malbolge.shtml
Line 270: Line 268:
| date = 2015-04-17
| date = 2015-04-17
| accessdate = 2017-06-09}}</ref>
| accessdate = 2017-06-09}}</ref>
* Malbolge Unshackled उम्मीद के मुताबिक ट्यूरिंग-पूर्ण भिन्नता है, जो किसी भी लम्बाई के कार्यक्रमों की अनुमति देता है। हालांकि, 257 से ऊपर के मूल्यों के लिए अनुमति देने के लिए कमांड विविधताओं के कारण, मालबोलगे अनशेकल्ड में मान्य मालबोल्गे प्रोग्राम सही ढंग से नहीं चलेंगे।<ref>{{cite web
* मालबोल्गे अस्पष्ट उपेक्षा के अनुसार ट्यूरिंग-पूर्ण भिन्नता है, जो किसी भी लम्बाई के प्रोग्रामों की स्वीकृति देता है। हालांकि, 257 से ऊपर के मानो के लिए स्वीकृति देने के लिए कमांड विविधताओं के कारण, मालबोलगे अनशेकल्ड (स्थिर) में मान्य मालबोल्गे प्रोग्राम सही रूप से नहीं संचलित है।<ref>{{cite web
| url=https://esolangs.org/wiki/Malbolge_Unshackled
| url=https://esolangs.org/wiki/Malbolge_Unshackled
| title=Malbolge Unshackled
| title=Malbolge Unshackled
Line 279: Line 277:


== लोकप्रिय संस्कृति ==
== लोकप्रिय संस्कृति ==
टेलीविजन श्रृंखला एलीमेंट्री (टीवी श्रृंखला) में, एपिसोड द लेविथान (सीजन 1, एपिसोड 10) के दौरान, कॉफी ऑर्डर पर लिखे गए एक सुराग को मालबोलगे में लिखा गया बताया गया है। यह ऊपर दिखाए गए अधिक वर्बोज़ हैलो वर्ल्ड उदाहरण का एक छोटा संशोधन प्रतीत होता है।<ref name=":0" /><ref>{{Cite episode
टेलीविजन श्रृंखला प्राथमिक में, "द लेविथान" (सीज़न 1, एपिसोड 10) एपिसोड के समय, कॉफी ऑर्डर पर लिखे गए एक सुराग को मालबोल्गे में लिखा गया बताया गया है। यह अधिक क्रियात्मक "हैलो वर्ल्ड" उदाहरण का एक छोटा संशोधन प्रतीत होता है जो ऊपर दिखाया गया है।<ref name=":0" /><ref>{{Cite episode
| title = Leviathan
| title = Leviathan
| series = [[Elementary (TV series)|Elementary]]
| series = [[Elementary (TV series)|Elementary]]
Line 287: Line 285:
| season = 1
| season = 1
| number = 10}}</ref>
| number = 10}}</ref>
लीवरेज: रिडेम्पशन एपिसोड द गोल्फ जॉब (सीजन 1, एपिसोड 12) में, एक एसएमएस ऑटो-रिप्लाई पढ़ता है कि ब्रीना गुरुवार से रविवार तक अनुपलब्ध है या जब तक वह मालबोल्गे कोड में महारत हासिल नहीं कर लेती।


द बिलियन्स (टीवी सीरीज़) एपिसोड द लिमिटलेस शिट (सीज़न 5, एपिसोड 7) में, एक्स कैपिटल के एक प्रोग्रामर विश्लेषक बताते हैं कि वह ... मालबोलगे के साथ इधर-उधर घूमता था, लेकिन सिर्फ मनोरंजन के लिए।
प्रभाव: रिडेम्पशन एपिसोड द गोल्फ जॉब (सीजन 1, एपिसोड 12) में, एक एसएमएस स्वत: जवाब पढ़ता है कि ब्रीना गुरुवार से रविवार तक अनुपलब्ध है या जब तक वह मालबोल्गे कोड में निपुणता प्राप्त नहीं कर लेती।
 
द बिलियन्स (टीवी सीरीज़) एपिसोड द लिमिटलेस शिट (सीज़न 5, एपिसोड 7) में, एक्स कैपिटल के एक प्रोग्रामर विश्लेषक बताते हैं कि मैल्बोल्गे के साथ मस्ती करते थे लेकिन सिर्फ मनोरंजन के लिए करते थे।"


== यह भी देखें ==
== यह भी देखें ==
{{Portal|Free and open-source software}}
{{Portal|Free and open-source software}}
* [[इंटरकैल]]
* [[इंटरकैल]]
* भ्रमित कोड
* अस्पष्टीकृत कोड


== संदर्भ ==
== संदर्भ ==
Line 301: Line 300:


== बाहरी संबंध ==
== बाहरी संबंध ==
* [https://www.lscheffer.com/malbolge_interp.html Malbolge interpreter (C source code)]
* [https://www.lscheffer.com/malbolge_interp.html मालबोल्गे interpreter (C source code)]
* [https://bitbucket.org/msagi/malbolge-interpreter/ Malbolge interpreter, debugger, assembler and example Malbolge Assembly code (Java source code)]
* [https://bitbucket.org/msagi/malbolge-interpreter/ मालबोल्गे interpreter, debugger, assembler and example मालबोल्गे Assembly code (Java source code)]
* [http://esolangs.org/wiki/Malbolge_programming Treatise on writing Malbolge programs; takes Scheffer's analysis a bit further]
* [http://esolangs.org/wiki/Malbolge_programming Treatise on writing मालबोल्गे programs; takes Scheffer's analysis a bit further]
* [http://c0d3.attorney/ A project devoted to present programs written in Malbolge]
* [http://c0d3.attorney/ A project devoted to present programs written in मालबोल्गे]
[[Category: गूढ़ प्रोग्रामिंग भाषाएँ]] [[Category: गैर-अंग्रेज़ी-आधारित प्रोग्रामिंग भाषाएँ]] [[Category: 1998 में बनाई गई प्रोग्रामिंग लैंग्वेज]]
 
 


[[Category: Machine Translated Page]]
[[Category:1998 में बनाई गई प्रोग्रामिंग लैंग्वेज]]
[[Category:CS1 English-language sources (en)]]
[[Category:CS1 maint]]
[[Category:Created On 18/02/2023]]
[[Category:Created On 18/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with broken file links]]
[[Category:Pages with empty portal template]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:गूढ़ प्रोग्रामिंग भाषाएँ]]
[[Category:गैर-अंग्रेज़ी-आधारित प्रोग्रामिंग भाषाएँ]]

Latest revision as of 10:14, 1 March 2023

यह लेख प्रोग्रामिंग भाषा के बारे में है। दांते के इन्फर्नो में नरक के आठवें चक्र के लिए, मेलबोलगे देखें।

मालबोलगे
File:मालबोल्गे इको प्रोग्राम.पीएनजी
मालबोलगे में एक प्रतिध्वनि कार्यक्रम
Paradigmगुप्त, अनिवार्य, अदिष्ट, मूल्य-स्तर
द्वारा डिज़ाइन किया गयाबेन ओल्मस्टेड[1]
Developerबेन ओल्मस्टेड[1]
पहली प्रस्तुति1998
टाइपिंग अनुशासनअनटाइप
फ़ाइल नाम एक्सटेंशनएस.mal, .mb
Influenced by
ब्रेनफक, इंटरकैल (त्रि-इंटरकैल), बेफ़ंगे
Influenced
है, मालबोल्गे अनशेकल्ड

मालबोलगे (/mælˈbl/) 1998 में बेन ओल्मस्टेड द्वारा आविष्कार की गई एक सार्वजनिक डोमेन गोपनीय प्रोग्रामिंग भाषा है, जिसका नाम डांटे के इन्फर्नो, द मालेबोल में नरक के आठवें चक्र के नाम पर रखा गया है। यह विशेष रूप से प्रति-सहज ज्ञान युक्त 'दुर्बल संचालन', आधार-तीन अंकगणितीय और स्व-परिवर्तनकारी कोड के माध्यम से उपयोग करने के लिए लगभग असंभव होने के लिए डिज़ाइन किया गया था।।[2] यह पहले की चुनौतीपूर्ण गोपनीय भाषाओं (जैसे ब्रेनफक और बेफंज) की कठिनाई पर आधारित है, लेकिन कंप्यूटर विज्ञान और कूटलेखन (एन्क्रिप्शन) के जटिल इतिहास पर खेलते हुए, इस स्वरूप को अधिकतम पर ले जाता है। इस डिजाइन के होते हुए भी उपयोगी मालबोलगे प्रोग्राम लिखना संभव है।

मालबोल्गे में प्रोग्रामिंग

मालबोल्गे के आने पर इसे समझना बहुत कठिन था। पहले मालबोल्गे प्रोग्राम को प्रदर्शित होने में दो साल लग गए। लेखक ने स्वयं कभी भी मलबोलगे प्रोग्राम नहीं लिखा है।[2] हला प्रोग्राम किसी इंसान द्वारा नहीं लिखा गया था; यह एंड्रयू कुक द्वारा डिज़ाइन किए गए और सूची प्रक्रमण में प्रयुक्त किए गए एक बीम जाँच एल्गोरिथम द्वारा उत्पन्न किया गया था।[3]

बाद में, लू शेफ़र ने मालबोलगे का क्रिप्ट विश्लेषण प्रविष्ट किया और इसके इनपुट को इसके आउटपुट में प्रतिलिपि करने के लिए प्रोग्राम प्रदान किया।[4] मूल साइट के काम करना बंद करने के बाद उन्होंने मूल दुभाषिया और विनिर्देश को भी संग्रहित किया, और मालबोल्गे में प्रोग्राम लिखने की एक सामान्य योजना के साथ-साथ इसकी ट्यूरिंग पूर्णता पर कुछ विचार प्रस्तुत किए।[5]

ओल्म्सटेड का मानना ​​था कि मालबोलगे एक रैखिक परिबद्ध स्वचालन है। इस बारे में एक चर्चा है कि क्या कोई मालबोल्गे में उपयुक्त लूप को कार्यान्वित कर सकता है- पहले गैर-गुण वाले को प्रस्तुत किए जाने से पहले कई वर्ष लग गए थे। कंप्यूटर विज्ञान में बीयर की सही 99 बोतलें संदर्भ, जो गैर-साधारण सिरों और स्थितियों से संबंधित है, जिसकी घोषणा सात वर्षों तक नहीं की गई थी; पहला सही 2005 में हिसाशी इजावा द्वारा किया गया था।[6] हिसाशी इजावा एट अल सॉफ्टवेयर सुरक्षा के लिए भ्रम उत्पन्न करने के उद्देश्य से मालबोलगे में प्रोग्रामिंग के लिए एक गाइड का भी प्रस्ताव रखा।[7]

2020 में, गिटहब उपयोगकर्ता केस्पलाईोलोजोस ने मालबोल्गे अनशेकल्ड (बंधनमुक्त) में एक कार्यकारी सूची प्रक्रमण (प्रोग्रामिंग भाषा) इंटरप्रेटर (कंप्यूटिंग) बनाया।[8]


उदाहरण प्रोग्राम

हैलो, विश्व!

यह प्रोग्राम "हैलो, वर्ल्ड" प्रदर्शित करता है।[9]

(=<`#9]~6ZY327Uv4-QsqpMn&+Ij"'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:`H%c#DD2^WV>gY;dts76qKJImZkj

echo प्रोग्राम

यह प्रोग्राम एक उपयोगकर्ता से एक स्ट्रिंग पढ़ता है और उस स्ट्रिंग को यूनिक्स echoके समान उस स्ट्रिंग को प्रिंट करता है।[10]

(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66#"!~}|{zyxwvu
gJ%

डिजाइन

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

मानक दुभाषिया और आधिकारिक विनिर्देश पूरी तरह समरूप नहीं हैं।[11] एक अंतर यह है कि कंपाइलर 33–126 सीमा के बाहर डेटा के साथ कार्यान्वयन को रोक देता है। हालांकि प्रारंभ में इसे संकलक में एक बग (त्रुटि) माना गया था, बेन ओल्म्सटेड ने कहा कि इसका उद्देश्य था और वास्तव में "विनिर्देश में एक बग" था।[2]


रजिस्टर

मालबोल्गे में तीन प्रोसेसर रजिस्टर a, c, और d हैं । जब कोई प्रोग्राम प्रारंभ होता है, तो तीनों रजिस्टरों का मान शून्य होता है।

a का अर्थ 'एक्युमुलेटर' (संचायक) है, जो मेमोरी पर सभी लिखित संचालन द्वारा लिखे गए मूल्य पर व्यवस्थित और मानक इनपुट/आउटपुट के लिए उपयोग किया जाता है। 'c', कोड पॉइंटर, विशेष है: यह वर्तमान निर्देश की ओर संकेत करता है।[12] d डेटा पॉइंटर है। यह प्रत्येक निर्देश के बाद स्वचालित रूप से बढ़ जाता है, लेकिन यह जिस स्थान को इंगित करता है उसका उपयोग डेटा कुशलतापूर्वक प्रयोग कमांड के लिए किया जाता है।

पॉइन्टर संकेतन

d एक मेमोरी एड्रैस रख सकता है; [d] अप्रत्यक्ष रूप से रजिस्टर है; उस एड्रैस पर संग्रहीत मान [c] समान है।

मेमोरी

वर्चुअल मशीन में 59,049 (310) रैंडम एक्सेस मेमोरी लोकेशन, जिनमें से प्रत्येक में दस-ट्रिट त्रिगुट अंक प्रणाली हो सकती है। प्रत्येक मेमोरी स्थान का एड्रैस 0 से 59048 तक होता है और 0 से 59048 तक का मान रख सकता है। इस सीमा से आगे बढ़ने पर वापस शून्य हो जाता है।

भाषा डेटा और निर्देशों दोनों के लिए एक ही मेमोरी स्थान का उपयोग करती है। यह x86 संरचना जैसे हार्डवेयर के काम करने के तरीके से प्रभावित था।[2]

मालबोल्गे प्रोग्राम प्रारंभ होने से पहले, मेमोरी का पहला भाग प्रोग्राम से संग्रहित हो जाता है। प्रोग्राम में सभी रिक्त स्थान को उपेक्षित किया जाता है और प्रोग्रामिंग को और अधिक कठिन बनाने के लिए, प्रोग्राम में में सब कुछ नीचे दिए गए निर्देशों से बाहर होना चाहिए।

पिछले दो एड्रैस ('[m] = crz [m - 2], [m - 1]') पर दुर्बल संचालन (नीचे देखें) का उपयोग करके शेष मेमोरी संग्रहित कर दी गई है। इस तरह से भंडारण मेमोरी प्रत्येक बारह एड्रैस को पुनरावृत करेगी (व्यक्तिगत त्रिगुट अंक प्रत्येक तीन या चार एड्रैस को पुनरावृत करेगी, इसलिए त्रिगुट अंकों का एक समूह प्रत्येक बारह को पुनरावृत की प्रत्याभूति देता है)।

2007 में, अर्जन जोहान्सन ने मालबोल्गे अस्पष्ट बनाया, माल्बोल्गे का एक संस्करण जिसमें व्यवस्थित मेमोरी सीमा नहीं है। जितना संभव हो मालबोल्गे की तत्परता में रखते हुए एक ट्यूरिंग-पूर्ण भाषा बनाने की उपेक्षा थी। कोई अन्य नियम नहीं परिवर्तित कर दिए गए हैं, और सभी मालबोल्गे प्रोग्राम जो मेमोरी सीमा तक नहीं पहुँचते हैं वे पूरी तरह कार्यात्मक हैं।[13]


निर्देश

मालबोलगे के आठ निर्देश हैं। मालबोलगे ने यह पता लगाता है कि [c] का मान लेकर, उसमें c का मान जोड़कर और शेष को 94 से विभाजित करने पर किस निर्देश को निष्पादित करना है। अंतिम परिणाम दुभाषिया (इंटरप्रेटर) को बताता है कि क्या करना है:

निर्देश

([c] + c) % 94 का मान
निर्देश का प्रतिनिधित्व स्पष्टीकरण
4 jmp [d] मान को [d] से c पर कॉपी करता है। ध्यान दें कि इस निर्देश के निष्पादन के बाद भी c में वृद्धि होगी, इसलिए निष्पादित किया जाने वाला अगला निर्देश [d] + 1 (सापेक्ष 59049) पर होगा।
5 out a a के मान को सूचना आदान-प्रदान के लिए अमेरिकी मानक कोड (एएससीआईआई) वर्ण के रूप में स्क्रीन पर प्रिंट करता है।
23 in a एएससीआईआई कोड के रूप में एक वर्ण को a में इनपुट करता है। न्यूलाइन्स या लाइन फीड्स दोनों कोड 10 हैं। फ़ाइल के अंत की स्थिति कोड 59048 है।
39 rotr [d]
mov a, [d]
मान को [d] पर एक त्रिअंकीय अंक से दाईं ओर घुमाता है (0002111112 2000211111 बन जाता है)। परिणाम को [d] और a दोनों में संग्रहीत करता है।
40 mov d, [d] मान को [d] से d पर कॉपी करता है।
62 crz [d], a
mov a, [d]
[d] के मूल्य और a के मूल्य के साथ क्रेजी संक्रिया (नीचे देखें) करता है। परिणाम को [d] और a दोनों में संग्रहीत करता है।
68 nop कुछ नहीं करता।
81 end मालबोलगे प्रोग्राम को समाप्त करता है।
कोई अन्य मान 68 के समान कुछ नहीं करता है। किसी प्रोग्राम में लोड होने के समय इन अन्य मानों की स्वीकृति नहीं है, लेकिन बाद में स्वीकृति दी जाती है।

प्रत्येक निर्देश के क्रियान्वित होने के बाद, दोषी निर्देश एन्क्रिप्ट किया जाता है (नीचे देखें) ताकि यह अगली बार वही काम न करे, जब तक कि कोई जंप न लगे। जंप के ठीक बाद, मालबोलगे प्रत्यक्ष रूप से उस निर्देश को एन्क्रिप्ट करेगा जिस पर उसने जंप किया। फिर, c और d दोनों के मानों में एक की वृद्धि की जाती है और अगला निर्देश निष्पादित किया जाता है।

दुर्बल संचालन

दोनों इनपुट के प्रत्येक त्रिअंकीय अंक के लिए, परिणाम का त्रिअंकीय अंक प्राप्त करने के लिए निम्न तालिका का उपयोग करें। उदाहरण के लिए, crz 0001112220, 0120120120 देता है।

क्रेजी संक्रिया[2][7]
सीआरजेड इनपुट 2
0 1 2
इनपुट 1 0 1 0 0
1 1 0 2
2 2 2 1


कूटलेखन

एक निर्देश के क्रियान्वित होने के बाद, [c] (इसमें कुछ भी जोड़े बिना) का मान मॉड्यूल संक्रिया 94 से परिवर्तित कर दिया जाएगा। फिर, परिणाम निम्नलिखित दो समकक्ष विधियों में से एक के साथ जोड़ा जाता है।

विधि 1
नीचे परिणाम प्राप्त करें। इसके नीचे के वर्ण का सूचना विनिमय के लिए अमेरिकी मानक कोड कोड [c] पर संग्रहित करें।
0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999
 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
 ----------------------------------------------------------------------------------------------
 9m<.TVac`uY*MK'X~xDl}REokN:#?G"i@5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8|jsb
विधि 2
नीचे परिणाम प्राप्त करें। एन्क्रिप्टेड संस्करण को [c] पर संग्रहित करें।
एन्क्रिप्शन (कूटलेखन) तालिका
परिणाम एन्क्रिप्टेड परिणाम एन्क्रिप्टेड परिणाम एन्क्रिप्टेड परिणाम एन्क्रिप्टेड परिणाम एन्क्रिप्टेड
0 57 19 108 38 113 57 91 76 79
1 109 20 125 39 116 58 37 77 65
2 60 21 82 40 121 59 92 78 49
3 46 22 69 41 102 60 51 79 67
4 84 23 111 42 114 61 100 80 66
5 86 24 107 43 36 62 76 81 54
6 97 25 78 44 40 63 43 82 118
7 99 26 58 45 119 64 81 83 94
8 96 27 35 46 101 65 59 84 61
9 117 28 63 47 52 66 62 85 73
10 89 29 71 48 123 67 85 86 95
11 42 30 34 49 87 68 33 87 48
12 77 31 105 50 80 69 112 88 47
13 75 32 64 51 41 70 74 89 56
14 39 33 53 52 72 71 83 90 124
15 88 34 122 53 45 72 55 91 106
16 126 35 93 54 90 73 50 92 115
17 120 36 38 55 110 74 70 93 98
18 68 37 103 56 44 75 104

लू शेफ़र के मालबोल्गे के क्रिप्ट विश्लेषण में क्रमचय में छह अलग-अलग चक्रों का उल्लेख है। वे यहाँ सूचीबद्ध हैं:

  • 33 ⇒ 53 ⇒ 45 ⇒ 119 ⇒ 78 ⇒ 49 ⇒ 49 ⇒ 87 ⇒ 48 ⇒ 123 ⇒ 71 ⇒ 83 ⇒ 94 ⇒ 57 ⇒ 91 ⇒ 91 ⇒ 106 ⇒ 77 ⇒ 65 ⇒ 59 ⇒ 59 ⇒ 92 ⇒ 115 ⇒ 82 ⇒ 82 ⇒ 118 ⇒ 118 ⇒ 107 ⇒ ⇒ 89 ⇒ 56 ⇒ 44 ⇒ 44 ⇒ 40 ⇒ 121 ⇒ 35 ⇒ 93 ⇒ 98 ⇒ 98 ⇒ 84 ​​⇒ 61 ⇒ 100 ⇒ 97 ⇒ 46 ⇒ 101 ⇒ 101 ⇒ 99 ⇒ 86 ⇒ 95 ⇒ 109 ⇒ 88 ⇒ 88 ⇒ 88 ⇒ 47 ⇒ ⇒ 64 ⇒ 81 ⇒ 54 ⇒ 90 ⇒ 124 ⇒ 34 ⇒ 122 ⇒ 63 ⇒ 43 ⇒ 36 ⇒ 38 ⇒ 113 ⇒ 108 ⇒ 39 ⇒ 116 ⇒ 69 ⇒ 3 ⇒ 112 ⇒
  • 37 ⇒ 103 ⇒ 117 ⇒ 111 ⇒ 120 ⇒ 58 ⇒ 37 ...
  • 41 ⇒ 102 ⇒ 96 ⇒ 60 ⇒ 51 ⇒ 41 ...
  • 42 ⇒ 114 ⇒ 125 ⇒ 105 ⇒ 42 ...
  • 50 ⇒ 80 ⇒ 66 ⇒ 62 ⇒ 76 ⇒ 79 ⇒ 67 ⇒ 85 ⇒ 73 ⇒ 50 ...
  • 70 ⇒ 74 ⇒ 70 ...

इन चक्रों का उपयोग लूप बनाने के लिए किया जा सकता है जो प्रत्येक बार अलग-अलग कार्य करते हैं और जो अंततः पुनरावृत किए जाते हैं। लो शेफ़र ने इस विचार का उपयोग एक मैलबॉल्ज प्रोग्राम बनाने के लिए किया (नीचे दिए गए उनके क्रिप्ट विश्लेषण में सम्मिलित) जो उपयोगकर्ता इनपुट की पुनरावृति करता है।

वेरिएंट

मैल्बोलगे अपनी मेमोरी सीमाओं के कारण ट्यूरिंग-पूर्ण नहीं है। हालाँकि, इसमें अन्यथा अनुक्रमिक निष्पादन, पुनरावृत्ति और सशर्त-निष्पादन है। मालबोलगे के ट्यूरिंग-पूर्ण संस्करण बनाने के लिए कई प्रयास किए गए हैं:

  • मालबोल्गे20, 20 ट्रिट्स के विस्तारित पद-आकार के साथ मालबोल्गे का एक संस्करण है, जिससे एक व्यक्ति को ~3.4 गीगाबाइट तक के आकार के साथ एक प्रोग्राम लिखने की स्वीकृति मिलती है।[14]
  • मालबोल्गे-T, मालबोल्गे का एक सैद्धांतिक संस्करण है जो अंत तक पहुँचने पर इनपुट/आउटपुट स्ट्रीम को पुनः स्थापित करता है, जिससे असीमित प्रोग्रामों की स्वीकृति मिलती है। मालबोल्गे-T मालबोल्गे के साथ पश्चगामी अनुकूलता होगी।[4]
  • मालबोल्गे अस्पष्ट उपेक्षा के अनुसार ट्यूरिंग-पूर्ण भिन्नता है, जो किसी भी लम्बाई के प्रोग्रामों की स्वीकृति देता है। हालांकि, 257 से ऊपर के मानो के लिए स्वीकृति देने के लिए कमांड विविधताओं के कारण, मालबोलगे अनशेकल्ड (स्थिर) में मान्य मालबोल्गे प्रोग्राम सही रूप से नहीं संचलित है।[15]


लोकप्रिय संस्कृति

टेलीविजन श्रृंखला प्राथमिक में, "द लेविथान" (सीज़न 1, एपिसोड 10) एपिसोड के समय, कॉफी ऑर्डर पर लिखे गए एक सुराग को मालबोल्गे में लिखा गया बताया गया है। यह अधिक क्रियात्मक "हैलो वर्ल्ड" उदाहरण का एक छोटा संशोधन प्रतीत होता है जो ऊपर दिखाया गया है।[2][16]

प्रभाव: रिडेम्पशन एपिसोड द गोल्फ जॉब (सीजन 1, एपिसोड 12) में, एक एसएमएस स्वत: जवाब पढ़ता है कि ब्रीना गुरुवार से रविवार तक अनुपलब्ध है या जब तक वह मालबोल्गे कोड में निपुणता प्राप्त नहीं कर लेती।

द बिलियन्स (टीवी सीरीज़) एपिसोड द लिमिटलेस शिट (सीज़न 5, एपिसोड 7) में, एक्स कैपिटल के एक प्रोग्रामर विश्लेषक बताते हैं कि मैल्बोल्गे के साथ मस्ती करते थे लेकिन सिर्फ मनोरंजन के लिए करते थे।"

यह भी देखें

संदर्भ

  1. 1.0 1.1 "Malbolge - Esolang". Retrieved 2022-08-27.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 Temkin, Daniel (2014-11-03). "Interview with Ben Olmstead". esoteric.codes. Retrieved 2021-01-07.
  3. Cooke, Andrew. "malbolge: hello world" (in English). Archived from the original on 2019-12-06. Retrieved 2021-01-08.
  4. 4.0 4.1 Scheffer, Lou (2015-04-17). "Introduction to Malbolge". Retrieved 2017-06-09.
  5. Mykhailova, Mariya (2012-05-11). "Malbolge - Programming language". Progopedia. Retrieved 2017-06-09.
  6. "Language Malbolge". 99 Bottles of Beer. 2005-12-29. Archived from the original on 2020-05-14. Retrieved 2020-11-19.
  7. 7.0 7.1 IIZAWA, Hisashi. "Programming Method in Obfuscated Language Malbolge" (PDF) (in Japanese). Nagoya University. Retrieved 2017-06-09.{{cite web}}: CS1 maint: unrecognized language (link)
  8. Palaiologos (2021-03-04), kspalaiologos/malbolge-lisp, retrieved 2021-03-23
  9. Palaiologos (2021-03-04), kspalaiologos/hello.mb, retrieved 2021-03-23
  10. Lutter, Matthias. "Malbolge cat". lutter.cc. Retrieved 2022-08-28.{{cite web}}: CS1 maint: url-status (link)
  11. Green, Austin (2000-12-01). "Malbolge". Louisiana Tech University. Retrieved 2017-06-09.
  12. Olmstead, Ben (1998). "Malbolge Specification". www.lscheffer.com. Retrieved 2017-06-09.
  13. Johansen, Ørjan (2013-10-25). "An interpreter for the Malbolge Unshackled dialect" (Haskell). oerjan.nvg.org. Retrieved 2017-06-09.
  14. "Malbolge20 - Esolang". esolangs.org. Retrieved 2022-12-12.
  15. "Malbolge Unshackled". esolangs.org. 2017-04-14. Retrieved 2017-06-09.
  16. "Leviathan". Elementary. Season 1. Episode 10. Manhattan. 2012-12-14. CBS.


बाहरी संबंध