যেহেতু মেশিন ল্যাঙ্গুয়েজ (যেমন, 0110101000110101
) কম্পিউটার ভাষাগুলি সাধারণত বিমূর্ততার উচ্চতর রূপগুলিতে বিকশিত হয়েছে, সাধারণত কোনও সমস্যায় প্রয়োগ করা হয় তখন কোড বোঝা সহজ করে তোলে। এসেম্ব্লার মেশিন কোডের উপরে বিমূর্ততা ছিল, সি ছিল এসেম্বলারের উপর বিমূর্ততা ইত্যাদি etc.
অবজেক্ট-ওরিয়েন্টেড ডিজাইনটি আমাদের বস্তুগুলির ক্ষেত্রে যেমন একটি সমস্যা মডেল করার সুযোগ দেয় তখন এটি খুব ভাল বলে মনে হয়, উদাহরণস্বরূপ, কোনও বিশ্ববিদ্যালয় কোর্স রেজিস্ট্রেশন সিস্টেমের সমস্যাটি একটি Course
শ্রেণি, একটি Student
ক্লাস ইত্যাদির সাথে মডেল করা যায় তারপরে, যখন আমরা সমাধানটি লিখি ওও ভাষায়, আমাদের একই ধরণের ক্লাস রয়েছে যা দায়িত্ব পায় এবং যা সাধারণত নকশার জন্য সহায়ক, বিশেষত কোডটি আধুনিকীকরণের জন্য। যদি আমি 10 টি স্বতন্ত্র টিমকে এই সমস্যাটি দেয় যা এটি ওও পদ্ধতিতে সমাধান করে, সাধারণত 10 টি সমাধানে সমস্যা সম্পর্কিত ক্লাস থাকবে classes আপনি যখন এই শ্রেণীর সংযোগ এবং মিথস্ক্রিয়াতে প্রবেশ করতে শুরু করেন তখন প্রচুর পার্থক্য হতে পারে, সুতরাং "শূন্য প্রতিনিধিত্বমূলক ব্যবধান" বলে কিছুই নেই।
ফাংশনাল প্রোগ্রামিংয়ের সাথে আমার অভিজ্ঞতা খুব সীমাবদ্ধ (বাস্তব-বিশ্ব ব্যবহার নয়, কেবলমাত্র হ্যালো ওয়ার্ল্ড টাইপ প্রোগ্রাম)) ওও ভাষাগুলি যেভাবে এই জাতীয় ভাষাগুলি কীভাবে সমস্যার সহজে FP সমাধান ম্যাপিং করতে পারে তা দেখতে ব্যর্থ হচ্ছি (কম উপস্থাপনামূলক ফাঁক দিয়ে)।
সমবর্তী প্রোগ্রামিংয়ের ক্ষেত্রে আমি এফপির সুবিধাগুলি বুঝতে পারি। তবে আমি কি কিছু মিস করছি, বা এফপি কি প্রতিনিধিত্বমূলক ফাঁক হ্রাস করার বিষয়ে নয় (সমাধানগুলি বোঝা সহজ করে)?
এটি জিজ্ঞাসা করার আরেকটি উপায়: একই বাস্তব-বিশ্ব সমস্যা সমাধানকারী 10 টি বিভিন্ন দলের এফপি কোডটিতে কি অনেক মিল রয়েছে?
অ্যাবস্ট্রাকশন (কম্পিউটার সায়েন্স) ( উইকিপিডিয়া খনি) এর উইকিপিডিয়া থেকে :
ক্রিয়ামূলক প্রোগ্রামিং ভাষা সাধারণত ফাংশন সম্পর্কিত বিমূর্ততা প্রদর্শন করে যেমন ল্যাম্বদা বিমূর্ততা (কিছু পরিবর্তনশীল একটি ফাংশন হিসাবে একটি শব্দ তৈরি), উচ্চতর ক্রম ফাংশন (পরামিতি ফাংশন হয়), বন্ধনী বিমূর্ততা (একটি ভেরিয়েবল একটি ফাংশন একটি শব্দ তৈরি)।
প্রতিনিধিত্বমূলক ব্যবধানটি সম্ভাব্যভাবে বাড়ানো যেতে পারে, কারণ [কিছু] রিয়েল-ওয়ার্ল্ড সমস্যাগুলি এ জাতীয় বিমূর্ততার সাথে সহজেই মডেল হয় না।
প্রতিনিধিত্বমূলক ব্যবধান হ্রাস হবার আরেকটি উপায় হ'ল সমাধানের উপাদানগুলিকে সমস্যার দিকে ফিরে পাওয়া। 0
'S এবং 1
মেশিন কোডে গুলি, ফিরে ট্রেস যেহেতু খুব কঠিন Student
বর্গ ফিরে ট্রেস করা সহজ। সমস্ত ওও ক্লাসগুলি সমস্যার জায়গাগুলিতে খুব সহজে ট্রেস করে না, তবে অনেকেই করেন।
এফপি অ্যাবস্ট্রাকশনগুলির কী তারা সমস্যার জায়গার কোন অংশটি সমাধান করছেন তা গণিত করার জন্য ( গণিতের সমস্যাগুলি বাদ দিয়ে ) সবসময় ব্যাখ্যা করার দরকার পড়ে না ?ঠিক আছে - আমি এই অংশে ভাল। আরও অনেক উদাহরণ দেখার পরে, আমি দেখছি যে ডেটা প্রক্রিয়াকরণে প্রকাশিত সমস্যার অংশগুলির জন্য কীভাবে এফপি বিমূর্ততা খুব স্পষ্ট।
সম্পর্কিত প্রশ্নের গৃহীত উত্তর কি ইউএমএলকে একটি কার্যকরী প্রোগ্রামের মডেল হিসাবে ব্যবহার করা যেতে পারে? - বলেছেন "ফাংশনাল প্রোগ্রামারগুলির ডায়াগ্রামের জন্য খুব বেশি ব্যবহার নেই।" এটি ইউএমএল কিনা আমি সত্যিই তার পাত্তা দিচ্ছি না, তবে এফপি বিমূর্ততাগুলি বোঝা / যোগাযোগ করা সহজ হওয়া সম্পর্কে আমাকে বিস্মিত করে তোলে, যদি এমন কোনও ডায়াগ্রাম নেই যা ব্যাপকভাবে ব্যবহৃত হয় (এই উত্তরটি সঠিক বলে ধরে নিই)। আবার, আমার এফপির ব্যবহার / বোঝার স্তরটি তুচ্ছ, তাই আমি বুঝতে পারি সহজ এফপি প্রোগ্রামগুলিতে ডায়াগ্রামের প্রয়োজন নেই।
ওও ডিজাইনের ফাংশন / শ্রেণি / প্যাকেজ-স্তরের বিমূর্তকরণ রয়েছে, যার প্রতিটি ক্ষেত্রে এনক্যাপসুলেশন (অ্যাক্সেস নিয়ন্ত্রণ, তথ্য গোপন করা) রয়েছে, যা জটিলতা পরিচালনা করা সহজ করে তোলে। এগুলি এমন উপাদান যা সমস্যার থেকে সমাধানে যেতে সাহায্য করে এবং সহজেই ফিরে যায়।
অনেক উত্তর কীভাবে বিশ্লেষণ এবং নকশাটি ওপেনের সাথে একরকম উপায়ে এফপিতে করা হয় সে সম্পর্কে কথা বলে, তবে কেউ এখনও পর্যন্ত উচ্চ-স্তরের কিছুই উদ্ধৃত করে না (পল কিছু আকর্ষণীয় জিনিস উদ্ধৃত করেছে, তবে এটি নিম্ন-স্তরের)। আমি গতকাল প্রচুর গুগলিং করেছি এবং কিছু আকর্ষণীয় আলোচনা পেয়েছি। নীচে সাইমন থম্পসন (2004) (জোর খনি) দ্বারা কার্যকরী প্রোগ্রামগুলি রিফ্যাক্টরিং থেকে প্রাপ্ত
কোনও অবজেক্ট-ওরিয়েন্টেড সিস্টেম ডিজাইনের ক্ষেত্রে এটি বিবেচনা করা হয় যে ডিজাইন প্রোগ্রামিংয়ের আগে চলে। ইউএমএলের মতো একটি সিস্টেম ব্যবহার করে ডিজাইনগুলি লেখা হবে যা Eclipse এর মতো সরঞ্জামগুলিতে সমর্থিত। প্রারম্ভিক প্রোগ্রামাররা ভালভাবে ব্লুজে যেমন সিস্টেম ব্যবহার করে একটি ভিজ্যুয়াল ডিজাইন পদ্ধতির শিখতে পারে। ফাংশনাল প্রোগ্রামিংয়ের জন্য অনুরূপ পদ্ধতি নিয়ে কাজ করার জন্য এফএডি রিপোর্ট করা হয়েছে : কার্যকরী বিশ্লেষণ এবং নকশা , তবে খুব কম অন্যান্য কাজ বিদ্যমান। এর বেশ কয়েকটি কারণ থাকতে পারে।
বিদ্যমান কার্যকরী প্রোগ্রামগুলি এমন একটি স্কেল যা ডিজাইনের প্রয়োজন হয় না। অনেকগুলি কার্যকরী প্রোগ্রামগুলি ছোট, তবে অন্যান্য যেমন গ্লাসগো হাস্কেল সংকলক যথেষ্ট পরিমাণে।
কার্যকরী প্রোগ্রামগুলি সরাসরি অ্যাপ্লিকেশন ডোমেনকে মডেল করে, এইভাবে নকশাকে অপ্রাসঙ্গিক উপস্থাপন করে। যদিও কার্যকরী ভাষা বিভিন্ন ধরণের শক্তিশালী বিমূর্ততা সরবরাহ করে, তর্ক করা কঠিন যে এগুলি বাস্তব বিশ্বের মডেল করার জন্য প্রয়োজনীয় সমস্ত এবং কেবল বিমূর্ততা সরবরাহ করে।
কার্যকরী প্রোগ্রামগুলি বিকাশমান সিরিজের প্রোটোটাইপ হিসাবে নির্মিত।
ইন পিএইচডি থিসিস উপরে উল্লেখিত , বিশ্লেষণ এবং নকশা পদ্ধতি (ADM) ব্যবহার করে সুফল পারাদিগ্ম্স স্বাধীন রূপরেখা আছে। তবে একটি যুক্তি তৈরি করা হয় যে এডিএমগুলি বাস্তবায়ন দৃষ্টান্তের সাথে একত্রিত হয়। অর্থাৎ, ওওএডিএম ওও প্রোগ্রামিংয়ের জন্য সবচেয়ে ভাল কাজ করে এবং এফপির মতো অন্য দৃষ্টান্তে ভালভাবে প্রয়োগ হয় না। এখানে একটি দুর্দান্ত উদ্ধৃতি যা আমি মনে করি যে আমি প্রতিনিধিত্বমূলক ব্যবস্থাকে যাকে কল করি তার অনুচ্ছেদে:
কোনটি দৃষ্টান্তটি সফ্টওয়্যার বিকাশের জন্য সর্বোত্তম সমর্থন সরবরাহ করে সে সম্পর্কে দীর্ঘক্ষণ তর্ক করতে পারে তবে বাস্তবায়ন এবং বিতরণের মাধ্যমে সমস্যার বিবরণ থেকে একক দৃষ্টান্তের মধ্যে যখন কেউ থেকে যায় তখন সবচেয়ে প্রাকৃতিক, দক্ষ এবং কার্যকর বিকাশ প্যাকেজ অর্জন করে।
এখানে এফএডি দ্বারা প্রস্তাবিত চিত্রগুলির সেট রয়েছে:
- ফাংশন নির্ভরতা ডায়াগ্রামগুলি যা এটি প্রয়োগের সাথে এটির সাথে একটি ফাংশন উপস্থাপন করে;
- টাইপ নির্ভরতা চিত্র যা প্রকারের জন্য একই পরিষেবা সরবরাহ করে; এবং,
- মডিউল নির্ভরতা ডায়াগ্রামগুলি যা সিস্টেমের মডিউল আর্কিটেকচারের মতামত উপস্থাপন করে।
এফএডি থিসিসের 5.1 বিভাগে একটি কেস স্টাডি রয়েছে, যা একটি ফুটবল (সকার) লীগের সাথে সম্পর্কিত ডেটা উত্পাদন স্বয়ংক্রিয় করার সিস্টেম to প্রয়োজনীয়তাগুলি 100% কার্যকরী, যেমন, ইনপুট ফুটবলের ফলাফল, লিগ টেবিল তৈরি করে, স্কোরিং টেবিলগুলি, উপস্থিতি টেবিলগুলি, দলের মধ্যে খেলোয়াড়দের স্থানান্তর করা, নতুন ফলাফলের পরে ডেটা আপডেট করা ইত্যাদি F , "নূন্যতম ব্যয়ে নতুন কার্যকারিতাটি মঞ্জুরি দেওয়া উচিত" উল্লেখ করা বাদ দিয়ে এমন কিছু যা পরীক্ষা করা প্রায় অসম্ভব।
দুঃখের বিষয়, এফএডি বাদে, আমি মডেলিংয়ের জন্য কোন আধুনিক রেফারেন্স দেখতে পাচ্ছি না (ভিজ্যুয়াল) যা এফপির জন্য প্রস্তাবিত। ইউএমএল হ'ল আরেকটি দৃষ্টান্ত, সুতরাং আমাদের তা ভুলে যাওয়া উচিত।