मालबोल्गे: 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
Line 21: Line 21:
मालबोलगे ({{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 34:
  |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 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]] उपयोगकर्ता kspalaiologos ने मालबोल्गे 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>




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


=== हैलो, विश्व! ===
=== हैलो, विश्व! ===
यह प्रोग्राम हैलो वर्ल्ड प्रोग्राम प्रदर्शित करता है|हैलो वर्ल्ड। .<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
Line 82: Line 79:
| 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'' का अर्थ 'accumulator' है, जो मेमोरी पर सभी राइट ऑपरेशंस द्वारा लिखे गए मान पर सेट होता है और इनपुट/आउटपुट|मानक I/O के लिए उपयोग किया जाता है। 'सी', कोड पॉइंटर, विशेष है: यह [[कार्यक्रम गणक|प्रोग्राम गणक]] है।<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 105: Line 103:
भाषा [[वॉन न्यूमैन वास्तुकला]] का उपयोग करती है। यह 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 119:


=== निर्देश ===
=== निर्देश ===
मालबोलगे के पास आठ [[opcode]] हैं। Malbolge यह पता लगाता है कि [c] का मान लेकर, उसमें c का मान जोड़कर और शेष को 94 से विभाजित करने पर किस निर्देश को निष्पादित करना है। अंतिम परिणाम दुभाषिया को बताता है कि क्या करना है:
मालबोलगे के पास आठ [[opcode]] हैं। मालबोल्गे यह पता लगाता है कि [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
Line 147: Line 146:
|-
|-
! 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 1001022211 देता है।


Line 257: Line 256:
* 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 269:
| date = 2015-04-17
| date = 2015-04-17
| accessdate = 2017-06-09}}</ref>
| accessdate = 2017-06-09}}</ref>
* Malbolge Unshackled उम्मीद के मुताबिक ट्यूरिंग-पूर्ण भिन्नता है, जो किसी भी लम्बाई के कार्यक्रमों की अनुमति देता है। हालांकि, 257 से ऊपर के मूल्यों के लिए अनुमति देने के लिए कमांड विविधताओं के कारण, मालबोलगे अनशेकल्ड में मान्य मालबोल्गे प्रोग्राम सही ढंग से नहीं चलेंगे।<ref>{{cite web
* मालबोल्गे Unshackled उम्मीद के मुताबिक ट्यूरिंग-पूर्ण भिन्नता है, जो किसी भी लम्बाई के प्रोग्रामों की स्वीकृति देता है। हालांकि, 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 278:


== लोकप्रिय संस्कृति ==
== लोकप्रिय संस्कृति ==
टेलीविजन श्रृंखला एलीमेंट्री (टीवी श्रृंखला) में, एपिसोड द लेविथान (सीजन 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 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: गूढ़ प्रोग्रामिंग भाषाएँ]] [[Category: गैर-अंग्रेज़ी-आधारित प्रोग्रामिंग भाषाएँ]] [[Category: 1998 में बनाई गई प्रोग्रामिंग लैंग्वेज]]  



Revision as of 13:41, 26 February 2023

Malbolge
Malbolge echo program.png
An echo program in Malbolge
ParadigmEsoteric, imperative, scalar, value-level
द्वारा डिज़ाइन किया गयाBen Olmstead[1]
DeveloperBen Olmstead[1]
पहली प्रस्तुति1998
टाइपिंग अनुशासनUntyped
फ़ाइल नाम एक्सटेंशनएस.mal, .mb
Influenced by
Brainfuck, INTERCAL (Tri-INTERCAL), Befunge
Influenced
Dis, Malbolge Unshackled

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

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

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

2020 में, GitHub उपयोगकर्ता kspalaiologos ने मालबोल्गे Unshackled में एक वर्किंग लिस्प (प्रोग्रामिंग भाषा) इंटरप्रेटर (कंप्यूटिंग) बनाया।[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 का अर्थ 'accumulator' है, जो मेमोरी पर सभी राइट ऑपरेशंस द्वारा लिखे गए मान पर सेट होता है और इनपुट/आउटपुट|मानक I/O के लिए उपयोग किया जाता है। 'सी', कोड पॉइंटर, विशेष है: यह प्रोग्राम गणक है।[12] डी डेटा सूचक है। यह प्रत्येक निर्देश के बाद स्वचालित रूप से बढ़ जाता है, लेकिन यह जिस स्थान को इंगित करता है उसका उपयोग डेटा हेरफेर कमांड के लिए किया जाता है।

सूचक संकेतन

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

मेमोरी

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

भाषा वॉन न्यूमैन वास्तुकला का उपयोग करती है। यह x86 आर्किटेक्चर जैसे हार्डवेयर के काम करने के तरीके से प्रभावित था।[2]

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

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

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


निर्देश

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

निर्देश

([c] + c) % 94 का मान
निर्देश का प्रतिनिधित्व स्पष्टीकरण
4 jmp [d] 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).
5 out a Prints the value of a, as an