ফাংশনাল প্রোগ্রামিং কি "মডিউলগুলিতে ডেকমপোজিং সিস্টেমে ব্যবহৃত হবে সেই মানদণ্ড" (ডেটা লুকানো) থেকে প্রাপ্ত সুবিধাগুলি উপেক্ষা করে?


27

মেন্যুয়ালগুলিতে ডেকমপোজিং সিস্টেমে অন ক্রেডিয়ার টু টু ইউজড নামক একটি ক্লাসিক নিবন্ধ রয়েছে যা আমি সবে প্রথমবার পড়েছি। এটি আমার কাছে নিখুঁতভাবে উপলব্ধি করে এবং এটি ও ওওপি-র উপর ভিত্তি করে তৈরি হওয়া নিবন্ধগুলির মধ্যে সম্ভবত একটি। এর উপসংহার:

আমরা এই উদাহরণগুলি দিয়ে প্রমাণ করার চেষ্টা করেছি যে ফ্লোচার্টের ভিত্তিতে মডিউলগুলিতে কোনও সিস্টেমের পচন শুরু করা প্রায় সর্বদা ভুল। ... প্রতিটি মডিউল তারপরে অন্যের কাছ থেকে এমন সিদ্ধান্ত আড়াল করার জন্য তৈরি করা হয়

আমার অশিক্ষিত এবং অনভিজ্ঞ মতামত অনুসারে, কার্যকরী প্রোগ্রামিং এই নিবন্ধটির সঠিক বিপরীত পরামর্শ গ্রহণ করে। আমার বোঝাপড়াটি ক্রিয়াকলাপযুক্ত প্রোগ্রামিং ডেটা প্রবাহকে আইডেম্যাটিক করে। প্রতিটি ফাংশন ডেটা ফাংশন থেকে ফাংশনে চলে যায়, প্রতিটি ফাংশন ঘনিষ্ঠভাবে ডেটা সম্পর্কে সচেতন এবং সেই পথে "এটি পরিবর্তন করে" । এবং আমি মনে করি যে আমি একটি রিচ হিকির আলাপ দেখেছি যেখানে তিনি কীভাবে ডেটা লুকিয়ে রাখার বিষয়টি অত্যধিক বা অপ্রয়োজনীয় বা অন্য কিছু সম্পর্কে কথা বলেন, তবে আমি নিশ্চিতভাবে মনে করতে পারি না।

  1. প্রথমে আমি জানতে চাই যে আমার মূল্যায়নটি সঠিক কিনা। এফপি দৃষ্টান্ত এবং এই নিবন্ধটি দার্শনিকভাবে একমত নন?
  2. তারা একমত নয় ধরে নিয়ে, এফপি কীভাবে তথ্য গোপনের অভাবে "ক্ষতিপূরণ" দেয়? সম্ভবত তারা ডেটা লুকিয়ে রাখার ত্যাগ করে তবে এক্স, ওয়াই এবং জেড অর্জন করে X কেন X, Y এবং Z ডেটা লুকানোর চেয়ে বেশি উপকারী বলে বিবেচিত হয় তার যুক্তিটি জানতে চাই।
  3. অথবা, ধরে নিচ্ছেন যে তারা একমত নয়, সম্ভবত এফপি মনে করেন যে ডেটা লুকানো খারাপ। যদি তা হয় তবে এটি কেন ডেটা লুকানো খারাপ মনে করে?
  4. তারা সম্মত হন ধরে নিলাম, আমি তথ্য গোপনের FPs বাস্তবায়ন কী তা জানতে চাই। এটি ওওপিতে দেখা সুস্পষ্ট। আপনার এমন একটি privateক্ষেত্র থাকতে পারে যা শ্রেণীর বাইরের কেউ অ্যাক্সেস করতে পারে না। এফপিতে আমার কাছে এর কোনও সুস্পষ্ট উপমা নেই।
  5. আমি মনে করি যে আমার জিজ্ঞাসা করা উচিত অন্যান্য প্রশ্ন রয়েছে তবে আমি জানি না যে আমার জিজ্ঞাসা করা উচিত। সেগুলিও নির্দ্বিধায় উত্তর দিন।

হালনাগাদ

আমি এই নিল ফোর্ড টকটি পেয়েছি যার মধ্যে এটির খুব প্রাসঙ্গিক স্লাইড রয়েছে। আমি এখানে স্ক্রিনশট এম্বেড করব:

এখানে চিত্র বর্ণনা লিখুন


1
আমি পুরো প্রশ্নের উত্তর দিতে পারছি না, তবে (4) হিসাবে কিছু এফপি ভাষায় মডিউল সিস্টেম রয়েছে যা এনক্যাপসুলেশন সরবরাহ করতে পারে।
আন্দ্রেস এফ

@AndresF। আহ্ হ্যাঁ এটি সত্য। আমি ভুলে গিয়েছিলাম যে হাস্কেলের মডিউল রয়েছে এবং আপনি সেগুলিতে ডেটা প্রকার এবং ফাংশনগুলি লুকিয়ে রাখতে পারেন। সম্ভবত যখন আমি এফপি বলি তখন আমি সত্যিই ক্লোজুরে বলছি। ক্লোজুরেতে আপনার ব্যক্তিগত ফাংশন এবং "ক্ষেত্রগুলি" থাকতে পারে তবে আমি আপনার ডেটা যে কোনও কিছুতে দৃশ্যমান করে তুলতে এবং এটি যে কোনও জায়গায় পাস করা বুদ্ধিমান বলে মনে হচ্ছে feel
ড্যানিয়েল ক্যাপলান

6
আপনি প্রায়শই যা করেন তা আপনার ধরণের দৃশ্যমান করা, তবে আপনার নির্মাণকারীদের আড়াল করুন। এই বিমূর্ত জিনিসগুলি ওসিএএমএল মডিউল সিস্টেম দ্বারা বিশেষত খুব ভালভাবে সম্পন্ন হয়েছে
ড্যানিয়েল গ্রেটজার

6
এমএল-জাতীয় ভাষায়, কনস্ট্রাক্টরদের অ্যাক্সেস না করার অর্থ আপনি এটির নকশাকারীকরণের জন্য সেই ধরণের কোনও মানের সাথে প্যাটার্ন মেলাতে পারবেন না। এই মানগুলির সাথে আপনি যা করতে পারেন তা হ'ল এটি যা কিছু ফাংশন উপলভ্য হয়েছিল তা তা পাস করা। এটি একই ধরণের ডেটা অ্যাবস্ট্রাকশন হিসাবে করা হয়েছে, বলুন, সি যা প্রকাশ্য বা বেসরকারী সে সম্পর্কে প্রথম শ্রেণির ধারণা নেই।
ড্যান্টন

1
@ এসকে-যুক্তি: একটি "এক্সপ্রেশন সমস্যা" দৃষ্টিকোণ থেকে, আপনি ভবিষ্যতে নতুন ফাংশনটি দিয়ে প্রসারিত করতে চাইলে ডেটা প্রকাশ করা ভাল (এবং ডেটা স্থির রাখার জন্য ঠিক আছে) এবং যখন আপনি চান তখন তথ্য গোপন করা ভাল ভবিষ্যতে নতুন ডেটাটাইপগুলি সহ প্রসারিত করতে (কার্যকরী ইন্টারফেসটি স্থির করে রাখার ব্যয়ে)
hugomg

উত্তর:


23

আপনি যে নিবন্ধটি উল্লেখ করেছেন এটি সাধারণভাবে পরিমিতি সম্পর্কে, এবং এটি কাঠামোগত, কার্যকরী এবং অবজেক্ট-ভিত্তিক প্রোগ্রামগুলিতে সমানভাবে প্রযোজ্য। আমি এই নিবন্ধটি এর আগে কারও কাছ থেকে শুনেছি যিনি বড় ওওপি লোক ছিলেন, তবে আমি সাধারণভাবে প্রোগ্রামিং সম্পর্কিত একটি নিবন্ধ হিসাবে এটি পড়েছি, ওওপি নির্দিষ্ট কিছু নয়। ফাংশনাল প্রোগ্রামিং সম্পর্কে একটি বিখ্যাত নিবন্ধ আছে, ফাংশনাল প্রোগ্রামিং ম্যাটারগুলি কেন , এবং উপসংহারের প্রথম বাক্যে বলা হয়েছে "এই গবেষণাপত্রে, আমরা যুক্তি দিয়েছি যে সফল প্রোগ্রামিংয়ের মূল বিষয়বস্তু"। সুতরাং (1) এর উত্তর নেই।

ভাল নকশা করা ফাংশনগুলি তাদের ডেটা সম্পর্কে তাদের প্রয়োজনের চেয়ে বেশি ধারনা করে না, সুতরাং "ডেটা সম্পর্কে ঘনিষ্ঠভাবে সচেতন" সম্পর্কে অংশটি ভুল। (বা কমপক্ষে এটি ওওপির মতোই ভুল। ডেটা নির্দিষ্ট বিবরণ।)

ডেটা লুকানো একটি ওওপি নির্দিষ্ট শব্দ, এবং এটি নিবন্ধে আলোচিত তথ্য গোপনের মতো নয় exactly নিবন্ধে লুকিয়ে থাকা তথ্য হ'ল ডিজাইন সংক্রান্ত সিদ্ধান্তগুলি যা কঠোর ছিল বা সম্ভবত পরিবর্তিত হতে পারে about ডেটা ফর্ম্যাট সম্পর্কে প্রতিটি নকশার সিদ্ধান্ত কঠোর বা পরিবর্তিত হওয়ার সম্ভাবনা থাকে না, এবং কঠোর বা পরিবর্তিত হওয়ার সম্ভাবনাযুক্ত প্রতিটি সিদ্ধান্তই ডেটা ফর্ম্যাট সম্পর্কে নয়। ব্যক্তিগতভাবে, আমি দেখতে পাচ্ছি না যে ওও প্রোগ্রামাররা কেন সমস্ত কিছুকে একটি বস্তু হতে চায় । কখনও কখনও, একটি সাধারণ ডেটা স্ট্রাকচার আপনার প্রয়োজন হয়।

সম্পাদনা: আমি রিচ হিকির সাথে একটি সাক্ষাত্কার থেকে একটি প্রাসঙ্গিক উদ্ধৃতি পেয়েছি ।

ফোগাস: এই ধারণার অনুসরণ করে - কিছু মানুষ ক্লোজুর তার ধরণের ডেটা-লুকিয়ে থাকা এনক্যাপসুলেশনে নিযুক্ত না হওয়ার বিষয়টি দেখে অবাক হয়। আপনি কেন ডেটা-লুকিয়ে রাখার সিদ্ধান্ত নিয়েছিলেন?

হিকি: আসুন পরিষ্কার হয়ে নিন যে ক্লোজুর অ্যাবস্ট্রাকশনগুলিতে প্রোগ্রামিংকে জোর দিয়েছিলেন। যদিও এক পর্যায়ে, কারও কাছে ডেটা অ্যাক্সেস থাকা দরকার। এবং যদি আপনার "ব্যক্তিগত" ধারণা থাকে তবে আপনার অধিকার এবং আস্থার সাথে সম্পর্কিত ধারণা প্রয়োজন। এবং এটি পুরো টন জটিলতা এবং সামান্য মূল্য যুক্ত করে, একটি সিস্টেমে অনড়তা তৈরি করে এবং প্রায়শই জিনিসগুলিকে এমন জায়গায় বাস করতে বাধ্য করে যা তাদের উচিত নয়। এটি অন্যান্য হেরে যা ঘটে যখন সাধারণ তথ্য ক্লাসে রাখা হয় তখন ঘটে। ডেটা অপরিবর্তনীয় যে পরিমাণে, অ্যাক্সেস সরবরাহ করে আসতে পারে এমন ক্ষতির খুব কম ক্ষতি রয়েছে, অন্য যে কেউ পরিবর্তিত হতে পারে এমন কোনও কিছুর উপর নির্ভর করতে পারে। ঠিক আছে, ঠিক আছে, মানুষ বাস্তব জীবনে সর্বদা এটি করে এবং যখন জিনিসগুলি পরিবর্তিত হয়, তখন তারা খাপ খায়। এবং যদি তারা যুক্তিযুক্ত হয়, তারা জানে যে তারা যখন এমন কোনও কিছুর উপর ভিত্তি করে কোনও সিদ্ধান্ত নেয় যা পরিবর্তিত হতে পারে যে ভবিষ্যতে তাদের খাপ খাইয়ে নিতে পারে। সুতরাং, এটি একটি ঝুঁকি ব্যবস্থাপনার সিদ্ধান্ত, আমি মনে করি যে প্রোগ্রামাররা নিখরচায় থাকা উচিত। যদি লোকেদের বিমূর্তিতে প্রোগ্রাম করার ইচ্ছা প্রকাশ করার এবং প্রয়োগের বিবরণে বিবাহের বিষয়ে সতর্ক থাকার সংবেদনশীলতা না থাকে তবে তারা কখনই ভাল প্রোগ্রামার হতে পারবেন না।


2
ওও প্রোগ্রামাররা চান না যে সবকিছু একটি বস্তু হয়ে উঠুক। তবে কিছু জিনিস (প্রচুর জিনিস) এনক্যাপসুলেশন থেকে উপকৃত হয়। আপনার উত্তরটি সত্যই কীভাবে উত্তর দেয় তা বুঝতে আমার সমস্যা হচ্ছে। দেখে মনে হচ্ছে যে ধারণাটি ওওপির সাথে সুনির্দিষ্ট নয় এবং ওওপিতে অন্যান্য সমস্যা রয়েছে এবং এরকম আরও অনেক কিছু রয়েছে - আপনি সম্ভবত একটি স্পষ্ট উদাহরণ প্রদান করতে পারেন, যদিও এটি সিউডোকোডের কয়েকটি লাইন? বা কোনও ডিজাইনের হোয়াইটবোর্ডের বিবরণ যা এটিকে আমলে নেয়? বা এমন কিছু যা এখানে দৃ the়ভাবে প্রমাণ করে?
অ্যারোনআউট

2
@ অ্যারোনট: আমি প্রশ্নে উত্থাপিত পয়েন্টগুলির অনেকগুলি (যদিও সমস্ত নয়) সম্বোধন করেছি এবং কার্যকরী প্রোগ্রামিং সম্পর্কে একটি কাগজ উল্লেখ করেছি যা প্রশ্নের মধ্যে থাকা কাগজের মতো একইভাবে মড্যুলারিটি দেখায়। অনেকাংশে, ধারণাটি যে ওওপির সাথে সুনির্দিষ্ট নয় তার হ'ল তার প্রশ্নের উত্তর (যদি না আমি প্রশ্নটি পুরোপুরি ভুল বুঝি না)। আমি এখানে ওওপি-র অন্যান্য সমস্যা হওয়ার বিষয়ে সত্যিই কথা বলিনি। একটি উদাহরণ প্রদান সম্পর্কে আপনার ভাল বক্তব্য রয়েছে; আমি দেখতে পাচ্ছি যে আমি কোনও ভাল নিয়ে আসতে পারি কিনা।
মাইকেল শ

2
"কখনও কখনও, একটি সাধারণ ডেটা স্ট্রাকচার আপনার প্রয়োজন হয়"। +1 ওওপ কিছু বোঝার জন্য, কখনও কখনও এটি এফপি।
লরেন্ট বোর্গাল্ট-রায়

1
@ অ্যারোনট এই উত্তরটি মডুলারিটি সম্পর্কে (যা উভয়ই এনপ্যাপুলেশন এবং পুনরায় ব্যবহার) এফপির অন্যতম লক্ষ্য (যেমন "কেন ফাংশনাল প্রোগ্রামিং বিষয়গুলি" তে আলোচনা করা হয়েছে) সম্পর্কে উল্লেখ করে, সুতরাং প্রশ্নের উত্তরটির (1) উত্তরটি তৈরি করে একটি " না "।
Andres F.

2
@ জিমিফোফার তথ্য গোপন করা ওও এর বাইরেও একটি বুদ্ধিমানের নীতি। হ্যাসকেলে, আমি এখনও চাই যে কোনও ডাটা স্ট্রাকচার সম্পর্কে ব্যবহারকারীদের ন্যূনতম পরিমাণ জ্ঞানের সাথে কাজ করার অনুমতি দেওয়া হোক। অবশ্যই, অভ্যন্তরীণ প্রবেশাধিকার কম বিপজ্জনক কারণ কিছুই পরিবর্তনযোগ্য নয় mut তবে একজন ব্যবহারকারী একটি মডিউল / ডেটা স্ট্রাকচার / যে কোনও বিমূর্ত ধারণা সম্পর্কে যত কম দেখবেন, তত বেশি রিফ্যাক্টরিংয়ের সুযোগ পাবেন। আমার কম্পিউটারে একটি ছোট বাক্সে কোনও মানচিত্র ভারসাম্যযুক্ত বাইনারি গাছ বা একটি মাউস হলে আমি যত্ন নেব না। ডেটা আড়াল করার পিছনে এটিই মূল প্রেরণা এবং এটি ওওর বাইরে বৈধ।
সাইমন বার্গোট

12

... এবং সম্ভবত সেই নিবন্ধগুলির মধ্যে একটি যা ওওপি ভিত্তিক ছিল।

আসলেই নয়, তবে এটি আলোচনায় আরও যুক্ত হয়েছিল, বিশেষত অনুশীলনকারীদের কাছে, যে সময় তিনি কাগজে বর্ণিত প্রথম মানদণ্ডটি ব্যবহার করে সিস্টেমগুলি পচানোর প্রশিক্ষণ দিয়েছিলেন।

প্রথমে আমি জানতে চাই যে আমার মূল্যায়নটি সঠিক কিনা। এফপি দৃষ্টান্ত এবং এই নিবন্ধটি দার্শনিকভাবে একমত নন?

না। তদুপরি, আমার দৃষ্টিতে, এফপি প্রোগ্রামটি দেখতে আপনার বিবরণ পদ্ধতি বা ফাংশন ব্যবহার করে এমন কোনওর চেয়ে আলাদা নয়:

প্রতিটি ফাংশন ডেটা ফাংশন থেকে ফাংশনে চলে যায়, প্রতিটি ফাংশন ঘনিষ্ঠভাবে ডেটা সম্পর্কে সচেতন এবং সেই পথে "এটি পরিবর্তন করে"।

... "ঘনিষ্ঠতা" অংশটি বাদে , যেহেতু ঘনিষ্ঠতা এড়ানোর জন্য আপনার বিমূর্ত ডেটাতে (এবং প্রায়শই করা) কাজ করতে পারে have সুতরাং, সেই "ঘনিষ্ঠতা" এর উপর আপনার কিছু নিয়ন্ত্রণ রয়েছে এবং আপনি যা লুকোতে চান তার জন্য ইন্টারফেস (অর্থাত্ ফাংশন) স্থাপন করে আপনি এটি পছন্দ করতে পারেন তবে এটি নিয়ন্ত্রণ করতে পারেন।

সুতরাং, আমি কোনও কারণ দেখতে পাচ্ছি না কেন আমরা ফাংশনাল প্রোগ্রামিং ব্যবহার করে তথ্য গোপনের পার্নাস মানদণ্ড অনুসরণ করতে সক্ষম হব না এবং তার দ্বিতীয় বাস্তবায়ন হিসাবে একই রকম পয়েন্টযুক্ত সুবিধাগুলি সহ কোনও কেডব্লিউআইসি সূচক বাস্তবায়ন করব।

তারা সম্মত হন ধরে নিলাম, আমি তথ্য গোপনের এফপি বাস্তবায়ন কী তা জানতে চাই। এটি ওওপিতে দেখা সুস্পষ্ট। আপনার একটি ব্যক্তিগত ক্ষেত্র থাকতে পারে যা শ্রেণীর বাইরের কেউ অ্যাক্সেস করতে পারে না। এফপিতে আমার কাছে এর কোনও সুস্পষ্ট উপমা নেই।

যতক্ষণ না ডেটা উদ্বেগের বিষয়, আপনি এফপি ব্যবহার করে ডেটা বিমূর্তি এবং ডেটা টাইপ বিমূর্তিগুলি বিস্তারিতভাবে জানাতে পারেন। এগুলির কোনও আড়াল হিসাবে ফাংশন ব্যবহার করে এই কংক্রিট স্ট্রাকচারগুলির হাইড কংক্রিট কাঠামো এবং হেরফেরগুলি।

সম্পাদনা

এখানে একটি ক্রমবর্ধমান সংখ্যার উল্লেখ রয়েছে যে এফপির প্রসঙ্গে "তথ্য গোপন করা" এতটা কার্যকর নয় (বা ওওপি-ইশ (?))। সুতরাং, এসআইসিপির একটি খুব সাধারণ এবং সুস্পষ্ট উদাহরণ আমাকে এখানে স্ট্যাম্প করুন:

মনে করুন আপনার সিস্টেমে যুক্তিযুক্ত সংখ্যা নিয়ে কাজ করা দরকার। আপনি যে উপায়ে তাদের উপস্থাপন করতে চাইতে পারেন তা হ'ল জোড় বা দুটি পূর্ণসংখ্যার তালিকা: অংকের এবং ডিনোমিনেটর। এভাবে:

(define my-rat (cons 1 2)) ; here is my 1/2 

আপনি যদি ডেটা বিমূর্তি উপেক্ষা করেন তবে সম্ভবত আপনি সংখ্যক এবং ডিনোমিনেটর ব্যবহার করে carএবং cdr:

(... (car my-rat)) ; do something with the numerator

এই পদ্ধতির অনুসরণ করার পরে, সিস্টেমের সমস্ত অংশ যা যৌক্তিক সংখ্যার হেরফের করে তা জানতে পারবে যে মূলদ সংখ্যা হ'ল cons- তারা consযুক্তি তৈরির তালিকা তৈরি করবে এবং তালিকা অপারেটরগুলি ব্যবহার করে সেগুলি বের করবে।

আপনি যখন সমস্যার মুখোমুখি হতে পারেন তখন হ'ল যখন আপনার যুক্তিযুক্ত সংখ্যার হ্রাস করা ফর্ম থাকা দরকার - পুরো সিস্টেম জুড়ে পরিবর্তনগুলি প্রয়োজন। এছাড়াও, আপনি যদি সৃষ্টির সময় হ্রাস করার সিদ্ধান্ত নেন তবে আপনি পরে দেখতে পাবেন যে কোনও যুক্তিযুক্ত শর্তাদির অ্যাক্সেস করার সময় হ্রাস করা ভাল, অন্য একটি সম্পূর্ণ স্কেল পরিবর্তনের ফলস্বরূপ।

আর একটি সমস্যা হ'ল, যদি অনুমানের দিক থেকে তাদের জন্য বিকল্প উপস্থাপনা অগ্রাধিকার দেওয়া হয় এবং আপনি consপ্রতিনিধিত্বটি পরিত্যাগ করার সিদ্ধান্ত নেন - আবার পূর্ণ স্কেল পরিবর্তন।

এই পরিস্থিতিগুলি মোকাবেলায় যেকোন বুদ্ধিমান প্রচেষ্টা সম্ভবত ইন্টারফেসের পিছনে যুক্তিগুলির উপস্থাপনাকে আড়াল করতে শুরু করবে। শেষে, আপনি এই জাতীয় কিছু দিয়ে শেষ করতে পারেন:

  • (make-rat <n> <d>)যৌক্তিক সংখ্যাটি প্রদান করে যার সংখ্যার পূর্ণসংখ্যা <n>এবং যার সংখ্যাটি পূর্ণসংখ্যা <d>

  • (numer <x>)যৌক্তিক সংখ্যার সংখ্যা প্রদান করে <x>

  • (denom <x>)যৌক্তিক সংখ্যার ডিনমিনেটর প্রদান করে <x>

এবং সিস্টেমটি আর যুক্তিগুলি কী তা তৈরি করে তা (এবং এর বেশি হওয়া উচিত নয়) know এটি কারণ cons, carএবং cdrযুক্তিগুলির সাথে অন্তর্নিহিত নয়, তবে make-rat, numerএবং denom রয়েছে । অবশ্যই এটি সহজেই একটি এফপি সিস্টেম হতে পারে। সুতরাং, "ডেটা হিডিং" (এই ক্ষেত্রে, ডেটা বিমূর্ততা হিসাবে পরিচিত, বা উপস্থাপনা এবং কংক্রিট কাঠামোগুলি সজ্জিত করার প্রচেষ্টা) প্রাসঙ্গিক ধারণা এবং বহুল ব্যবহৃত ও অন্বেষণকৃত প্রযুক্তি হিসাবে আসে, ওও এর প্রেক্ষাপটে, কার্যকরী প্রোগ্রামিং বা যাই হোক.

এবং বক্তব্যটি হ'ল ... যদিও তারা "কী ধরনের লুকোচুরি" করছে বা এনক্যাপসুলেশন করছে সেগুলির মধ্যে পার্থক্য করার চেষ্টা করতে পারে (তারা কোনও ডিজাইনের সিদ্ধান্ত গোপন করছে কিনা, বা ডেটা স্ট্রাকচার বা অ্যালগরিদমগুলি - পদ্ধতিগত বিমূর্ততার ক্ষেত্রে), তাদের সবার একই থিম রয়েছে: তারা পার্নাস স্পষ্টভাবে তৈরি এক বা একাধিক পয়েন্ট দ্বারা অনুপ্রাণিত হয়। এটাই:

  • পরিবর্তনযোগ্যতা: প্রয়োজনীয় পরিবর্তনগুলি স্থানীয়ভাবে তৈরি করা যায় বা সিস্টেমের মাধ্যমে ছড়িয়ে দেওয়া যায়।
  • স্বতন্ত্র বিকাশ: সিস্টেমের দুটি ডিগ্রি সমান্তরালে কী ডিগ্রি বিকাশ করা যায়।
  • বোধগম্যতা: এর একটি অংশ বোঝার জন্য সিস্টেমটির কতটা জানা প্রয়োজন to

উপরের উদাহরণটি এসআইসিপি বই থেকে নেওয়া হয়েছিল, সুতরাং বইটিতে এই ধারণাগুলির সম্পূর্ণ আলোচনা এবং উপস্থাপনের জন্য, আমি চূড়ান্তভাবে দ্বিতীয় অধ্যায়টি পরীক্ষা করে দেখার পরামর্শ দিই । আমি এফপ্যাক্টের প্রসঙ্গে অ্যাবস্ট্রাক্ট ডেটা টাইপের সাথে পরিচিত হওয়ারও পরামর্শ দিই, যা অন্যান্য সমস্যাগুলি টেবিলে নিয়ে আসে।


আমি সম্মত যে ডেটা লুকানো এফপিতে প্রাসঙ্গিক। এবং, যেমন আপনি বলেছেন, এটি অর্জনের উপায় রয়েছে।
আন্দ্রেস এফ।

2
আপনি কেবলমাত্র আমার বক্তব্যটি সুন্দরভাবে তৈরি করেছেন: আপনার এই ফাংশনগুলি যা তথ্য গোপন করে না, সেগুলি এক্সপ্রেশন যা ডেটা কীভাবে অর্জন করতে পারে তা বর্ণনা করে, সুতরাং কোনও তথ্য ক্ষেত্রের পরিবর্তে কোনও অভিব্যক্তিতে বিমূর্ততা রেখে আপনার লুকানোর বিষয়ে চিন্তা করতে হবে না by ব্যক্তিগত সদস্যদের সাথে কিছু জটিল অবজেক্ট তৈরি করে বা আপনার বিবেকের মানগুলিকে অ্যাক্সেসযোগ্য করে তৈরি করে, প্রজন্মের ক্রিয়াকলাপ, পুনরুদ্ধার এবং যুক্তিযুক্ত ডেটার সাথে ইন্টারঅ্যাক্ট করার ক্রিয়াকলাপ প্রকাশ করা হয় তাই আসল যুক্তিযুক্ত তথ্য গোপন করার প্রয়োজন নেই কারণ ডেটা পরিবর্তন করা হবে না আপনার অভিব্যক্তি পরিবর্তন করুন।
জিমি হোফা

8

আপনার বিশ্বাস যে ফাংশনাল প্রোগ্রামিংয়ে ডেটা লুকানোর অভাব রয়েছে। এটি ডেটা গোপন করার জন্য একটি পৃথক পদ্ধতি গ্রহণ করে। ফাংশনাল প্রোগ্রামিংয়ে ডেটা আড়াল করার অন্যতম সাধারণ উপায় হ'ল পলিমারফিক ফাংশনগুলি যা যুক্তি হিসাবে কোনও ফাংশনকে গ্রহণ করে through উদাহরণস্বরূপ, এই ফাংশন

map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs

কেবলমাত্র তথ্যের বাইরেরতম কাঠামোটি দেখতে পারে (অর্থাত্ এটি একটি তালিকা) এটি তালিকায় থাকা ডেটা সম্পর্কে কিছুই দেখতে পারে না এবং কেবল এটি কেবলমাত্র একক ফাংশন দ্বারা প্রেরণ করা হয় যা ডেটাতে প্রেরণ করা হয়।

আর্গুমেন্ট হিসাবে যে ফাংশনটি পাস করা হয় তা তালিকায় থাকা ডেটা টাইপের পাবলিক পদ্ধতির সাথে সাদৃশ্যপূর্ণ। এটি ডেটাতে অপারেটিংয়ের একটি সীমিত উপায় সরবরাহ করে তবে ডেটা ধরণের অভ্যন্তরীণ কাজগুলি প্রকাশ করে না।


5

আমি এখানে একটি অঙ্গ নিয়ে আঘাত করতে যাচ্ছি এবং বলব যে ধারণাটি ওপেনের মতো এফপিতে ঠিক প্রাসঙ্গিক নয়।

TL; ড; ডেটা আড়াল করার বিষয়টি হ'ল দায়িত্বগুলি যেখানে হওয়া উচিত সেগুলি বজায় রাখা নিশ্চিত করা এবং আপনার বাইরের অভিনেতারা ডেটা নিয়ে মেসেজ করবেন না যার জ্ঞান নেই। এফপিতে ডেটা এক্সপ্রেশন দ্বারা উত্পন্ন হয়, এবং এই উপায়ে আপনি ডেটা নিয়ে গণ্ডগোল করতে পারবেন না কারণ এটি কোনও পরিবর্তনযোগ্য গুণাগুণ নয় যা গেমের নিয়মকে পুরোপুরি পরিবর্তন করে।


এফপির সাথে আমার অভিজ্ঞতাগুলিতে; যা স্বীকৃতভাবে তুচ্ছ, আমি ভাল / সাধারণ ডেটা মডেলিংকে বোঝায় তার মধ্যে ওওর সাথে একদম বিপরীত সন্ধান করার প্রবণতা রয়েছে।

এই বৈপরীত্যটি হ'ল সাধারণভাবে ওওতে আপনি আপনার ডেটা উপস্থাপনের জন্য জিনিসগুলিকে মডেল করেন। বাধ্যতামূলক গাড়ির উপমা:

OO যেমন পণ্য

  • আপনার কাছে একটি গাড়ী অবজেক্ট রয়েছে, যা সঠিকভাবে এসি প্রয়োগের মতো গাড়ি সম্পর্কে বিশদটি গোপন করে (এটি কি বেল্ট চালিত, বা বায়ুচাপচালিত? গ্রাহকরা জানার দরকার নেই, তাই এটি লুকান)।
  • এই গাড়ী অবজেক্টের অনেকগুলি বৈশিষ্ট্য এবং পদ্ধতি রয়েছে যা গাড়ি সম্পর্কে সমস্ত তথ্য এবং সেইসাথে যে আপনি একটি গাড়ী নিয়ে কাজ করতে পারবেন সেগুলি বর্ণনা করে।
  • এই গাড়ির অবজেক্টটিতে এমন একটি বৈশিষ্ট্য রয়েছে যা একটি গাড়ির উপাদান যা সামগ্রিক গাড়ি থেকে তাদের বিশেষ বাস্তবায়নগুলি আরও গোপন করে এবং তাদের উপাত্তের তথ্যগুলি গাড়ির উপাদানগুলিকে বিনিময়যোগ্য হতে দেয়।

এখানে লক্ষণীয় বিষয়টি হ'ল আপনি যখন কোনও ওও ফর্ম্যাটে জিনিসগুলি মডেলিং করেন তখন এটি সমস্ত কিছুকে ডেটা হিসাবে উপস্থাপন করা। আপনার বৈশিষ্ট্যগুলির সাথে অবজেক্টস রয়েছে, এই বৈশিষ্টগুলির মধ্যে অনেকগুলিই আরও বেশি বৈশিষ্ট্যযুক্ত বস্তু। আপনার কাছে এখানে কয়েকটি পদ্ধতি রয়েছে এবং সেই সমস্ত অবজেক্টগুলির সাথে এটি সংযুক্ত রয়েছে, তবে তারা সত্যিই যা করেন তা সাধারণত এইভাবে অবজেক্টগুলির বৈশিষ্ট্যগুলি জিগ্গার করে এবং এটি আবার খুব ডেটা কেন্দ্রিক মডেলিং; এটি হ'ল আপনার ডেটাটি আপনার ডেটার সমস্ত পয়েন্ট উপলব্ধ করার জন্য এটির কাঠামোগত বিষয়ে ফোকাস করার সাথে ইন্টারেক্ট করার জন্য মডেল যাতে গ্রাহকরা এইভাবে এবং সেইভাবে ডেটা পরিবর্তন করতে পারে।

FP

  • আপনার কাছে প্রচুর গণনা রয়েছে যা আপনাকে আচরণগুলি বর্ণনা করতে দেয়
  • আচরণের এই বহিঃপ্রকাশগুলি এমনভাবে সম্পর্কিত যা একটি গাড়ি আচরণ যেমন প্রত্যেকের সাথে সম্পর্কিত হয় তেমন অনুবাদ করা যেতে পারে যেমন একটি গাড়ি যেমন ত্বরান্বিত / হ্রাস পায়, সেখানে দুটি আচরণ রয়েছে যা একে অপরকে একইভাবে বিরোধিতা করে।

OO এবং FP এর মধ্যে বড় পার্থক্য যা আমাকে প্রতিনিয়ত আঘাত করে তা হ'ল আপনার ডেটা মডেল করার পদ্ধতি হিসাবে আমি উপরে বলেছি। ওও-তে উপরে উল্লিখিত হিসাবে আপনি ডেটা হিসাবে ডেটা মডেল করেন, এফপিতে আপনি ডেটা কে গণনা, এক্সপ্রেশন, অ্যালগরিদম হিসাবে মডেল করেন, এটি আপনার তথ্যের ক্রিয়াকলাপগুলির তুলনায় তথ্যগুলির মডেলিং সম্পর্কে আরও বেশি। গণিতে বেসিক ডেটা মডেলিংয়ের কথা চিন্তা করুন, এটি সর্বদা এমন সমীকরণ পাওয়ার বিষয়ে যা আপনার ডেটা উত্পন্ন করতে পারে, যা আপনার ডেটাটিকে যে ক্রিয়াকলাপ হিসাবে কারণ হিসাবে চিহ্নিত করে, যেমন ওওর বিপরীতে মডেলিং আপনার কাছে থাকা ডেটা উপস্থাপনের জন্য একটি উপায় নিয়ে আসছে। এটি এফপি এবং ওওর মধ্যে অনেক পার্থক্য।

মনে রাখবেন, অনেক সময় ধরে এলআইএসপি, একটি অন্যতম ফাউন্ডেশনাল এফপি ভাষা, খুব অল্প পরিমাণে আদিম ডেটা টাইপের সাথে বাস করত। এটি কাজ করে কারণ পদ্ধতির আপনার ডেটার জটিল উপস্থাপনা মডেলিং সম্পর্কে এতটা গণনা যা আপনার সিস্টেমের আচরণগুলি প্রকাশ করে এবং প্রকাশ করে।

আমি যখন এফপিতে কিছু কোড লিখতে শুরু করি, তখন আমি কোড লিখে শুরু করি যা কিছু করে, যেখানে আমি ওও-তে কোড লেখা শুরু করি, আমি মডেলগুলি লিখে কিছু শুরু করি যা কিছু বর্ণনা করে। জিনিসগুলি করা এফপির মধ্যে প্রকাশের দ্বারা গোপন থাকে, তথ্যগুলি ওফ মধ্যে বিবরণ দিয়ে জিনিসগুলি করা অনাবৃত হয়, এই ডেটা সীমা গোপন করে এক্সপোজার বলে said


হাতে থাকা প্রশ্নের পিছনে, এফপি ডেটা লুকানোর বিষয়ে কী বলে, এটি কি এর প্রশংসা করে বা এর সাথে একমত হয় না বা কী নয়?

আমি বলছি এটির কোনও গুরুত্ব আসে না, ওওতে আপনার ডেটা হ'ল আপনার প্রোগ্রামের সাহস এবং গুরুত্বপূর্ণ টুকরা যা হস্তক্ষেপ করা থেকে আড়াল হওয়া উচিত। এফপিতে আপনার সিস্টেমের সাহস এবং জ্ঞান সমস্ত সিস্টেমকে প্রকাশ করে এমন অ্যালগোরিদম এবং গণনাগুলিতে লুকিয়ে থাকে। এগুলি কম-বেশি পরিবর্তনযোগ্য হিসাবে সংজ্ঞা দ্বারা হয়, গণনার এক্সপ্রেশনগুলিকে পরিবর্তনের একমাত্র উপায় হ'ল ম্যাক্রোগুলির মতো জিনিস, তবে তারপরেও আপনি মিউটেশনের সংজ্ঞাগুলি নিজেই এমন অভিব্যক্তি যা আরও মেশানো যায় না।


এটি উজ্জ্বল, আমি এটি পড়তে সত্যই উপভোগ করেছি। আপনার অবদানের জন্য ধন্যবাদ
ক্রিস ম্যাককেল

5

এখানে কিছুটা প্যারাডক্স রয়েছে। যদিও ফাংশনাল প্রোগ্রামিং ফোকাস করে, ভাল, ফাংশনগুলিতে এবং প্রায়শই ফাংশনগুলি যা সরাসরি আদিম উপাত্তের ধরণের উপর সরাসরি কাজ করে, এতে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের চেয়ে বেশি ডেটা লুকানো থাকে ।

এটা কিভাবে? অন্তর্নিহিত ডেটা লুকিয়ে রাখে এমন একটি দুর্দান্ত ওও ইন্টারফেস সম্পর্কে চিন্তা করুন - সম্ভবত সংগ্রহগুলি (আমি প্রায় সর্বব্যাপী কিছু বাছাই করার চেষ্টা করছি)। আপনি সংগ্রহের অবজেক্টের অন্তর্নিহিত ধরণ বা সংগ্রহটি প্রয়োগকারী অবজেক্টের ধরণের জানা দরকার নেই, যতক্ষণ আপনি সংগ্রহের প্রয়োগগুলি জানেন, বলুন, আইনিম্যারেবল। সুতরাং আপনার কাছে তথ্য গোপন রয়েছে।

ফাংশনাল প্রোগ্রামিংয়ে আপনি এমন একটি ফাংশন লিখতে পারেন যা কার্যকরভাবে একটি আইমনামেবল ইন্টারফেসের সাথে কাজ করে তবে একটি আদিম ডেটা টাইপ (বা কোনও ডেটা টাইপের ক্ষেত্রে) পরিচালনা করে। তবে কী যদি এই টাইপটি ইতিবাচক পদ্ধতিগুলি কার্যকর না করে? এখানে কীটি রয়েছে, আপনার কাছে সর্বদা "পদ্ধতিগুলি" থাকতে পারে যা "ইন্টারফেস" এর প্রয়োজনীয় টুকরোগুলি তৈরি করে আপনার ফাংশনে প্রবেশ করে প্যারামিটারগুলি। অথবা আপনি ডেটা সহ একসাথে ফাংশন রাখতে পারেন এবং ওও-এর মতো জিনিসগুলি করতে পারেন।

লক্ষ্য করুন যে কোনওভাবেই আপনি ওওতে থাকা কোনও তথ্য গোপন করবেন না। আমার সাধারণ ফাংশন যা কোনও প্রকারে স্পষ্টভাবে কাজ করে সে ধরণের ডেটা অ্যাক্সেস করে না - যা সাধারণ ফাংশনের পরামিতি হিসাবে গৃহীত ফাংশনগুলির মধ্যে ঘটে থাকে, তবে সাধারণ ফাংশন কখনই এই ফাংশনগুলির মধ্যে ডেটা দেখার চেষ্টা করে না।

সুতরাং, আপনার পয়েন্ট 1 পর্যন্ত, আমি মনে করি না এফপি এবং নিবন্ধটি সত্যই একমত নয়। আমি মনে করি না যে ডেটা গোপন না করে আপনার এফপির বৈশিষ্ট্য সঠিক is লেখক এফপিতে পছন্দ করে এমন নকশাটি বাস্তবায়িত করতে পারে।

যতদূর পয়েন্ট 4 (2 এবং 3 উত্তর দেওয়া বুদ্ধি করে না যে আমি 1 পয়েন্টের জন্য বলেছি) তা পরিবর্তিত হয়। এটি ওও ভাষাগুলিতেও পরিবর্তিত হয় এবং অনেকগুলি ব্যক্তিগত ক্ষেত্রে ভাষা প্রয়োগের পরিবর্তে সম্মেলনের মাধ্যমে ব্যক্তিগত হয়।


অন্য কথায়: ফাংশনাল প্রোগ্রামিংয়ে, ডিফল্টরূপে আরও অনেক কিছু "লুকানো" থাকে, কারণ এটি এমনকি উপস্থিত নেই! আপনি যে স্টাফ স্পষ্টভাবে স্কোপে নিয়ে আসেন তা কেবল "অদৃশ্য"।
20:58

3

প্রথমত, এই দুর্দান্ত নিবন্ধটির লিঙ্কটির জন্য ধন্যবাদ, আমি এখন অবধি এটি জানতাম না, এবং এটি আমাকে গত কয়েক বছরে সম্প্রদায়ের কিছু অন্যান্য সফ্টওয়্যার ডিজাইনারের সাথে আলোচনা করে যা কিছু বিষয় সম্পর্কে একটি দুর্দান্ত ইনপুট দিয়েছে। এটি সম্পর্কে আমার মতামত এখানে:

প্রথমে আমি জানতে চাই যে আমার মূল্যায়নটি সঠিক কিনা। এফপি দৃষ্টান্ত এবং এই নিবন্ধটি দার্শনিকভাবে একমত নন?

এফপি ডিজাইন ডেটা-প্রবাহের উপর খুব বেশি আলোকপাত করে (যা আইএমএইচও এতটা খারাপ নয় যে নিবন্ধটি বোঝায়) এটি যদি একটি সম্পূর্ণ "মতবিরোধ" হয় তর্কযোগ্য।

তারা একমত নয় ধরে নিয়ে, এফপি কীভাবে তথ্য গোপনের অভাবে "ক্ষতিপূরণ" দেয়? সম্ভবত তারা ডেটা লুকিয়ে রাখার ত্যাগ করে তবে এক্স, ওয়াই এবং জেড অর্জন করে X কেন X, Y এবং Z ডেটা লুকানোর চেয়ে বেশি উপকারী বলে বিবেচিত হয় তার যুক্তিটি জানতে চাই।

আইএমএইচও এটি ক্ষতিপূরণ দেয় না। নিচে দেখ.

অথবা, ধরে নিচ্ছেন যে তারা একমত নয়, সম্ভবত এফপি মনে করেন যে ডেটা লুকানো খারাপ। যদি তা হয় তবে এটি কেন ডেটা লুকানো খারাপ মনে করে?

আমি মনে করি না বেশিরভাগ এফপি ব্যবহারকারী বা ডিজাইনাররা এইভাবে অনুভব করেন বা ভাবেন না, নীচে দেখুন।

তারা সম্মত হন ধরে নিলাম, আমি তথ্য গোপনের এফপি বাস্তবায়ন কী তা জানতে চাই। এটি ওওপিতে দেখা সুস্পষ্ট। আপনার একটি ব্যক্তিগত ক্ষেত্র থাকতে পারে যা শ্রেণীর বাইরের কেউ অ্যাক্সেস করতে পারে না। এফপিতে আমার কাছে এর কোনও সুস্পষ্ট উপমা নেই।

এখানে বক্তব্যটি হ'ল - আপনি সম্ভবত এতগুলি ওওপি সিস্টেমগুলি অযৌক্তিক উপায়ে প্রয়োগ করেছেন যা আপনি বিশ্বাস করেন যে ওওপি অকার্যকর। এবং এটি একটি স্পষ্টতা, আইএমএইচও ওওপি এবং এফপি বেশিরভাগ অর্থেগোনাল ধারণা এবং আপনি কার্যকরী ওও সিস্টেমগুলি পুরোপুরি তৈরি করতে পারেন যা আপনাকে আপনার প্রশ্নের একটি সুস্পষ্ট উত্তর দেয়। FP ক্লাসিক "বস্তু" বাস্তবায়ন ব্যবহার দ্বারা সম্পন্ন করা হয় বন্ধ , এবং আপনি বস্তুর একটি কার্মিক সিস্টেম ব্যবহার করা করতে চান তাহলে, কী বিন্দু তাদের অপরিবর্তনীয় ডিজাইন করতে হয়।

সুতরাং আরও বড় সিস্টেম তৈরির জন্য, আইএমএইচও আপনি ওও ধারণাগুলি ব্যবহার করে মডিউল, ক্লাস এবং অবজেক্ট তৈরি করতে পারবেন, "এফপি পাথ" ছাড়াই নিবন্ধে "মডুলারাইজেশন 2" এর আওতায় বর্ণিত ঠিক সেইভাবে। আপনি আপনার প্রিয় এফপি ভাষার মডিউল ধারণাটি ব্যবহার করবেন, আপনার সমস্ত বস্তুকে কেবল পরিবর্তনযোগ্য করে তুলবেন এবং "উভয় বিশ্বের সেরা" ব্যবহার করবেন।


3

টিএল; ডিআর : না

এফপি দৃষ্টান্ত এবং এই নিবন্ধটি দার্শনিকভাবে একমত নন ?.

না এটা হয় না। ফাংশনাল প্রোগ্রামিং হ'ল ঘোষিত যা "কম্পিউটার প্রোগ্রামগুলির কাঠামো এবং উপাদানগুলি গঠনের একটি স্টাইল, যা তার নিয়ন্ত্রণ প্রবাহকে বর্ণনা না দিয়ে কোনও গণনার যুক্তি প্রকাশ করে।" এটি ফ্লো চার্ট অনুসরণ করা সম্পর্কে কম এবং আরও বেশি নিয়ম তৈরি করার মতো যা নিজেরাই প্রবাহকে উত্সাহিত করে।

কার্যনির্বাহী প্রোগ্রামিং ফাংশনাল প্রোগ্রামিংয়ের চেয়ে প্রবাহের চার্টের এনকোডিংয়ের খুব কাছাকাছি। এটি অনুসরণ করে যে রূপান্তর ঘটে যাগুলি ঘটে থাকে এবং সেইগুলির এনকোডগুলি ক্রম হিসাবে কার্যকর হওয়া পদ্ধতিগুলিতে রূপান্তর করে, ঠিক যেমন একটি ফ্লো চার্টের প্রবাহ বর্ণনা করে।

প্রক্রিয়াকরণী ভাষা মডেল সম্পাদন অপরিহার্য কমান্ডগুলির অনুক্রম হিসাবে যা স্পষ্টভাবে ভাগ করে নেওয়া রাষ্ট্রকে পরিবর্তন করতে পারে, কার্যকরী প্রোগ্রামিং ভাষাগুলির মডেল এক্সিকিউশনটি জটিল অভিব্যক্তির মূল্যায়ন হিসাবে কেবল একে অপরের উপর নির্ভর করে কেবল যুক্তি এবং প্রত্যাবর্তনের মানগুলির ক্ষেত্রে। এই কারণে, কার্যকরী প্রোগ্রামগুলিতে কোড প্রয়োগের একটি বিনামূল্যে অর্ডার থাকতে পারে এবং প্রোগ্রামের বিভিন্ন অংশ সম্পাদিত হয় সেই ক্রমগুলিতে ভাষাগুলি সামান্য নিয়ন্ত্রণ দিতে পারে। (উদাহরণস্বরূপ, স্কিমের পদ্ধতিতে অনুরোধের যুক্তিগুলি একটি স্বেচ্ছাসেবী আদেশে কার্যকর করা হয়))

ডেটা লুকানো

  • ফাংশনাল প্রোগ্রামিংয়ের ডেটা লুকানোর নিজস্ব পদ্ধতি রয়েছে, উদাহরণস্বরূপ, ক্লোজারগুলি মনে করুন । এটি হ'ল কোনও ক্লোজে থাকা এনক্যাপসুলেশনের মাধ্যমে ডেটা লুকিয়ে। ক্ষেত্রগুলির পক্ষে আর কোনও ব্যক্তিগত ডেটা হওয়া বন্ধ হয়ে গেছে যা কেবল বন্ধ করে দেওয়া ডেটাতে একটি রেফারেন্স রয়েছে এবং আপনি এটি বন্ধের বাইরের উল্লেখ করতে পারবেন না।
  • ডেটা আড়াল করার অন্যতম কারণ হ'ল মিউটেশন ডেটা লুকিয়ে প্রোগ্রামিং ইন্টারফেসকে স্থিতিশীল করা। ফাংশনাল প্রোগ্রামিংয়ে মিউটিং ডেটা থাকে না, অতএব এটির যতটা ডেটা লুকানোর দরকার নেই।

3
"ফাংশনাল প্রোগ্রামিংয়ে মিউটিং ডেটা থাকে না, সুতরাং এর জন্য এত বেশি ডেটা লুকানোর দরকার নেই।" - এটি একটি খুব বিভ্রান্তিকর বক্তব্য। আপনি নিজেকে বললেন (এবং আমি সম্মত) যে এক আচরণ encapsulating কারণ ডেটার পরিব্যক্তি উপর নিয়ন্ত্রণ হয়। তবে উপসংহারে বলা যায় যে পরিব্যক্তির অভাব প্রায় এনক্যাপসুলেশনকে অকেজো করে দেয়। এডিটি এবং সাধারণভাবে ডেটা বিমূর্ততা এফপি সাহিত্য এবং সিস্টেমগুলিতে বিস্তৃত।
থিয়াগো সিলভা 15

আমি এটি কখনও বলিনি "প্রায় এনক্যাপসুলেশন অকেজো করে"। এগুলি আপনার চিন্তা এবং একা আপনার। আমি বলেছিলাম যে পরিবর্তনীয় ভেরিয়েবলের অভাবের কারণে আপনার এত বেশি তথ্য গোপন করার দরকার নেই। এটি এনক্যাপসুলেশন বা ডেটা লুকিয়ে রাখাকে অকেজো করে না, এটি কেবল এটির ব্যবহার হ্রাস করে কারণ এই ক্ষেত্রেগুলি বিদ্যমান নেই। অন্যান্য সমস্ত ক্ষেত্রে যেখানে ডেটা লুকানো এবং এনক্যাপসুলেশন দরকারী তা এখনও বৈধ।
ডায়েটবুদ্ধ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.