मैं इस प्रश्न को पूछने के लिए सही शब्दावली नहीं जानता, इसलिए मैं इसके बजाय बहुत सारे शब्दों के साथ इसका वर्णन करूंगा।
पृष्ठभूमि , बस इसलिए हम एक ही पृष्ठ पर हैं: प्रोग्राम में अक्सर कैश होते हैं - एक समय / मेमोरी ट्रेडऑफ़। एक सामान्य प्रोग्रामर की गलती यह है कि वह अपने अपस्ट्रीम स्रोतों / मिसालों में से एक को बदलने के बाद कैश्ड वैल्यू को अपडेट करना न भूलें। लेकिन डेटाफ्लो या एफआरपी प्रोग्रामिंग प्रतिमान ऐसी गलतियों के लिए प्रतिरक्षा है। यदि हमारे पास कई शुद्ध कार्य हैं, और उन्हें एक साथ निर्भर निर्भरता ग्राफ में जोड़ते हैं, तो नोड्स में उनके आउटपुट मूल्य को कैश किया जा सकता है और फ़ंक्शन के किसी भी इनपुट को बदलने तक फिर से उपयोग किया जा सकता है। यह सिस्टम आर्किटेक्चर पेपर कैशिंग इन डाटाफ्लो-आधारित वातावरण में वर्णित है और अनिवार्य भाषा में यह संस्मरण के अनुरूप कम या ज्यादा है।
समस्या : जब किसी फ़ंक्शन के इनपुट में से एक में परिवर्तन होता है, तो हमें अभी भी फ़ंक्शन को संपूर्ण रूप से निष्पादित करना होगा, इसके कैश्ड आउटपुट को फेंकना और स्क्रैच से पुनः गणना करना। कई मामलों में, यह मुझे बेकार लगता है। एक सरल उदाहरण पर विचार करें जो "शीर्ष 5 जो भी" सूची उत्पन्न करता है। इनपुट डेटा जो कुछ भी है उसकी एक अनसुलझी सूची है। यह एक फ़ंक्शन के इनपुट के रूप में पारित किया गया है जो एक क्रमबद्ध सूची को आउटपुट करता है। बदले में एक फ़ंक्शन के लिए इनपुट है जो केवल पहले 5 आइटम लेता है। छद्मकोड में:
input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45]
intermediate = sort(input)
final_output = substring(intermediate, 0, 5)
सॉर्ट फ़ंक्शन की जटिलता ओ (एन लॉग एन) है। लेकिन विचार करें कि यह प्रवाह एक एप्लिकेशन में उपयोग किया जाता है जहां इनपुट केवल 1 तत्व को जोड़कर एक समय में थोड़ा बदल जाता है। हर बार खरोंच से फिर से छांटने के बजाय, यह तेजी से होगा, वास्तव में ओ (एन), एक फ़ंक्शन का उपयोग करने के लिए जो पुराने कैश्ड सॉर्ट की गई सूची को नए तत्व को सही स्थिति में डालकर अपडेट करता है। यह सिर्फ एक उदाहरण है - कई "खरोंच से" कार्यों में ऐसे "वृद्धिशील अद्यतन" समकक्ष हैं। इसके अलावा, हो सकता है कि नया जोड़ा गया तत्व अंतिम रूप में भी प्रदर्शित नहीं होगा क्योंकि यह 5 वें स्थान के बाद है।
मेरे अंतर्ज्ञान से यह पता चलता है कि किसी भी तरह के "वृद्धिशील अद्यतन" फ़ंक्शन को डेटाफ़्लो सिस्टम में जोड़ना संभव हो सकता है, मौजूदा "खरोंच से" कार्यों के साथ-साथ। बेशक, खरोंच से सब कुछ फिर से गणना करना हमेशा वृद्धिशील अपडेट के एक झुंड के रूप में एक ही परिणाम देना चाहिए। सिस्टम में यह गुण होना चाहिए कि यदि प्रत्येक व्यक्ति आदिम FromScratch-Incremental जोड़े हमेशा एक ही परिणाम देते हैं, तो उनसे निर्मित बड़े समग्र कार्य भी स्वचालित रूप से एक ही परिणाम देना चाहिए।
प्रश्न : क्या यह संभव है कि एक प्रणाली / वास्तुकला / प्रतिमान / मेटा-एल्गोरिथ्म जो FromScratch कार्यों और उनके इंक्रीमेंटल समकक्षों दोनों का समर्थन कर सकता है, दक्षता के लिए सहयोग कर सकता है और बड़े प्रवाह में रचना कर सकता है? यदि नहीं, तो क्यों? यदि किसी ने इस प्रतिमान पर पहले से ही शोध कर लिया है और उसे प्रकाशित कर दिया है, तो उसे क्या कहा जाता है, और क्या मुझे इस बात का संक्षिप्त सारांश मिल सकता है कि यह कैसे काम करता है?