উত্তরাধিকার সাব টাইপিং থেকে পৃথক কিভাবে?


15

প্রোগ্রামিং ভাষার দৃষ্টিকোণে, সাব-টাইপিং বলতে কী বোঝায়? শুনেছি "উত্তরাধিকার সাবটিপিং নয়"। তাহলে উত্তরাধিকার এবং সাবটাইপিংয়ের মধ্যে পার্থক্য কী?


6
আমি ভাবছি যদি এই প্রশ্নটি (এবং অন্যান্যরা এটি পছন্দ করে) পাবলিক বিটাতে প্রবেশ করে তখন নতুন সিএসএসই সাইটে পুনঃনির্দেশিত হতে পারে?
সুরেশ ভেঙ্কট

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

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

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

3
যাই হোক না কেন, ওপিকে
আন্দ্রেস রসবার্গ

উত্তর:


18

[অবজেক্ট-ওরিয়েন্টেড টাইপ সিস্টেমগুলির বিষয়গুলি সম্পর্কে আমি গভীরভাবে চিন্তা করিনি, তবে আলোচনাটি চালিয়ে নিতে আমি কী জানি তা বলব।]

আমরা বলি যে হ'ল বি-এর একটি সাব-টাইপ, যদি সমস্ত এ- টাইপ মানগুলি প্রতিটি প্রসঙ্গে ব্যবহার করা যায় যেখানে বি- টাইপ মানগুলি প্রত্যাশিত হয়। অথবা, অন্য কোনও উপায়ে বলতে গেলে , এ- প্রকারের মানগুলি বি- প্রকারের মান হিসাবে " মাস্ক্রেড " করতে পারে ।একজনবিএকজনবিএকজনবি

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

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

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

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

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

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


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

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