সুস্পষ্ট বনাম সুস্পষ্ট সাব টাইপিং


18

এই পৃষ্ঠাটি দৃser়ভাবে জানায়

অনেক ভাষা অন্তর্নিহিত সাব টাইপিং (কাঠামোগত সমতা) ব্যবহার করে না

আমি বেশিরভাগ প্রোগ্রামিং ভাষা ব্যবহার করেছি যা সুস্পষ্ট সাবটাইপিং ব্যবহার করে । উপরোক্ত নোটগুলিতে বর্ণিত হিসাবে অন্তর্নিহিত সাব টাইপিংয়ের সুবিধাগুলি কী কী।


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

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

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

1
আমার সম্ভবত এটি বলা উচিত ছিল "খুব শক্ত", যেহেতু প্রতিবিম্বের পরে আমি বুঝতে পারি যে আমি উত্তরের প্রতি খুব আগ্রহী।
নীল কৃষ্ণস্বামী

1
ঠিক আছে, আমি বিশ্বাসী আমি আমার ডাউনভোটটি সরিয়ে ফেলব তবে সিস্টেম আমাকে দেয় না।
ডেভিড এপস্টেইন

উত্তর:


19

সংক্ষিপ্ত উত্তরটি "বিদ্যমান কোডের অতিরিক্ত বৈশিষ্ট্য যাচাই করা"। দীর্ঘ উত্তর অনুসরণ করা।

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

কাঠামোগত সাব-টাইপিং সম্পর্ক A <: B এর ব্যাখ্যার মূল অপারেশনাল পার্থক্য হ'ল এটি (রানটাইম / কম্পাইলটাইম) গণ্য বিষয়বস্তু সহ বাস্তব জবরদস্তির দ্বারা সাক্ষী কিনা, বা এটি পরিচয় দমন দ্বারা সাক্ষী হতে পারে কিনা। যদি পূর্বের, গুরুত্বপূর্ণ তাত্ত্বিক সম্পত্তিটি ধারণ করতে হয় তবে তা হল "একত্রিতকরণ", অর্থাৎ যদি এটিকে বি এর একটি কাঠামোগত উপপ্রকার বলে দেখানোর একাধিক উপায় থাকে, তবে তার সাথে সংযুক্ত প্রতিটি জোর একই গণনাভিত্তিক সামগ্রী থাকতে হবে।

আপনি যে লিঙ্কটি দিয়েছেন তা মনে হচ্ছে কাঠামোগত সাব টাইপিংয়ের দ্বিতীয় ব্যাখ্যা মনে আছে, যেখানে A <: B পরিচয় জোর করে সাক্ষী হতে পারে। এটিকে কখনও কখনও সাব টাইপিংয়ের একটি "সাবসেট ব্যাখ্যা" বলা হয়, নির্বুদ্ধ দৃষ্টিভঙ্গি গ্রহণ করে যে কোনও প্রকার মানগুলির একটি সেটকে উপস্থাপন করে এবং তাই A <: B কেবল টাইপ এ এর ​​প্রতিটি মানও বি টাইপের মান হিসাবে হয় It কখনও কখনও "সংশোধন টাইপিং" নামে পরিচিত, এবং মূল অনুপ্রেরণার জন্য পড়ার জন্য একটি ভাল কাগজ হ'ল এমএম এর জন্য ফ্রিম্যান এবং পেফেনিংয়ের পরিশোধন প্রকার । এফ # তে আরও সাম্প্রতিক অবতারের জন্য, আপনি নিরাপদে বাস্তবায়নের জন্য বেনস্টন এট আল, পরিশোধিত প্রকারগুলি পড়তে পারেন। মূল ধারণাটি হ'ল একটি বিদ্যমান প্রোগ্রামিং ল্যাঙ্গুয়েজ নিতে হবে যা ইতিমধ্যে প্রকারের (বা নাও থাকতে পারে) তবে যে ধরণের মধ্যে এতগুলি গ্যারান্টি নেই (উদাহরণস্বরূপ, কেবলমাত্র মেমরির সুরক্ষা), এবং প্রোগ্রামগুলির উপ-স্তর নির্বাচন করে টাইপের একটি দ্বিতীয় স্তর বিবেচনা করুন অতিরিক্ত, আরও সুনির্দিষ্ট বৈশিষ্ট্য।

(এখন, আমি যুক্তি দেব যে সাবটাইপিংয়ের এই ব্যাখ্যার পিছনে গাণিতিক তত্ত্বটি এখনও যতটা হওয়া উচিত ঠিক ততটা বোঝা যায় নি, এবং সম্ভবত এটি কারণ এটির ব্যবহারগুলি যতটা হওয়া উচিত ততটা প্রশংসা হয় না One একটি সমস্যা হ'ল "সেট" মূল্যবোধগুলির "প্রকারের ব্যাখ্যা খুব নির্বোধ, এবং তাই কখনও কখনও এটি পরিমার্জন না করে পরিত্যাজ্য হয় another অন্য যুক্তির জন্য যে সাবটিপিংয়ের এই ব্যাখ্যাটি আরও গাণিতিক মনোযোগের দাবি রাখে, অ্যাবস্ট্রাক্ট স্টোন দ্বৈততায় পল টেলরের সাবস্পেসের ভূমিকা পড়ুন ))


হাই হাই, সুন্দর উত্তর! আমি যুক্ত করব যে একটি লা ওও নামমাত্র সাবটাইপিং মূলত একটি অ-পরিচয় জবরদস্তির শ্রেণীর সংজ্ঞা দেওয়ার একটি উপায় যা তবুও কোনও বিকল্প নেই realized অর্থাত, উত্তরাধিকার দ্বারা প্ররোচিত বস্তুর প্রস্থের সাব-টাইপিংয়ে আনুষ্ঠানিকভাবে একটি অ-পরিচয় জবরদস্তি জড়িত (উদাহরণস্বরূপ, একটি জোর জাল অর্থ আপনি সি কে ফেলে দেন ), তবে ক্রমান্বয়ে রেকর্ডগুলি স্মৃতিতে ফাঁকে রেখে আপনি উভয় প্রকারের জন্য A এবং B উপাদান প্রজেক্ট করতে একই বাইনারি কোড ব্যবহার করতে পারেন । একজন×বি×সি<:একজন×বিসিএকজনবি
নীল কৃষ্ণস্বামী

1
অনুকূল মেমরি লেআউটটি বের করা অপ্টিমাইজারের কাজ, সুতরাং পরিচয় হিসাবে জবরদস্তিগুলি সত্যই অপ্টিমাইজেশনের ফলাফল হওয়া উচিত।
আন্দ্রেজ বাউর 19

2
কেবলমাত্র আমার উত্তরের প্রসঙ্গে আন্ড্রেজের মন্তব্যটি পরিষ্কার করার জন্য, একটি পরিশোধন টাইপিং ব্যাখ্যায়, সাব-টাইপিং সম্পর্কগুলি সর্বদা সংজ্ঞা অনুসারে পরিচয় দমন দ্বারা সাক্ষী হয় , কারণ পরিশোধনকারী প্রকারগুলি কোনও অতিরিক্ত গণ্য বিষয়বস্তু রাখে না। অন্য কথায়, যদি A এবং B দুটি ধরণের সংশোধন ("উপসেট" / "বৈশিষ্ট্য") হয় তবে X, A <: B X এর প্রতিটি মান x এর জন্য দৃser়ভাবে জোর দেয় যে x: A এর পরেও x: B হবে। এই জাতীয় বিবৃতি যাচাই বা মিথ্যা হিসাবে চিহ্নিত করা যেতে পারে, তবে রানটাইমের সময় এর কোনও প্রভাব নেই, যেহেতু প্রমাণগুলি যে X: A এবং x: B রানটাইমের সময় উপস্থিত নেই।
নোয়াম জিলবার্গার

1
@ নোম: আমি একমত, তবে কেবলমাত্র যখন আমরা একটি একক ভাষার মেটাথেরি নিয়ে কথা বলি, এবং না যে আমরা সংকলনের কথা বলছি। সনাক্তকরণের জবরদস্তিগুলি এমন পদ্ধতিগুলির দ্বারা উপলব্ধি করা যেতে পারে যা প্রচুর কাজ করে এবং অ-পরিচয় জবরদস্তিগুলি এমন পদ্ধতি দ্বারা উপলব্ধি করা যায় যা কিছু করে না। কংক্রিটলি, ধরুন যে আমাদের একটি টাইপ , এবং একটি পরিশোধক { x : Nএন । তারপরে আমরা পুরো টাইপের প্রতিনিধিত্ব করতে মেমরি বরাদ্দ থাকা সত্ত্বেও আমরা একটি একক বাক্সবদ্ধ শব্দের সাথে পরিমার্জনের উপাদানগুলি প্রয়োগ করতে পারি। এখানে পরিচয় জবরদস্তি অবশ্যই বাস্তব গণনার মাধ্যমে উপলব্ধি করা উচিত। {এক্স:এন|এক্স<232}
নীল কৃষ্ণস্বামী

3
@ নীল: আমি এটিকে দুটি পদক্ষেপে বিভক্ত করব, ১. গণনা প্রয়োগ করুন - এটির পরিশোধন থেকে থেকে স্বতন্ত্র পরিচয় জোর { x : N | x < 2 32 } , তারপরে ২, N থেকে আংশিকভাবে সংজ্ঞায়িত জোর প্রয়োগ করুন (সম্পূর্ণ পৃথক) একক আনবক্সযুক্ত শব্দের প্রকার, যা পরিমার্জনে সম্পূর্ণরূপে সংজ্ঞায়িত { x : N | x < 2 32 } । হতে পারে এটি চুল কেটে দিচ্ছে ... তবে যে কোনও ক্ষেত্রে এটি আমি যা বলেছিলাম তা দেখায় "যে সাবটাইপিংয়ের এই ব্যাখ্যার পিছনে গাণিতিক তত্ত্বটি এখনও হওয়া উচিত ঠিক তেমন বোঝা যায়নি" :)এন{এক্স:এন|এক্স<232}এন{এক্স:এন|এক্স<232}
নোয়াম জিলবার্গার

4

এই উত্তরটি নোমের দুর্দান্ত উত্তরের এক ধরণের ন্যূনতম পরিপূরক। আগ্রহের একটি ডেটা পয়েন্ট হ'ল সি ++ ধারণাগুলির ভাগ্য যা নামমাত্র এবং কাঠামোগত ধারণার একত্রিত করার প্রয়াসে প্রতিষ্ঠিত হয়েছিল।

প্রাসঙ্গিক আলোচনার বেশিরভাগ লিঙ্ক সহ এখানে একটি দুর্দান্ত লিখনআপ রয়েছে: http://bartoszmilewski.wordpress.com/2010/06/24/c-concepts-a-postmortem/

যাইহোক, উপরের লিখিতভাবে নামমাত্র বনাম কাঠামোগত সমস্যাটি কোনও গভীরতায় আলোচনা করে না। এখানে আরও একটি লিখনআপ রয়েছে, যা করে: http://nerdland.net/2009/07/alas-concepts-we-hardly-knew-ye/

মূল কাগজ উভয়ই ইঙ্গিত করে বার্জন স্ট্রস্ট্রপের "ধারণাগুলির ব্যবহারকে সরলকরণ": http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2906.pdf , যা ব্যবহারিক ক্ষেত্রে চলে কিছু গভীরতায় সমস্যাগুলির মুখোমুখি।

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

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