Mirroring Call-by-Need, or Values Acting Silly
यह शोध पत्र एक क्षयित (degenerated) "कॉल-बाय-सिली" (call-by-silly) कैलकुलस प्रस्तुत करता है जो कॉल-बाय-नेम और कॉल-बाय-वैल्यू के सबसे बुरे पहलुओं को सममित रूप से संयोजित करता है ताकि यह प्रदर्शित किया जा सके कि कॉल-बाय-वैल्यू की प्रासंगिक तुल्यता (contextual equivalence) दक्षता के प्रति अंध है, और साथ ही एक संगत रणनीति, एब्स्ट्रैक्ट मशीन, और एक सटीक मल्टी-टाइप सिस्टम भी प्रदान करता है जो यह सिद्ध करता है कि यह अधिकतम लंबाई वाले मूल्यांकन अनुक्रमों (evaluation sequences) की गणना करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक हलचल भरी रसोई में एक शेफ हैं, जो एक जटिल व्यंजन तैयार करने का सबसे कुशल तरीका खोजने की कोशिश कर रहे हैं। कंप्यूटर विज्ञान की दुनिया में, विशेष रूप से "प्रोग्रामिंग लैंग्वेज थ्योरी" नामक एक क्षेत्र में, शेफ वास्तव में गणितज्ञ और तर्कशास्त्री होते हैं जो यह अध्ययन करते हैं कि जब कंप्यूटर कोड चलाते हैं तो वे कैसे "सोचते" हैं। वे खाना नहीं पका रहे होते हैं, बल्कि प्रतीकों और निर्देशों का हेरफेर कर रहे होते हैं। केंद्रीय प्रश्न जो वे पूछते हैं, वह है: "जब कंप्यूटर किसी कार्य को देखता है, तो क्या उसे काम तुरंत कर देना चाहिए, या उसे तब तक इंतजार करना चाहिए जब तक कि उसे इसकी बिल्कुल आवश्यकता न हो?"
इसे समझने के लिए, दो अलग-अलग खाना पकाने की शैलियों की कल्पना करें। पहली शैली, जिसे "कॉल-बाय-नेम" (Call-by-Name) कहा जाता है, एक आलसी शेफ की तरह है जो तब तक प्याज काटने से इनकार करता है जब तक कि रेसिपी स्पष्ट रूप से इसकी मांग न करे। यदि रेसिपी कहती है "प्याज को फेंक दें", तो आलसी शेफ चाकू तक नहीं उठाता, जिससे समय और प्रयास बच जाता है। यह चीजों को फेंकने (इरेज़िंग) के मामले में "बुद्धिमान" है, लेकिन काटने के मामले में "मूर्ख" है, क्योंकि यदि रेसिपी में एक ही प्याज के लिए दो बार पूछा जाता है, तो आलसी शेफ उसे दो बार काटता है, जिससे समय बर्बाद होता है। दूसरी शैली, "कॉल-बाय-वैल्यू" (Call-by-Value) की तरह है, जो एक अति-तैयार शेफ की तरह है जो रेसिपी शुरू होने से पहले ही हर एक सामग्री को तुरंत काट देता है। यह काटने (डुप्लिकेटिंग) के मामले में "बुद्धिमान" है क्योंकि वे इसे केवल एक बार करते हैं, लेकिन चीजों को फेंकने के मामले में "मूर्ख" है, क्योंकि वे उस प्याज को भी काट सकते हैं जिसे रेसिपी बाद में अनदेखा करने के लिए कह सकती है।
दशकों से, वैज्ञानिक एक तीसरी शैली से मंत्रमुग्ध रहे हैं जिसे "कॉल-बाय-नीड" (Call-by-Need) कहा जाता है, जो एक आदर्श शेफ बनने की कोशिश करती है: वह तब तक प्रतीक्षा करती है जब तक आवश्यक न हो जाए (बुद्धिमान इरेज़िंग) लेकिन आवश्यकता पड़ने पर केवल एक बार ही काटती है (बुद्धिमान डुप्लिकेटिंग)। लेकिन क्या होगा यदि हम इसके ठीक विपरीत का अध्ययन करना चाहें? क्या होगा यदि हम देखना चाहें कि क्या होता है जब एक शेफ काटने और चीजों को फेंकने, दोनों में ही बेहद खराब हो? यही वह विचित्र और आनंदमय प्रश्न है जिसका उत्तर "मिररिंग कॉल-बाय-नीड, और वैल्यूज एक्टिंग सिली" (Mirroring Call-by-Need, or Values Acting Silly) नामक शोध पत्र तय करता है।
लेखक, बेनिएमिनो अकाटोली और एड्रिएन लैंसेल, जानबूझकर एक अक्षम खाना पकाने की शैली का डिजाइन तैयार करते हैं जिसे वे "कॉल-बाय-सिली" (Call-by-Silly) कहते हैं। इस दुनिया में, शेफ उन सामग्रियों को भी काटता है जिनका उपयोग कभी नहीं किया जाता (मूर्ख डुप्लिकेटिंग) और उन सामग्रियों को भी फेंक देता है जिन्हें अभी तक काटा भी नहीं गया है (मूर्ख इरेज़िंग)। यह आपदा का नुस्खा लगता है, और लेखक स्वीकार करते हैं कि यह "बेहद अक्षम" है। हालांकि, उन्हें एक अच्छा व्यंजन बनाने की परवाह नहीं है; उन्हें रसोई के नियमों को समझने की परवाह है। इस "मूर्ख" प्रणाली को बनाकर, वे यह सिद्ध कर सकते हैं कि "बुद्धिमान" प्रणाली (कॉल-बाय-नीड) वास्तव में आलसी वाले का एक सटीक अनुकूलन (ऑप्टिमाइज़ेशन) है, और वे कुछ आश्चर्यजनक भी खोजते हैं जो "तैयार" प्रणाली (कॉल-बाय-वैल्यू) के बारे में है।
यह शोध पत्र सिद्ध करता है कि यदि आप व्यंजन के अंतिम परिणाम को देखते हैं, तो "तैयार" शेफ (कॉल-बाय-वैल्यू) और "मूर्ख" शेफ (कॉल-बाय-सिली) वास्तव में बिल्कुल समान परिणाम उत्पन्न करते हैं, भले ही मूर्ख शेफ ने बहुत सारा अनावश्यक काम किया हो। यह उस छिपे हुए अंधे धब्बे को प्रकट करता है जिसे हम आमतौर पर कंप्यूटर प्रोग्रामों को मापने के लिए उपयोग करते हैं: मानक तरीका यह जांचने का कि दो प्रोग्राम "समान" हैं, यह नहीं बता सकता कि एक स्मार्ट शेफ और एक मूर्ख शेफ के बीच क्या अंतर है यदि एकमात्र अंतर यह है कि उन्होंने कितना अतिरिक्त काम किया। यह पता चलता है कि एक शुद्ध, प्रभाव-मुक्त रसोई में, समानता के मानक नियम "दक्षता के प्रति अंधे" होते हैं।
इसे सिद्ध करने के लिए, लेखकों ने केवल अनुमान नहीं लगाया; उन्होंने एक गणितीय मशीन बनाई, एक प्रकार का "रोबोट शेफ" जिसे "सिली एमएएम" (Silly MAM) कहा जाता है, जो मूर्ख नियमों का चरण-दर-चरण पालन करता है। उन्होंने "मल्टी-टाइप्स" (सोचिए कि यह एक बहुत ही विस्तृत रेसिपी कार्ड है जो ट्रैक करता है कि किसी सामग्री को कितनी बार छुआ गया है) का उपयोग करके एक विशेष गिनती प्रणाली भी बनाई। उन्होंने इस प्रणाली का उपयोग करके मूर्ख रोबोट द्वारा लिए गए प्रत्येक चरण को गिना। उन्होंने पाया कि मूर्ख रणनीति कार्य पूरा करने के लिए सबसे लंबा रास्ता लेती है। जबकि कॉल-बाय-नीड रोबोट सबसे छोटा रास्ता लेता है, कॉल-बाय-सिली रोबोट संभव चरणों की अधिकतम संख्या लेता है।
यह शोध पत्र एक कठोर गणितीय प्रमाण है, न कि केवल एक सिमुलेशन। लेखकों ने एक नया कैलकुलस (प्रतीकों के हेरफेर के लिए नियमों का एक सेट) बनाया है, यह सिद्ध किया है कि यह सुसंगत व्यवहार करता है, और चरणों की सटीक संख्या को मापने के लिए एक औपचारिक टाइप सिस्टम का उपयोग किया है। उन्होंने दिखाया है कि उनकी "मूर्ख" प्रणाली, नीड (Need) प्रणाली का एक सटीक दर्पण प्रतिबिंब है। जिस तरह "नीड" प्रणाली दो दुनियाओं के सर्वश्रेष्ठ का संयोजन करती है, "सिली" प्रणाली दो दुनियाओं के सबसे बुरे का संयोजन करती है।
सबसे महत्वपूर्ण निष्कर्ष यह है कि यह "मर्दक" (Silly) व्यवहार मानक "कॉल-बाय-वैल्यू" भाषाओं के लिए प्रोग्राम समानता को परिभाषित करने में एक सीमा को उजागर करता है। शोध पत्र प्रदर्शित करता है कि दो प्रोग्राम गणितीय रूप से समकक्ष हो सकते हैं भले ही एक बहुत सारा बेकार काम कर रहा हो और दूसरा बिल्कुल नहीं, बशर्ते वे बाहरी दुनिया (जैसे फ़ाइल बदलना या स्क्रीन पर प्रिंट करना) के साथ इंटरैक्ट न करें। यह सुझाव देता है कि हमारे प्रोग्रामों को "समान" जांचने के वर्तमान उपकरण एक महत्वपूर्ण विवरण को छोड़ सकते हैं: वे बर्बाद किए गए प्रयास को नहीं गिनते हैं।
अंत में, यह शोध पत्र हमें "मूर्ख" कोड लिखना शुरू करने के लिए नहीं कहता है। इसके बजाय, यह कुशल प्रणालियों को बेहतर ढंग से समझने के लिए इस विचित्र, अक्षम प्रणाली का उपयोग एक दर्पण के रूप में करता है। यह हमें दिखाता है कि जबकि "कॉल-बाय-नीड" एक शानदार अनुकूलन है, "कॉल-बाय-वैल्यू" में समानता को देखने के तरीके में एक छिपा हुआ दोष है: इसे इस बात की परवाह नहीं है कि आप स्मार्ट हैं या मूर्ख, जब तक कि आप काम पूरा कर देते हैं। लेखकों ने सफलतापूर्वक कंप्यूटर विज्ञान के मानचित्र में एक "मूर्ख" कोना बनाया है ताकि हम परिदृश्य को अधिक स्पष्ट रूप से देख सकें, यह सिद्ध करते हुए कि कभी-कभी, कुछ करने के सबसे अच्छे तरीके को समझने के लिए, आपको करने के सबसे बुरे तरीके का अध्ययन करना पड़ता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।