मेटा-सर्कुलर मूल्यांकनकर्ता: Difference between revisions

From Vigyanwiki
(Created page with "कम्प्यूटिंग में, एक मेटा-सर्कुलर मूल्यांकनकर्ता (एमसीई) या मेटा-स...")
 
No edit summary
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[कम्प्यूटिंग]] में, एक मेटा-सर्कुलर मूल्यांकनकर्ता (एमसीई) या मेटा-सर्कुलर दुभाषिया (एमसीआई) एक [[दुभाषिया (कंप्यूटिंग)]] है जो दुभाषिया की मेजबान भाषा की समान सुविधा का उपयोग करके व्याख्या की गई भाषा की प्रत्येक विशेषता को परिभाषित करता है। उदाहरण के लिए, लैम्ब्डा एप्लिकेशन की व्याख्या फ़ंक्शन एप्लिकेशन का उपयोग करके लागू की जा सकती है।<ref name=HOP>{{cite journal|last1=Reynolds|first1=John C.|title=Definitional Interpreters for Higher-Order Programming Languages|journal=Higher-Order and Symbolic Computation|date=August 1972|volume=11|issue=4|pages=363–397|doi=10.1023/A:1010027404223|s2cid=43352033|url=http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf|accessdate=14 April 2017 |archive-url=https://web.archive.org/web/20170809042907/http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf |archive-date=9 August 2017 |url-status=dead}}</ref> [[लिस्प (प्रोग्रामिंग भाषा)]] के संदर्भ में मेटा-सर्कुलर मूल्यांकन सबसे प्रमुख है।<ref name=HOP/>एक स्व-दुभाषिया एक मेटा-सर्कुलर दुभाषिया है जहां व्याख्या की गई भाषा लगभग मेजबान भाषा के समान होती है; दो शब्दों को अक्सर समानार्थक रूप से प्रयोग किया जाता है।<ref name=SICP/>
[[कम्प्यूटिंग]] में, एक '''मेटा-सर्कुलर मूल्यांकनकर्ता''' (एमसीई) या मेटा-सर्कुलर दुभाषिया (एमसीआई) एक [[दुभाषिया (कंप्यूटिंग)]] है जो दुभाषिया की होस्ट भाषा की समान सुविधा का उपयोग करके व्याख्या की गई भाषा की प्रत्येक विशेषता को परिभाषित करता है। उदाहरण के लिए, लैम्ब्डा एप्लिकेशन की व्याख्या फ़ंक्शन एप्लिकेशन का उपयोग करके प्रयुक्त की जा सकती है।<ref name=HOP>{{cite journal|last1=Reynolds|first1=John C.|title=Definitional Interpreters for Higher-Order Programming Languages|journal=Higher-Order and Symbolic Computation|date=August 1972|volume=11|issue=4|pages=363–397|doi=10.1023/A:1010027404223|s2cid=43352033|url=http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf|accessdate=14 April 2017 |archive-url=https://web.archive.org/web/20170809042907/http://www.cs.uml.edu/~giam/91.531/Textbooks/definterp.pdf |archive-date=9 August 2017 |url-status=dead}}</ref> [[लिस्प (प्रोग्रामिंग भाषा)]] के संदर्भ में मेटा-सर्कुलर मूल्यांकन सबसे प्रमुख है।<ref name=HOP/> स्व-दुभाषिया मेटा-सर्कुलर दुभाषिया है जहां व्याख्या की गई भाषा लगभग होस्ट भाषा के समान होती है; दो शब्दों को अधिकांशतः समानार्थक रूप से प्रयोग किया जाता है।<ref name=SICP/>


== इतिहास ==
{{See also|संकलक निर्माण का इतिहास}}
कोराडो बोहम का शोध प्रबंध<ref>C. Böhm, Calculatrices digitales. Du déchiffrage des formules logico-mathématiques par la machine même dans la conception du programme, ''Ann. Mat. Pura Appl.'' (4) 37 (1954) 1-51</ref> [[स्व-होस्टिंग (संकलक)]]कंपाइलर सेल्फ-होस्टिंग कंपाइलर के डिजाइन का वर्णन करता है।
<ref>{{cite book|first1=Donald E.|last1=Knuth|author1-link=Donald Knuth|first2=Luis Trabb|last2=Pardo|title=The early development of programming languages|date=August 1976|url=https://archive.org/stream/bitsavers_stanfordcs562EarlyDevelPgmgLangAug76_5916830/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76#page/n35/mode/2up|page=36}}</ref> उच्च-क्रम के कार्यों को संकलित करने में कठिनाई के कारण, इसके अतिरिक्त कई भाषाओं को दुभाषियों के माध्यम से परिभाषित किया गया, सबसे प्रमुख रूप से लिस्प।<ref name="HOP" /><ref>{{cite book|chapter-url=http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf|page=10|chapter=A Universal LISP Function|date=1961|author1-link=John McCarthy (computer scientist)|first1=John|last1=McCarthy|title=Lisp 1.5 Programmer's Manual}}</ref> यह शब्द स्वयं जॉन सी. रेनॉल्ड्स द्वारा गढ़ा गया था,<ref name="HOP" /> और [[कंप्यूटर प्रोग्राम की संरचना और व्याख्या]] पुस्तक में इसके उपयोग के माध्यम से लोकप्रिय हुआ।<ref name="SICP">{{cite book|title=Structure and Interpretation of Computer Programs|chapter=The Metacircular Evaluator|chapter-url=http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1|publisher=MIT}}</ref><ref>{{cite web|last1=Harvey|first1=Brian|title=Why Structure and Interpretation of Computer Programs matters|url=https://people.eecs.berkeley.edu/~bh/sicp.html|website=people.eecs.berkeley.edu|accessdate=14 April 2017}}</ref>


== इतिहास ==
{{See also|History of compiler construction}}
कोराडो बोहम का शोध प्रबंध<ref>C. Böhm, Calculatrices digitales. Du déchiffrage des formules logico-mathématiques par la machine même dans la conception du programme, ''Ann. Mat. Pura Appl.'' (4) 37 (1954) 1-51</ref> [[स्व-होस्टिंग (संकलक)]]कंपाइलर)|सेल्फ-होस्टिंग कंपाइलर के डिजाइन का वर्णन करता है।
<ref>{{cite book|first1=Donald E.|last1=Knuth|author1-link=Donald Knuth|first2=Luis Trabb|last2=Pardo|title=The early development of programming languages|date=August 1976|url=https://archive.org/stream/bitsavers_stanfordcs562EarlyDevelPgmgLangAug76_5916830/STAN-CS-76-562_EarlyDevelPgmgLang_Aug76#page/n35/mode/2up|page=36}}</ref> उच्च-क्रम के कार्यों को संकलित करने में कठिनाई के कारण, इसके बजाय कई भाषाओं को दुभाषियों के माध्यम से परिभाषित किया गया, सबसे प्रमुख रूप से लिस्प।<ref name=HOP/><ref>{{cite book|chapter-url=http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf|page=10|chapter=A Universal LISP Function|date=1961|author1-link=John McCarthy (computer scientist)|first1=John|last1=McCarthy|title=Lisp 1.5 Programmer's Manual}}</ref> यह शब्द स्वयं जॉन सी. रेनॉल्ड्स द्वारा गढ़ा गया था,<ref name=HOP/>और [[कंप्यूटर प्रोग्राम की संरचना और व्याख्या]] पुस्तक में इसके उपयोग के माध्यम से लोकप्रिय हुआ।<ref name=SICP>{{cite book|title=Structure and Interpretation of Computer Programs|chapter=The Metacircular Evaluator|chapter-url=http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1|publisher=MIT}}</ref><ref>{{cite web|last1=Harvey|first1=Brian|title=Why Structure and Interpretation of Computer Programs matters|url=https://people.eecs.berkeley.edu/~bh/sicp.html|website=people.eecs.berkeley.edu|accessdate=14 April 2017}}</ref>




== स्व-दुभाषिया ==
== स्व-दुभाषिया ==


एक स्व-दुभाषिया एक मेटा-परिपत्र दुभाषिया है जहां मेजबान भाषा भी व्याख्या की जा रही भाषा है।<ref>{{cite web | title = The significance of the meta-circular interpreter | url = http://weblog.raganwald.com/2006/11/significance-of-meta-circular_22.html | date = 2006-11-22 | first1=Reginald|last1=Braithwaite| accessdate = 2011-01-22}}</ref> एक स्व-दुभाषिया विचाराधीन भाषा के लिए एक utm प्रमेय प्रदर्शित करता है, और भाषा के कुछ पहलुओं को सीखने में सहायक हो सकता है।<ref>{{cite journal|last1=Reynolds|first1=John C.|title=Definitional Interpreters Revisited|journal=Higher-Order and Symbolic Computation|date=1998|volume=11|issue=4|pages=356–7|doi=10.1023/A:1010075320153|s2cid=34126862|url=http://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-definitional-interpreters-revisited.pdf|accessdate=14 April 2017}}</ref> एक स्व-दुभाषिया अधिकांश भाषा निर्माणों की एक परिपत्र, खाली परिभाषा प्रदान करेगा और इस प्रकार व्याख्या की गई भाषा के शब्दार्थों में थोड़ी अंतर्दृष्टि प्रदान करेगा, उदाहरण के लिए [[मूल्यांकन रणनीति]]। इन मुद्दों को संबोधित करने से एक निश्चित दुभाषिया की अधिक सामान्य धारणा उत्पन्न होती है।<ref name=HOP/>
स्व-दुभाषिया एक मेटा-परिपत्र दुभाषिया है जहां होस्ट भाषा भी व्याख्या की जा रही भाषा है।<ref>{{cite web | title = The significance of the meta-circular interpreter | url = http://weblog.raganwald.com/2006/11/significance-of-meta-circular_22.html | date = 2006-11-22 | first1=Reginald|last1=Braithwaite| accessdate = 2011-01-22}}</ref> स्व-दुभाषिया विचाराधीन भाषा के लिए एक यूटीएम प्रमेय प्रदर्शित करता है, और भाषा के कुछ पहलुओं को सीखने में सहायक हो सकता है।<ref>{{cite journal|last1=Reynolds|first1=John C.|title=Definitional Interpreters Revisited|journal=Higher-Order and Symbolic Computation|date=1998|volume=11|issue=4|pages=356–7|doi=10.1023/A:1010075320153|s2cid=34126862|url=http://homepages.inf.ed.ac.uk/wadler/papers/papers-we-love/reynolds-definitional-interpreters-revisited.pdf|accessdate=14 April 2017}}</ref> स्व-दुभाषिया अधिकांश भाषा निर्माणों की एक परिपत्र, रिक्त परिभाषा प्रदान करेगा और इस प्रकार व्याख्या की गई भाषा के शब्दार्थों में थोड़ी अंतर्दृष्टि प्रदान करेगा, उदाहरण के लिए [[मूल्यांकन रणनीति]]। इन उद्देश्य को संबोधित करने से एक निश्चित दुभाषिया की अधिक सामान्य धारणा उत्पन्न होती है।<ref name=HOP/>




Line 16: Line 17:
=== कुल प्रोग्रामिंग भाषाओं में स्व-व्याख्या ===
=== कुल प्रोग्रामिंग भाषाओं में स्व-व्याख्या ===


[[कुल कार्यात्मक प्रोग्रामिंग]] भाषाएं जो दृढ़ता से सामान्यीकरण कर रही हैं, [[ट्यूरिंग पूर्ण]] नहीं हो सकती हैं, अन्यथा प्रोग्राम टाइप-चेक करता है या नहीं, यह देखकर हॉल्टिंग समस्या को हल किया जा सकता है। इसका मतलब है कि ऐसे संगणनीय कार्य हैं जिन्हें कुल भाषा में परिभाषित नहीं किया जा सकता है।<ref>{{cite book |last1=Riolo |first1=Rick |last2=Worzel |first2=William P. |last3=Kotanchek |first3=Mark |title=Genetic Programming Theory and Practice XII |date=4 June 2015 |publisher=Springer |isbn=978-3-319-16030-6|page=59 |url=https://www.google.com/books/edition/Genetic_Programming_Theory_and_Practice/rfDLCQAAQBAJ?hl=en&gbpv=1&pg=PA59 |access-date=8 September 2021 |language=en}}</ref> विशेष रूप से कुल प्रोग्रामिंग भाषा में एक स्व-दुभाषिया को परिभाषित करना असंभव है, उदाहरण के लिए किसी भी टाइप किए गए लैम्ब्डा कैलकुलस में जैसे कि सरल रूप से टाइप किए गए लैम्ब्डा कैलकुलस, [[जीन-यवेस गिरार्ड]] के [[सिस्टम एफ]], या [[थिएरी कोक्वांड]] के निर्माण के कैलकुलस।<ref>Conor McBride (May 2003), [http://www.haskell.org/pipermail/haskell-cafe/2003-May/004343.html "on termination"] (posted to the Haskell-Cafe mailing list).</ref><ref>Andrej Bauer (June 2014), [https://cstheory.stackexchange.com/q/24994 Answer to: A total language that only a Turing complete language can interpret] (posted to the Theoretical Computer Science [[StackExchange]] site)</ref> यहाँ, स्व-दुभाषिया से हमारा तात्पर्य एक ऐसे कार्यक्रम से है जो किसी सादे प्रारूप (जैसे वर्णों की एक स्ट्रिंग) में एक स्रोत शब्द का प्रतिनिधित्व करता है और संबंधित सामान्यीकृत शब्द का प्रतिनिधित्व करता है। यह असंभव परिणाम स्व-दुभाषिया की अन्य परिभाषाओं पर लागू नहीं होता है।
[[कुल कार्यात्मक प्रोग्रामिंग]] भाषाएं जो दृढ़ता से सामान्यीकरण कर रही हैं, [[ट्यूरिंग पूर्ण]] नहीं हो सकती हैं, अन्यथा प्रोग्राम टाइप-चेक करता है या नहीं, यह देखकर हॉल्टिंग समस्या को हल किया जा सकता है। इसका मतलब है कि ऐसे संगणनीय कार्य हैं जिन्हें कुल भाषा में परिभाषित नहीं किया जा सकता है।<ref>{{cite book |last1=Riolo |first1=Rick |last2=Worzel |first2=William P. |last3=Kotanchek |first3=Mark |title=Genetic Programming Theory and Practice XII |date=4 June 2015 |publisher=Springer |isbn=978-3-319-16030-6|page=59 |url=https://www.google.com/books/edition/Genetic_Programming_Theory_and_Practice/rfDLCQAAQBAJ?hl=en&gbpv=1&pg=PA59 |access-date=8 September 2021 |language=en}}</ref> विशेष रूप से कुल प्रोग्रामिंग भाषा में एक स्व-दुभाषिया को परिभाषित करना असंभव है, उदाहरण के लिए किसी भी टाइप किए गए लैम्ब्डा कैलकुलस में जैसे कि सरल रूप से टाइप किए गए लैम्ब्डा कैलकुलस, [[जीन-यवेस गिरार्ड]] के [[सिस्टम एफ|प्रणाली एफ]],या [[थिएरी कोक्वांड]] के निर्माण के कैलकुलस है।<ref>Conor McBride (May 2003), [http://www.haskell.org/pipermail/haskell-cafe/2003-May/004343.html "on termination"] (posted to the Haskell-Cafe mailing list).</ref><ref>Andrej Bauer (June 2014), [https://cstheory.stackexchange.com/q/24994 Answer to: A total language that only a Turing complete language can interpret] (posted to the Theoretical Computer Science [[StackExchange]] site)</ref> जहाँ, स्व-दुभाषिया से हमारा तात्पर्य ऐसे कार्यक्रम से है जो किसी सादे प्रारूप (जैसे वर्णों की स्ट्रिंग) में स्रोत शब्द का प्रतिनिधित्व करता है और संबंधित सामान्यीकृत शब्द का प्रतिनिधित्व करता है। यह असंभव परिणाम स्व-दुभाषिया की अन्य परिभाषाओं पर प्रयुक्त नहीं होता है।
उदाहरण के लिए, कुछ लेखकों ने प्रकार्यों का उल्लेख किया है <math>\pi\,\tau \to \tau</math> स्व-दुभाषियों के रूप में, जहां <math>\pi\,\tau</math> का प्रतिनिधित्व प्रकार है <math>\tau</math>टाइप किए गए शब्द। भ्रम से बचने के लिए, हम इन कार्यों को स्व-पहचानकर्ता के रूप में संदर्भित करेंगे।
 
ब्राउन और पाल्सबर्ग ने दिखाया कि स्व-पहचानकर्ताओं को सिस्टम एफ और सिस्टम एफ सहित कई दृढ़ता से सामान्य करने वाली भाषाओं में परिभाषित किया जा सकता है।<sub>&omega;</sub>.<ref>{{cite journal |last1=Brown |first1=Matt |last2=Palsberg |first2=Jens |title=Breaking through the normalization barrier: a self-interpreter for f-omega |journal=Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages |date=11 January 2016 |pages=5–17 |doi=10.1145/2837614.2837623 |isbn=9781450335492 |s2cid=14781370 |url=http://web.cs.ucla.edu/~palsberg/paper/popl16-full.pdf}}</ref>
उदाहरण के लिए, कुछ लेखकों ने प्रकार्यों का उल्लेख किया है <math>\pi\,\tau \to \tau</math> स्व-दुभाषियों के रूप में, जहां <math>\pi\,\tau</math> का प्रतिनिधित्व प्रकार है <math>\tau</math> टाइप किए गए शब्द। भ्रम से बचने के लिए, हम इन कार्यों को स्व-पहचानकर्ता के रूप में संदर्भित करेंगे।
 
ब्राउन और पाल्सबर्ग ने दिखाया कि स्व-पहचानकर्ताओं को प्रणाली एफ और सहित कई दृढ़ता से सामान्य करने वाली भाषाओं में परिभाषित किया जा सकता है।<ref>{{cite journal |last1=Brown |first1=Matt |last2=Palsberg |first2=Jens |title=Breaking through the normalization barrier: a self-interpreter for f-omega |journal=Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages |date=11 January 2016 |pages=5–17 |doi=10.1145/2837614.2837623 |isbn=9781450335492 |s2cid=14781370 |url=http://web.cs.ucla.edu/~palsberg/paper/popl16-full.pdf}}</ref>
 
यह संभव हो गया क्योंकि एन्कोडेड शर्तों के प्रकार उनके प्रतिनिधित्व के प्रकारों में परिलक्षित होते हैं, एक [[विकर्ण लेम्मा]] का निर्माण करने से रोकता है।
यह संभव हो गया क्योंकि एन्कोडेड शर्तों के प्रकार उनके प्रतिनिधित्व के प्रकारों में परिलक्षित होते हैं, एक [[विकर्ण लेम्मा]] का निर्माण करने से रोकता है।
अपने पेपर में, ब्राउन और पाल्सबर्ग पारंपरिक ज्ञान का खंडन करने का दावा करते हैं कि आत्म-व्याख्या असंभव है (और वे विकिपीडिया को पारंपरिक ज्ञान के उदाहरण के रूप में संदर्भित करते हैं), लेकिन वे वास्तव में जो अस्वीकार करते हैं वह आत्म-पहचानकर्ताओं की असंभवता है, एक अलग अवधारणा . अपने अनुवर्ती कार्य में, वे यहां उपयोग की जाने वाली अधिक विशिष्ट स्व-पहचानकर्ता शब्दावली पर स्विच करते हैं, विशेष रूप से इन्हें स्व-मूल्यांकनकर्ताओं से अलग करते हैं, प्रकार <math>\pi\,\tau \to \pi\,\tau</math>.<ref>{{cite journal |last1=Brown |first1=Matt |last2=Palsberg |first2=Jens |title=Typed self-evaluation via intensional type functions |journal=Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages |date=January 2017 |pages=415–428 |doi=10.1145/3009837.3009853|isbn=9781450346603 |doi-access=free }}</ref>
 
वे यह भी मानते हैं कि आत्म-मूल्यांकन को लागू करना आत्म-मान्यता की तुलना में कठिन लगता है, और पूर्व के कार्यान्वयन को एक खुली समस्या के रूप में दृढ़ता से सामान्यीकृत भाषा में छोड़ देते हैं।
अपने पेपर में, ब्राउन और पाल्सबर्ग पारंपरिक ज्ञान का खंडन करने का प्रमाणित करते हैं कि आत्म-व्याख्या असंभव है (और वे विकिपीडिया को पारंपरिक ज्ञान के उदाहरण के रूप में संदर्भित करते हैं), लेकिन वे वास्तव में जो अस्वीकार करते हैं वह आत्म-पहचानकर्ताओं की असंभवता है, एक अलग अवधारणा अपने अनुवर्ती कार्य में, वे वहा उपयोग की जाने वाली अधिक विशिष्ट स्व-पहचानकर्ता शब्दावली पर स्विच करते हैं, विशेष रूप से इन्हें स्व-मूल्यांकनकर्ताओं से अलग करते हैं, प्रकार <math>\pi\,\tau \to \pi\,\tau</math>.<ref>{{cite journal |last1=Brown |first1=Matt |last2=Palsberg |first2=Jens |title=Typed self-evaluation via intensional type functions |journal=Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages |date=January 2017 |pages=415–428 |doi=10.1145/3009837.3009853|isbn=9781450346603 |doi-access=free }}</ref>
 
वे यह भी मानते हैं कि आत्म-मूल्यांकन को प्रयुक्त करना आत्म-मान्यता की तुलना में कठिन लगता है, और पूर्व के कार्यान्वयन को एक खुली समस्या के रूप में दृढ़ता से सामान्यीकृत भाषा में छोड़ देते हैं।


== उपयोग ==
== उपयोग ==


एक मौजूदा भाषा कार्यान्वयन के संयोजन में, मेटा-सर्कुलर दुभाषिए एक आधारभूत प्रणाली प्रदान करते हैं जिससे किसी भाषा का विस्तार किया जा सकता है, या तो अधिक सुविधाओं को जोड़कर ऊपर की ओर या उनकी व्याख्या करने के बजाय सुविधाओं को संकलित करके नीचे की ओर।<ref>{{cite book|last1=Oriol|first1=Manuel|last2=Meyer|first2=Bertrand|title=Objects, Components, Models and Patterns: 47th International Conference, TOOLS EUROPE 2009, Zurich, Switzerland, June 29-July 3, 2009, Proceedings|publisher=Springer Science & Business Media|isbn=9783642025716|page=330|url=https://books.google.com/books?id=6RAlcYFn1SAC&dq=meta+circular&pg=PA330|accessdate=14 April 2017|language=en|date=2009-06-29}}</ref> वे उपकरण लिखने के लिए भी उपयोगी होते हैं जो प्रोग्रामिंग भाषा के साथ कसकर एकीकृत होते हैं, जैसे परिष्कृत डिबगर्स।{{citation needed|date=April 2017}} एक मेटा-सर्कुलर कार्यान्वयन को ध्यान में रखते हुए डिज़ाइन की गई भाषा अक्सर सामान्य रूप से भाषाओं के निर्माण के लिए अधिक अनुकूल होती है, यहां तक ​​कि मेजबान भाषा से पूरी तरह से अलग भी।{{citation needed|date=April 2017}}
एक वर्तमान भाषा कार्यान्वयन के संयोजन में, मेटा-सर्कुलर दुभाषिए एक आधारभूत प्रणाली प्रदान करते हैं जिससे किसी भाषा का विस्तार किया जा सकता है, या तो अधिक सुविधाओं को जोड़कर ऊपर की ओर या उनकी व्याख्या करने के अतिरिक्त    सुविधाओं को संकलित करके नीचे की ओर।<ref>{{cite book|last1=Oriol|first1=Manuel|last2=Meyer|first2=Bertrand|title=Objects, Components, Models and Patterns: 47th International Conference, TOOLS EUROPE 2009, Zurich, Switzerland, June 29-July 3, 2009, Proceedings|publisher=Springer Science & Business Media|isbn=9783642025716|page=330|url=https://books.google.com/books?id=6RAlcYFn1SAC&dq=meta+circular&pg=PA330|accessdate=14 April 2017|language=en|date=2009-06-29}}</ref> वे उपकरण लिखने के लिए भी उपयोगी होते हैं जो प्रोग्रामिंग भाषा के साथ कसकर एकीकृत होते हैं, जैसे परिष्कृत डिबगर्स। एक मेटा-सर्कुलर कार्यान्वयन को ध्यान में रखते हुए डिज़ाइन की गई भाषा अधिकांशतः    सामान्य रूप से भाषाओं के निर्माण के लिए अधिक अनुकूल होती है, यहां तक ​​कि होस्ट    भाषा से पूरी तरह से अलग होती है
 




== उदाहरण ==
== उदाहरण ==
<!-- NOTE TO FUTURE EDITORS: these are by no means complete or even particularly informed lists -->
 
{{More citations needed|section|date=September 2008}}
कई भाषाओं में एक या अधिक मेटा-सर्कुलर कार्यान्वयन होते हैं। यहाँ नीचे आंशिक सूची है।
कई भाषाओं में एक या अधिक मेटा-सर्कुलर कार्यान्वयन होते हैं। यहाँ नीचे एक आंशिक सूची है।


समूहीकृत कालानुक्रमिक क्रम में नीचे से ऊपर की ओर डिज़ाइन किए गए मेटा-परिपत्र कार्यान्वयन वाली कुछ भाषाएँ:
समूहीकृत कालानुक्रमिक क्रम में नीचे से ऊपर की ओर डिज़ाइन किए गए मेटा-परिपत्र कार्यान्वयन वाली कुछ भाषाएँ:
Line 42: Line 48:
** [[पोस्टस्क्रिप्ट (प्रोग्रामिंग भाषा)]], 1982
** [[पोस्टस्क्रिप्ट (प्रोग्रामिंग भाषा)]], 1982
* [[प्रोलॉग]], 1972
* [[प्रोलॉग]], 1972
* [[TeX]], वर्जिन TeX, 1978 पर आधारित है
* [[TeX|टेक्स]], वर्जिन टेक्स, 1978 पर आधारित है
* स्मॉलटॉक, 1980
* स्मॉलटॉक, 1980
* [[रिबोल]], 1997
* [[रिबोल]], 1997
** लाल (प्रोग्रामिंग_भाषा), 2011
** लाल (प्रोग्रामिंग भाषा), 2011
* फैक्टर (प्रोग्रामिंग भाषा), 2003
* फैक्टर (प्रोग्रामिंग भाषा), 2003


तृतीय पक्षों के माध्यम से मेटा-सर्कुलर कार्यान्वयन वाली कुछ भाषाएँ:
तृतीय पक्षों के माध्यम से मेटा-सर्कुलर कार्यान्वयन वाली कुछ भाषाएँ:
* [[जावा (प्रोग्रामिंग भाषा)]] [[जैक्स आरवीएम]], [[स्क्वॉक वर्चुअल मशीन]], [[मैक्सिन वर्चुअल मशीन]] या [https://medium.com/graalvm/java-on-truffle-coming-fully-metacircular-215531e3f840 GraalVM's एस्प्रेसो] के माध्यम से
* [[जावा (प्रोग्रामिंग भाषा)]] [[जैक्स आरवीएम]], [[स्क्वॉक वर्चुअल मशीन]], [[मैक्सिन वर्चुअल मशीन]] या [https://medium.com/graalvm/java-on-truffle-coming-fully-metacircular-215531e3f840 ग्रेल वीएम एस्प्रेसो] के माध्यम से
* [[स्काला (प्रोग्रामिंग भाषा)]] [https://github.com/lihaoyi/Metascala Metascala] के माध्यम से
* [[स्काला (प्रोग्रामिंग भाषा)]] मेटास्काला के माध्यम से
* नार्सिसस के माध्यम से [[जावास्क्रिप्ट]] या [https://github.com/NeilFraser/JS-Interpreter JS-Interpreter]
* नार्सिसस के माध्यम से [[जावास्क्रिप्ट]] या [https://github.com/NeilFraser/JS-Interpreter जेएस-दुभाषिया]
* ओज़ (प्रोग्रामिंग भाषा) ग्लिंडा के माध्यम से
* ओज़ (प्रोग्रामिंग भाषा) ग्लिंडा के माध्यम से
* [[पायथन (प्रोग्रामिंग भाषा)]] [[PyPy]] के माध्यम से
* [[पायथन (प्रोग्रामिंग भाषा)]] [[PyPy|पाई पाई]] के माध्यम से
* [[रूबी (प्रोग्रामिंग भाषा)]] [[Rubinius]] के माध्यम से
* [[रूबी (प्रोग्रामिंग भाषा)]] [[Rubinius|रुबिनियस]] के माध्यम से
* [[लुआ (प्रोग्रामिंग भाषा)]] [[धातु]] के माध्यम से
* [[लुआ (प्रोग्रामिंग भाषा)]] [[धातु]] के माध्यम से


Line 60: Line 66:
* [[एम-अभिव्यक्ति]]
* [[एम-अभिव्यक्ति]]
* [[समजातीयता]]
* [[समजातीयता]]
* सेल्फ-होस्टिंग (कंपाइलर) | सेल्फ-होस्टिंग कंपाइलर
* सेल्फ-होस्टिंग (कंपाइलर) सेल्फ-होस्टिंग कंपाइलर


==संदर्भ==
==संदर्भ==
Line 69: Line 75:
* [http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html Structure and Interpretation of Computer Programs (SICP)], online version of full book, accessed 2009-01-18.
* [http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html Structure and Interpretation of Computer Programs (SICP)], online version of full book, accessed 2009-01-18.
* [https://github.com/lihaoyi/Metascala Metascala]
* [https://github.com/lihaoyi/Metascala Metascala]
[[Category: प्रोग्रामिंग भाषा कार्यान्वयन]]


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:प्रोग्रामिंग भाषा कार्यान्वयन]]

Latest revision as of 15:13, 14 September 2023

कम्प्यूटिंग में, एक मेटा-सर्कुलर मूल्यांकनकर्ता (एमसीई) या मेटा-सर्कुलर दुभाषिया (एमसीआई) एक दुभाषिया (कंप्यूटिंग) है जो दुभाषिया की होस्ट भाषा की समान सुविधा का उपयोग करके व्याख्या की गई भाषा की प्रत्येक विशेषता को परिभाषित करता है। उदाहरण के लिए, लैम्ब्डा एप्लिकेशन की व्याख्या फ़ंक्शन एप्लिकेशन का उपयोग करके प्रयुक्त की जा सकती है।[1] लिस्प (प्रोग्रामिंग भाषा) के संदर्भ में मेटा-सर्कुलर मूल्यांकन सबसे प्रमुख है।[1] स्व-दुभाषिया मेटा-सर्कुलर दुभाषिया है जहां व्याख्या की गई भाषा लगभग होस्ट भाषा के समान होती है; दो शब्दों को अधिकांशतः समानार्थक रूप से प्रयोग किया जाता है।[2]

इतिहास

कोराडो बोहम का शोध प्रबंध[3] स्व-होस्टिंग (संकलक)कंपाइलर सेल्फ-होस्टिंग कंपाइलर के डिजाइन का वर्णन करता है।

[4] उच्च-क्रम के कार्यों को संकलित करने में कठिनाई के कारण, इसके अतिरिक्त कई भाषाओं को दुभाषियों के माध्यम से परिभाषित किया गया, सबसे प्रमुख रूप से लिस्प।[1][5] यह शब्द स्वयं जॉन सी. रेनॉल्ड्स द्वारा गढ़ा गया था,[1] और कंप्यूटर प्रोग्राम की संरचना और व्याख्या पुस्तक में इसके उपयोग के माध्यम से लोकप्रिय हुआ।[2][6]


स्व-दुभाषिया

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


कुल प्रोग्रामिंग भाषाओं में स्व-व्याख्या

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

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

ब्राउन और पाल्सबर्ग ने दिखाया कि स्व-पहचानकर्ताओं को प्रणाली एफ और सहित कई दृढ़ता से सामान्य करने वाली भाषाओं में परिभाषित किया जा सकता है।[12]

यह संभव हो गया क्योंकि एन्कोडेड शर्तों के प्रकार उनके प्रतिनिधित्व के प्रकारों में परिलक्षित होते हैं, एक विकर्ण लेम्मा का निर्माण करने से रोकता है।

अपने पेपर में, ब्राउन और पाल्सबर्ग पारंपरिक ज्ञान का खंडन करने का प्रमाणित करते हैं कि आत्म-व्याख्या असंभव है (और वे विकिपीडिया को पारंपरिक ज्ञान के उदाहरण के रूप में संदर्भित करते हैं), लेकिन वे वास्तव में जो अस्वीकार करते हैं वह आत्म-पहचानकर्ताओं की असंभवता है, एक अलग अवधारणा अपने अनुवर्ती कार्य में, वे वहा उपयोग की जाने वाली अधिक विशिष्ट स्व-पहचानकर्ता शब्दावली पर स्विच करते हैं, विशेष रूप से इन्हें स्व-मूल्यांकनकर्ताओं से अलग करते हैं, प्रकार .[13]

वे यह भी मानते हैं कि आत्म-मूल्यांकन को प्रयुक्त करना आत्म-मान्यता की तुलना में कठिन लगता है, और पूर्व के कार्यान्वयन को एक खुली समस्या के रूप में दृढ़ता से सामान्यीकृत भाषा में छोड़ देते हैं।

उपयोग

एक वर्तमान भाषा कार्यान्वयन के संयोजन में, मेटा-सर्कुलर दुभाषिए एक आधारभूत प्रणाली प्रदान करते हैं जिससे किसी भाषा का विस्तार किया जा सकता है, या तो अधिक सुविधाओं को जोड़कर ऊपर की ओर या उनकी व्याख्या करने के अतिरिक्त सुविधाओं को संकलित करके नीचे की ओर।[14] वे उपकरण लिखने के लिए भी उपयोगी होते हैं जो प्रोग्रामिंग भाषा के साथ कसकर एकीकृत होते हैं, जैसे परिष्कृत डिबगर्स। एक मेटा-सर्कुलर कार्यान्वयन को ध्यान में रखते हुए डिज़ाइन की गई भाषा अधिकांशतः सामान्य रूप से भाषाओं के निर्माण के लिए अधिक अनुकूल होती है, यहां तक ​​कि होस्ट भाषा से पूरी तरह से अलग होती है


उदाहरण

कई भाषाओं में एक या अधिक मेटा-सर्कुलर कार्यान्वयन होते हैं। यहाँ नीचे आंशिक सूची है।

समूहीकृत कालानुक्रमिक क्रम में नीचे से ऊपर की ओर डिज़ाइन किए गए मेटा-परिपत्र कार्यान्वयन वाली कुछ भाषाएँ:

फोर्थ (प्रोग्रामिंग भाषा), 1968

तृतीय पक्षों के माध्यम से मेटा-सर्कुलर कार्यान्वयन वाली कुछ भाषाएँ:

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 1.3 1.4 Reynolds, John C. (August 1972). "Definitional Interpreters for Higher-Order Programming Languages" (PDF). Higher-Order and Symbolic Computation. 11 (4): 363–397. doi:10.1023/A:1010027404223. S2CID 43352033. Archived from the original (PDF) on 9 August 2017. Retrieved 14 April 2017.
  2. 2.0 2.1 "The Metacircular Evaluator". Structure and Interpretation of Computer Programs. MIT.
  3. C. Böhm, Calculatrices digitales. Du déchiffrage des formules logico-mathématiques par la machine même dans la conception du programme, Ann. Mat. Pura Appl. (4) 37 (1954) 1-51
  4. Knuth, Donald E.; Pardo, Luis Trabb (August 1976). The early development of programming languages. p. 36.
  5. McCarthy, John (1961). "A Universal LISP Function" (PDF). Lisp 1.5 Programmer's Manual. p. 10.
  6. Harvey, Brian. "Why Structure and Interpretation of Computer Programs matters". people.eecs.berkeley.edu. Retrieved 14 April 2017.
  7. Braithwaite, Reginald (2006-11-22). "The significance of the meta-circular interpreter". Retrieved 2011-01-22.
  8. Reynolds, John C. (1998). "Definitional Interpreters Revisited" (PDF). Higher-Order and Symbolic Computation. 11 (4): 356–7. doi:10.1023/A:1010075320153. S2CID 34126862. Retrieved 14 April 2017.
  9. Riolo, Rick; Worzel, William P.; Kotanchek, Mark (4 June 2015). Genetic Programming Theory and Practice XII (in English). Springer. p. 59. ISBN 978-3-319-16030-6. Retrieved 8 September 2021.
  10. Conor McBride (May 2003), "on termination" (posted to the Haskell-Cafe mailing list).
  11. Andrej Bauer (June 2014), Answer to: A total language that only a Turing complete language can interpret (posted to the Theoretical Computer Science StackExchange site)
  12. Brown, Matt; Palsberg, Jens (11 January 2016). "Breaking through the normalization barrier: a self-interpreter for f-omega" (PDF). Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages: 5–17. doi:10.1145/2837614.2837623. ISBN 9781450335492. S2CID 14781370.
  13. Brown, Matt; Palsberg, Jens (January 2017). "Typed self-evaluation via intensional type functions". Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages: 415–428. doi:10.1145/3009837.3009853. ISBN 9781450346603.
  14. Oriol, Manuel; Meyer, Bertrand (2009-06-29). Objects, Components, Models and Patterns: 47th International Conference, TOOLS EUROPE 2009, Zurich, Switzerland, June 29-July 3, 2009, Proceedings (in English). Springer Science & Business Media. p. 330. ISBN 9783642025716. Retrieved 14 April 2017.
  15. Meta-circular implementation of the Pico programming language


बाहरी संबंध