আমি এই প্রশ্নটি জিজ্ঞাসা করার জন্য সঠিক পরিভাষা জানি না, তাই আমি পরিবর্তে এটি প্রচুর শব্দ দিয়ে বর্ণনা করব, আমার সাথে সহ্য করুন।
পটভূমি , ঠিক তাই আমরা একই পৃষ্ঠায় আছি: প্রোগ্রামগুলিতে প্রায়শই ক্যাশে থাকে - একটি সময় / মেমরি ট্রেড অফ। একটি সাধারণ প্রোগ্রামারের ভুল হ'ল তার প্রবাহের উত্স / নজিরগুলির কোনও পরিবর্তন করার পরে ক্যাশেড মান আপডেট করতে ভুলে যাওয়া। তবে ডেটাফ্লো বা এফআরপি প্রোগ্রামিং দৃষ্টান্ত এ জাতীয় ভুল থেকে প্রতিরোধক। যদি আমাদের বেশ কয়েকটি খাঁটি ফাংশন থাকে এবং এগুলি একটি নির্দেশিত নির্ভরতা গ্রাফের সাথে একসাথে সংযুক্ত করি, তবে নোডগুলি ফাংশনের ইনপুটগুলির কোনও পরিবর্তন না হওয়া পর্যন্ত তাদের আউটপুট মান ক্যাশেড এবং পুনরায় ব্যবহার করতে পারে। এই সিস্টেমের আর্কিটেকচারটি ডেটাফ্লো-ভিত্তিক পরিবেশে ক্যাশিং কাগজে বর্ণিত হয়েছে এবং একটি আবশ্যক ভাষায় এটি কমবেশি স্মৃতিচারণের সাথে সাদৃশ্যপূর্ণ।
সমস্যা : যখন কোনও ফাংশনের ইনপুটগুলির কোনও পরিবর্তন হয়, তখনও আমাদের সম্পূর্ণরূপে ফাংশনটি সম্পাদন করতে হবে, এর ক্যাশেড আউটপুট ফেলে দিয়ে এবং স্ক্র্যাচ থেকে পুনরায় গণনা করতে হবে। অনেক ক্ষেত্রেই এটি আমার কাছে অপচয় নয় বলে মনে হয়। একটি সরল উদাহরণ বিবেচনা করুন যা "শীর্ষ 5 যাই হোক না কেন" তালিকা উত্পন্ন করে। ইনপুট ডেটা যা কিছু হোক না কেন তার একটি অরসেটেড তালিকা। এটি কোনও ফাংশনে ইনপুট হিসাবে পাস হয়েছে যা একটি সাজানো তালিকার আউটপুট দেয়। যার পরিবর্তে কোনও ফাংশনে ইনপুট হয় যা কেবল প্রথম 5 টি আইটেম নেয়। সিউডোকোডে:
input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45]
intermediate = sort(input)
final_output = substring(intermediate, 0, 5)
বাছাই ফাংশনের জটিলতা হ'ল হে (এন লগ এন)। তবে বিবেচনা করুন যে এই প্রবাহটি এমন একটি অ্যাপ্লিকেশনটিতে ব্যবহৃত হয় যেখানে 1 টি উপাদান যুক্ত করে ইনপুট একবারে কিছুটা পরিবর্তন হয়। প্রতিবার স্ক্র্যাচ থেকে পুনরায় বাছাই করার পরিবর্তে, আসলে (ও), এমন একটি ফাংশন ব্যবহার করা দ্রুত হবে যা নতুন অবস্থাকে সঠিক অবস্থানে byুকিয়ে পুরানো ক্যাশেড সাজানো তালিকার আপডেট করে। এটি কেবলমাত্র একটি উদাহরণ - অনেকগুলি "স্ক্র্যাচ থেকে" ফাংশনগুলিতে এই জাতীয় "ইনক্রিমেন্টাল আপডেট" অংশ থাকে। এছাড়াও, সম্ভবত নতুন যুক্ত হওয়া উপাদানটি চূড়ান্ত_আউটপুটে উপস্থিত হবে না কারণ এটি 5 তম অবস্থানের পরে।
আমার অন্তর্নিহিত পরামর্শ দেয় কোনও উপায়ে বিদ্যমান "স্ক্র্যাচ থেকে" ফাংশনগুলির পাশাপাশি পাশাপাশি কোনও ডেটাফ্লো সিস্টেমে এ জাতীয় "ইনক্রিমেন্টাল আপডেট" ফাংশন যুক্ত করা সম্ভব হতে পারে। অবশ্যই, স্ক্র্যাচ থেকে সমস্ত কিছু পুনরায় গণনা করা বরাবরই বর্ধনীয় আপডেটগুলি করার গোছা হিসাবে একই ফলাফল দিতে হবে। সিস্টেম সম্পত্তি থাকা উচিত যদি পৃথক আদিম FromScratch-ক্রমবর্ধমান জোড়া প্রতিটি সবসময় একই ফলাফল দিতে, তারপর বড় যৌগিক তাদের কাছ থেকে নির্মিত ফাংশন স্বয়ংক্রিয়ভাবে একই ফলাফল দিতে হবে।
প্রশ্ন : এমন কোনও সিস্টেম / আর্কিটেকচার / প্যারাডিজম / মেটা-অ্যালগোরিদম থাকা কি সম্ভব যা ফায়ারস্ক্র্যাচ ফাংশন এবং তাদের বর্ধমান সমকক্ষ উভয়কেই সমর্থন করতে পারে, দক্ষতার জন্য সহযোগিতা করতে পারে এবং বৃহত প্রবাহকে সমন্বিত করতে পারে? তা না হলে কেন? যদি কেউ ইতিমধ্যে এই দৃষ্টান্তটি নিয়ে গবেষণা করে প্রকাশ করেছে, এটি কী বলা হয় এবং কীভাবে এটি কাজ করে তার একটি সংক্ষিপ্তসার আমি পেতে পারি?