কেন সি # একাধিক উত্তরাধিকার সমর্থন করে না?


10

এমনকি যদি এটি খারাপ অভ্যাস হতে পারে তবে আমি বলব যে সময় এসেছে যে এটি তার উদ্দেশ্য পূরণ করবে।


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

1
@ ডেভিজেফার সম্ভবত, তবে এটি সঠিকভাবে পাওয়া শক্ত বলে মনে হচ্ছে। আপনি কি এমন কোনও ভাষা বা বাস্তবায়ন সম্পর্কে জানেন যেখানে এটি সত্যই ভাল কাজ করে?

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

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

উত্তর:


14

/programming/995255/why-is-m ુટple-inheritance-not-allowed-in-java-or-c এই প্রশ্নটি সুন্দরভাবে কভার করে।

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

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


8

কেবল কেন নয় তা বোঝানোর জন্য, একাধিক উত্তরাধিকার সি ++ দ্বারা সমর্থিত তবে আপনি এমআই এর সাথে যে স্টাফটি বেশিরভাগ পরিচ্ছন্ন ফ্যাশনে তৈরি করতে পারবেন তা বেশিরভাগ ক্ষেত্রে সম্পন্ন করতে পারেন বলে দৃ strongly়ভাবে নিরুৎসাহিত করা হচ্ছে। সি ++ এর বিপরীতে, সি # একটি "হাইব্রিড" প্রকারের ওওপি ভাষা নয়, এটি পূর্ববর্তী ভাষা থেকে বিকশিত হয়নি।

আপনার যদি সত্যিই একাধিক উত্তরাধিকারের প্রয়োজন হয় তবে আপনি একাধিক ইন্টারফেস প্রয়োগ করতে পারেন।


6

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

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


2
আইফেল, কমন লিস্প এবং ডিলান সম্পর্কে আপনার কী ধারণা? আমি জানি যে এগুলি তিনটিই সহজ এবং দরকারী উভয়ই। এবং আমি জানি যে কমন লিস্প এবং ডিলান উভয়ই প্রতিযোগিতা করতে পারে এবং এমনকি সি ++ (এবং প্রায়শই সি পর্যন্ত) পারফরম্যান্সেও পরাজিত করতে পারে, যাতে দক্ষতা সন্তুষ্ট বলে মনে হয়। আমি কি জানি যে আইফেল কম্পাইলার ভয়ঙ্করভাবে ধীর কিন্তু আমি কম্পাইল কোড এটা উৎপন্ন কর্মক্ষমতা সম্পর্কে কিছুই পাশে জানি।
Jörg W Mittag

3

একাধিক উত্তরাধিকার, আপনি যদি এটি ব্যবহার করেন তবে খুব জটিল পরিস্থিতিতে ফলাফল হয় complex অল্প বেনিফিট সহ খুব বেশি জটিলতা হ'ল কেন এটি জাভা এবং সি # উভয়ের জন্যই বাতিল করা হয়েছিল।


-1

কারণ ভাষা ডিজাইনাররা স্পষ্টতই একটি ভাল সি ++ উত্পাদন করতে চেয়েছিলেন, সাধারণভাবে কোনও উন্নত ভাষা নয়। (তারা কতটা সফল হয়েছিল তা নিয়ে বিতর্ক করা যেতে পারে))

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

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