সমস্ত কী ওপ বৈশিষ্ট্যগুলি না হারিয়ে আমরা কী সত্যই ওওপিতে অপরিবর্তনীয়তা ব্যবহার করতে পারি?


11

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

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

আমার অভিজ্ঞতা হ'ল অপরিবর্তনীয়তা আমার কোডটিকে আরও বেশি করে কার্যকরী দৃষ্টান্তের দিকে চালিত করে এবং এই অগ্রগতি সর্বদা ঘটে:

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

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

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


3
আমি বেস প্রশ্নটি পছন্দ করি তবে বিশদ সহ আমার খুব কঠিন সময় কাটছে। উদাহরণস্বরূপ, আপনি যখন অপরিবর্তনীয়তা সর্বাধিক সীমাবদ্ধ করেন তখন উত্তরাধিকার কেন বোঝা বন্ধ করে দেয়?
মার্টিন বা

1
আপনার বস্তুর কোন পদ্ধতি নেই?
মনিকা


4
"ওওপি দৃষ্টিকোণ থেকে কোনও অংশ বোর্ডে তার অবস্থান থেকে বৈধ পদক্ষেপ তৈরির জন্য দায়বদ্ধ" " - অবশ্যই না, এর মতো একটি টুকরো ডিজাইন করা সম্ভবত এসআরপিকে আঘাত করবে।
ডক ব্রাউন

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

উত্তর:


24

সমস্ত কী ওপ বৈশিষ্ট্যগুলি না হারিয়ে আমরা কী সত্যই ওওপিতে অপরিবর্তনীয়তা ব্যবহার করতে পারি?

দেখবেন না কেন। জাভা 8 যেকোনোভাবে সমস্ত কার্যকরী হওয়ার আগে বছর ধরে এটি করা হয়েছে। স্ট্রিংসের কথা কখনও শুনেছেন? শুরু থেকে দুর্দান্ত এবং অপরিবর্তনীয়।

  1. তালিকাগুলি, মানচিত্রের মতো ডেটা স্ট্রাকচারের জন্য আমি ক্রমাগত (ক্রিয়ামূলক অর্থে) প্রয়োজন বোধ করি start

পাশাপাশি পাশাপাশি সমস্ত প্রয়োজন ছিল। আমার পুনরাবৃত্তিকারীদের অবৈধ করা হচ্ছে কারণ আপনি যখন সংগ্রহটি পড়ছিলাম তখন আপনি সংগ্রহটি পরিবর্তন করেছেন এটি কেবল অভদ্র।

  1. ক্রস রেফারেন্সের সাথে কাজ করা অত্যন্ত অসুবিধাজনক (যেমন গাছের নোড তার বাচ্চাদের রেফারেন্স করার সময় শিশুরা তাদের পিতামাতাকে রেফারেন্স করে) যা আমাকে ক্রস রেফারেন্সগুলি মোটেও ব্যবহার না করে দেয় যা আমার ডেটা স্ট্রাকচার এবং কোডটিকে আরও কার্যকরী করে তোলে।

বিজ্ঞপ্তি রেফারেন্সগুলি একটি বিশেষ ধরণের নরক। অপরিচ্ছন্নতা আপনাকে এ থেকে বাঁচায় না।

  1. উত্তরাধিকার কোনও অর্থবহুল হয়ে যায় এবং আমি পরিবর্তে রচনাটি ব্যবহার শুরু করি।

আচ্ছা এখানে আমি আপনার সাথে আছি তবে অপরিবর্তনীয়তার সাথে এর কী আছে তা দেখছি না। আমি রচনাটি পছন্দ করার কারণটি নয় কারণ আমি গতিশীল কৌশল প্যাটার্ন পছন্দ করি, কারণ এটি আমার বিমূর্ততার স্তরটি পরিবর্তন করতে দেয়।

  1. ওওপি-র সম্পূর্ণ বুনিয়াদি ধারণাগুলি যেমন এনক্যাপসুলেশন বিচ্ছিন্ন হতে শুরু করে এবং আমার বিষয়গুলি ফাংশনগুলির মতো দেখতে শুরু করে।

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

আপনার অবজেক্টগুলি ফাংশনগুলির মতো দেখাবে বলে মনে করা হচ্ছে। তারা ফাংশন ব্যাগ। এগুলি হ'ল ফাংশনগুলির ব্যাগ যা একত্রিত হয় এবং একসাথে নিজেকে নতুন সংজ্ঞা দেয়।

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

  • কার্যকরী প্রোগ্রামিং অ্যাসাইনমেন্ট সম্পর্কে আনুষ্ঠানিক হচ্ছে।

  • ফাংশন পয়েন্টারগুলি সম্পর্কে ওওপি আনুষ্ঠানিক হচ্ছে।

সত্যিই এটা। ডাইকস্ট্রা আমাদেরকে gotoক্ষতিকারক বলেছিল তাই আমরা এটি সম্পর্কে ফর্মাল হয়েছি এবং কাঠামোগত প্রোগ্রামিং তৈরি করেছি। ঠিক ঠিক তেমনই, এই দুটি দৃষ্টান্তগুলি সমস্যাযুক্ত বিষয়গুলি ঘটনাক্রমে করা থেকে আসা সমস্যাগুলি এড়িয়ে গিয়ে জিনিসগুলি সম্পন্ন করার উপায়গুলি অনুসন্ধান করার বিষয়ে।

আমাকে কিছু দেখাতে দাও:

f এন (এক্স)

এটি একটি ফাংশন। এটি আসলে ফাংশনগুলির ধারাবাহিকতা:

f 1 (x)
f 2 (x)
...
f n (x)

অনুমান করুন কীভাবে আমরা ওওপি ভাষায় তা প্রকাশ করি?

n.f(x)

এই সামান্য nসেখানে প্রয়োগ fকী ব্যবহার করা হয় তা বেছে নেয় এবং সিদ্ধান্ত নেয় যে সেই ফাংশনে ব্যবহৃত কিছু ধ্রুবক কী (যা প্রকৃতপক্ষে একই জিনিসটির অর্থ)। উদাহরণ স্বরূপ:

f 1 (x) = x + 1
f 2 (x) = x + 2

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

g 1 (x) = x 2 + 1
g 2 (x) = x 2 + 2

হ্যাঁ আপনি অনুমান করেছেন:

n.g(x)

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

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

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

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

ARG! আবার অযথা সার্কুলার রেফারেন্স সহ।

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

অপেক্ষা করুন, আমরা ইতিমধ্যে দাবা সম্পর্কে কথা বলিনি?



1
এবং সর্বশেষ তবে অরল্যান্ডোর সন্ধি নয় ।
Jörg ডব্লু মিটাগ

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

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

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

2

ওওপির মাধ্যমে মূল ধারায় প্রবর্তিত সর্বাধিক দরকারী ধারণাটি আমার মনে,

  • যথাযথ মডুলারাইজেশন।
  • ডেটা এনক্যাপসুলেশন।
  • ব্যক্তিগত এবং পাবলিক ইন্টারফেসের মধ্যে পৃথকীকরণ পরিষ্কার করুন।
  • কোড এক্সটেনসিবিলিটির জন্য পরিষ্কার পদ্ধতি।

এই সমস্ত সুবিধাগুলিও উত্তরাধিকার বা এমনকি শ্রেণিগুলির মতো traditionalতিহ্যগত বাস্তবায়ন বিশদ ছাড়াই উপলব্ধি করা যায়। অ্যালান কে'র "অবজেক্ট-ওরিয়েন্টেড সিস্টেম" এর মূল ধারণাটি "পদ্ধতিগুলির" পরিবর্তে "বার্তা" ব্যবহার করেছিল এবং উদাহরণস্বরূপ সি ++ এর চেয়ে এর্লংয়ের নিকটবর্তী ছিল। গো দেখুন যা অনেকগুলি traditionalতিহ্যবাহী ওওপি বাস্তবায়নের বিশদটি সরিয়ে দেয় তবে তবুও যুক্তিসঙ্গত ওরিয়েন্টেড মনে হয়।

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

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.