বৈজ্ঞানিক কম্পিউটিংয়ে ব্যবহৃত অনেক অ্যালগরিদমে সাধারণত সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের কম গণিত-নিবিড় ফর্ম হিসাবে বিবেচিত অ্যালগরিদমের চেয়ে আলাদা অন্তর্নিহিত কাঠামো থাকে। বিশেষত, পৃথক গাণিতিক অ্যালগরিদমগুলি অত্যন্ত জটিল হতে থাকে, প্রায়শই কয়েকশো বা হাজারো কোডের লাইন জড়িত থাকে, তবুও কোনও রাষ্ট্রের সাথে জড়িত না (যেমন কোনও জটিল ডেটা কাঠামোর উপর অভিনয় করে না) এবং প্রায়শই সেদ্ধ হতে পারে - প্রোগ্রামিংয়ের ক্ষেত্রে in ইন্টারফেস - একটি অ্যারে (বা দুটি) এ অভিনয় করে একটি একক ফাংশন।
এটি সুপারিশ করে যে কোনও ফাংশন, শ্রেণি নয়, বৈজ্ঞানিক কম্পিউটিংয়ের ক্ষেত্রে দেখা বেশিরভাগ অ্যালগরিদমের প্রাকৃতিক ইন্টারফেস। তবুও এই যুক্তি জটিল, বহু-অংশীত অ্যালগরিদমগুলি কীভাবে পরিচালনা করা উচিত সে সম্পর্কে সামান্য অন্তর্দৃষ্টি দেয়।
যদিও traditionalতিহ্যবাহী পদ্ধতির কেবল এমন একটি ফাংশন ছিল যা বেশ কয়েকটি অন্যান্য ফাংশনকে কল করে, প্রাসঙ্গিক যুক্তিগুলি পাশ দিয়ে যায়, ওওপি একটি ভিন্ন পদ্ধতির প্রস্তাব দেয়, যেখানে অ্যালগরিদমগুলি ক্লাস হিসাবে অন্তর্ভুক্ত করা যায়। স্পষ্টতার জন্য, ক্লাসে একটি অ্যালগরিদমকে আবদ্ধ করে, আমি বলতে চাইছি একটি বর্গ তৈরি করা যার মধ্যে অ্যালগরিদম ইনপুটগুলি শ্রেণি নির্মাতার মধ্যে প্রবেশ করানো হয়, এবং তারপরে একটি জনসাধারণ পদ্ধতিতে আসলে অ্যালগোরিদমকে ডাকতে বলা হয়। সি ++ স্যুইডোকোডে মাল্টিগ্রিডের এরূপ প্রয়োগ কার্যকর হতে পারে:
class multigrid {
private:
x_, b_
[grid structure]
restrict(...)
interpolate(...)
relax(...)
public:
multigrid(x,b) : x_(x), b_(b) { }
run()
}
multigrid::run() {
[call restrict, interpolate, relax, etc.]
}
আমার প্রশ্নটি তখন নিম্নরূপ: ক্লাস ছাড়াই আরও traditionalতিহ্যবাহী পদ্ধতির তুলনায় এই ধরণের অনুশীলনের কী কী সুবিধা এবং অসুবিধা রয়েছে? এক্সটেনসিবিলিটি বা রক্ষণাবেক্ষণের সমস্যা আছে কি? স্পষ্টতই, আমি মতামত চাওয়ার ইচ্ছা করছি না, বরং কোডিং অনুশীলন গ্রহণের ফলে ডাউন স্ট্রিম প্রভাবগুলি (অর্থাত্ যেগুলি একটি কোডবেস বেশ বড় না হওয়া অবধি উত্থাপিত হতে পারে না) ভাল করে বোঝার জন্য নয়।