बीलूप और एफलूप: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{abbr|'''BlooP'''|Bounded loop}} और {{abbr|'''FlooP'''|Free loop}} (बाउंडेड लूप और फ्री लूप) सरल [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] हैं जिन्हें [[डगलस हॉफ़स्टैटर]] ने अपनी पुस्तक ''गोडेल, एस्चर, बाख'' में एक बिंदु को चित्रित करने के लिए डिज़ाइन किया है।<ref>[[Douglas Hofstadter]] (1979), ''[[Gödel, Escher, Bach]]'', Basic Books, Chapter XIII.</ref> ब्लूपी एक [[ट्यूरिंग पूर्णता]] या गैर-ट्यूरिंग-पूर्ण प्रोग्रामिंग लैंग्वेज है जिसकी मुख्य नियंत्रण प्रवाह संरचना एक बाउंडेड [[लूप (कंप्यूटिंग)]] है (अथार्त [[रिकर्सन (कंप्यूटर विज्ञान)]] की अनुमति नहीं है)। लैंग्वेज के सभी प्रोग्राम समाप्त होने चाहिए, और यह लैंग्वेज केवल [[आदिम पुनरावर्ती कार्य|प्रिमिटिव रिकर्सिव फंक्शन]] को व्यक्त कर सकती है।<ref>[http://plato.stanford.edu/entries/computability/ Stanford Encyclopedia of Philosophy: Computability and Complexity]</ref>{{Short description|Simple programming languages}}ब्लूपी और फ्लोपी को गणना के मॉडल के रूप में माना जा सकता है, और कभी-कभी कम्प्यूटेबिलिटी सिखाने में इसका उपयोग किया जाता है।<ref>David Mix Barrington (2004), CMPSCI 601: Theory of Computation, University of Massachusetts Amherst, [http://www.cs.umass.edu/~barring/cs601f04/lecture/27.pdf Lecture 27].</ref> | |||
{{abbr|'''BlooP'''|Bounded loop}} और {{abbr|'''FlooP''' | |||
ब्लूपी और फ्लोपी को गणना के मॉडल के रूप में माना जा सकता है, और कभी-कभी कम्प्यूटेबिलिटी सिखाने में इसका उपयोग किया जाता है।<ref>David Mix Barrington (2004), CMPSCI 601: Theory of Computation, University of Massachusetts Amherst, [http://www.cs.umass.edu/~barring/cs601f04/lecture/27.pdf Lecture 27].</ref> | |||
==ब्लूपी उदाहरण== | ==ब्लूपी उदाहरण== | ||
Revision as of 11:06, 2 August 2023
BlooP और FlooP (बाउंडेड लूप और फ्री लूप) सरल प्रोग्रामिंग लैंग्वेज हैं जिन्हें डगलस हॉफ़स्टैटर ने अपनी पुस्तक गोडेल, एस्चर, बाख में एक बिंदु को चित्रित करने के लिए डिज़ाइन किया है।[1] ब्लूपी एक ट्यूरिंग पूर्णता या गैर-ट्यूरिंग-पूर्ण प्रोग्रामिंग लैंग्वेज है जिसकी मुख्य नियंत्रण प्रवाह संरचना एक बाउंडेड लूप (कंप्यूटिंग) है (अथार्त रिकर्सन (कंप्यूटर विज्ञान) की अनुमति नहीं है)। लैंग्वेज के सभी प्रोग्राम समाप्त होने चाहिए, और यह लैंग्वेज केवल प्रिमिटिव रिकर्सिव फंक्शन को व्यक्त कर सकती है।[2]
ब्लूपी और फ्लोपी को गणना के मॉडल के रूप में माना जा सकता है, और कभी-कभी कम्प्यूटेबिलिटी सिखाने में इसका उपयोग किया जाता है।[3]
ब्लूपी उदाहरण
एकमात्र चर OUTPUT
(प्रक्रिया का रिटर्न मान) और CELL(i)
(प्राकृतिक-संख्या चर का एक असीमित अनुक्रम, स्थिरांक द्वारा अनुक्रमित, जैसा कि असीमित रजिस्टर मशीन[4]) में है। एकमात्र ऑपरेटर ⇐
(assignment), +
(addition), ×
(multiplication), <
(less-than), >
(greater-than) and =
(equals) हैं।
प्रत्येक प्रोग्राम केवल सीमित संख्या में सेल्स का उपयोग करता है, किन्तु सेल्स में संख्या इच्छित रूप से बड़ी हो सकती है। सूचियों या स्टैक जैसी डेटा संरचनाओं को सेल में संख्या की विशिष्ट विधियों से व्याख्या करके नियंत्रित किया जा सकता है, अर्थात, अनुक्रमों के लिए गोडेल नंबरिंग द्वारा गोडेल संभावित संरचनाओं को क्रमांकित करता है।
नियंत्रण प्रवाह संरचनाओं में बाउंडेड लूप्स, कंडीशनल स्टेटमेंट्स, ABORT
लूप्स से बाहर कूदता है, और QUIT
ब्लॉक से बाहर कूदता है। ब्लूपी रिकर्सन, अप्रतिबंधित जम्प्स या ऐसी किसी भी चीज़ की अनुमति नहीं देता है जिसका प्रभाव फ़्लूपी के अनबाउंड लूप के समान हो। नामित प्रक्रियाओं को परिभाषित किया जा सकता है, किंतु इन्हें केवल पहले से परिभाषित प्रक्रियाओं को ही कहा जा सकता है।[5]
फैक्टोरियल फ़ंक्शन
DEFINE PROCEDURE FACTORIAL [N]: BLOCK 0: BEGIN OUTPUT ⇐ 1; CELL(0) ⇐ 1; LOOP AT MOST N TIMES: BLOCK 1: BEGIN OUTPUT ⇐ OUTPUT × CELL(0); CELL(0) ⇐ CELL(0) + 1; BLOCK 1: END; BLOCK 0: END.
सबट्रैक्सन फ़ंक्शन
यह एक अंतर्निहित ऑपरेशन नहीं है और (प्राकृतिक संख्याओं पर परिभाषित होने के कारण) कभी भी ऋणात्मक परिणाम नहीं देता है (जैसे 2 − 3 := 0)। ध्यान दें कि आउटपुट सभी CELL
s,की तरह 0 से प्रारंभ होता है, और इसलिए किसी आरंभीकरण की आवश्यकता नहीं होती है।
DEFINE PROCEDURE MINUS [M,N]: BLOCK 0: BEGIN IF M < N, THEN: QUIT BLOCK 0; LOOP AT MOST M + 1 TIMES: BLOCK 1: BEGIN IF OUTPUT + N = M, THEN: ABORT LOOP 1; OUTPUT ⇐ OUTPUT + 1; BLOCK 1: END; BLOCK 0: END.
FlooP उदाहरण
नीचे दिया गया उदाहरण, जो एकरमैन फ़ंक्शन को कार्यान्वित करता है, गोडेल नंबरिंग का उपयोग करके एक स्टैक अनुकरण पर निर्भर करता है: यानी, पहले से परिभाषित संख्यात्मक फ़ंक्शंस PUSH
, POP
, and TOP
को संतुष्ट करने वाले PUSH [N, S] > 0
, TOP [PUSH [N, S]] = N
, and POP [PUSH [N, S]] = S
चूंकि एक अनबाउंड MU-LOOP
का उपयोग किया जाता है, यह एक नियमित ब्लूपी प्रोग्राम नहीं है। इस स्थिति में QUIT BLOCK
निर्देश ब्लॉक के अंत तक जाते हैं और लूप को दोहराते हैं, ABORT
के विपरीत, जो लूप से बाहर निकलता है।[6]
DEFINE PROCEDURE ACKERMANN [M, N]: BLOCK 0: BEGIN CELL(0) ⇐ M; OUTPUT ⇐ N; CELL(1) ⇐ 0; MU-LOOP: BLOCK 1: BEGIN IF CELL(0) = 0, THEN: BLOCK 2: BEGIN OUTPUT ⇐ OUTPUT + 1; IF CELL(1) = 0, THEN: ABORT LOOP 1; CELL(0) ⇐ TOP [CELL(1)]; CELL(1) ⇐ POP [CELL(1)]; QUIT BLOCK 1; BLOCK 2: END IF OUTPUT = 0, THEN: BLOCK 3: BEGIN OUTPUT ⇐ 1; CELL(0) ⇐ MINUS [CELL(0), 1]; QUIT BLOCK 1; BLOCK 3: END OUTPUT ⇐ MINUS [OUTPUT, 1]; CELL(1) ⇐ PUSH [MINUS [CELL(0), 1], CELL(1)]; BLOCK 1: END; BLOCK 0: END.
यह भी देखें
- मशीन जो सदैव हल्ट्स है
संदर्भ
- ↑ Douglas Hofstadter (1979), Gödel, Escher, Bach, Basic Books, Chapter XIII.
- ↑ Stanford Encyclopedia of Philosophy: Computability and Complexity
- ↑ David Mix Barrington (2004), CMPSCI 601: Theory of Computation, University of Massachusetts Amherst, Lecture 27.
- ↑ Hofstadter refers to these cells as a set of "auxiliary variables."
- ↑ Hofstadter (1979), p. 413.
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedHofstadter424