এটি সাধারণত গৃহীত হয় যে জাভা জেনেরিকগুলি কিছু গুরুত্বপূর্ণ উপায়ে ব্যর্থ হয়েছিল। ওয়াইল্ডকার্ডস এবং সীমাগুলির সংমিশ্রণটি কিছু মারাত্মক অপঠনযোগ্য কোডের দিকে নিয়ে যায়।
যাইহোক, আমি যখন অন্য ভাষার দিকে নজর রাখি, তখন সত্যিই আমি এমন একটি জেনেরিক টাইপ সিস্টেম খুঁজে পাই না যা প্রোগ্রামাররা এতে খুশি।
যদি আমরা এই জাতীয় ধরণের সিস্টেমের নকশা লক্ষ্য হিসাবে নিম্নলিখিতটি নিই:
- সর্বদা পঠনযোগ্য-সহজ প্রকারের বিবরণ উত্পন্ন করে
- শিখতে সহজ (covariance, বৈপরীত্য ইত্যাদির উপর ব্রাশ করার প্রয়োজন নেই))
- সংকলন-সময় ত্রুটির সংখ্যা সর্বাধিক করে
এমন কোন ভাষা আছে যে এটি সঠিকভাবে পেয়েছে? আমি যদি গুগল করি তবে কেবলমাত্র আমি দেখতে পাচ্ছি হ'ল টাইপ সিস্টেমটি ভাষা এক্সে কীভাবে সফল হয় সে সম্পর্কে অভিযোগ। জেনেরিক টাইপিংয়ের মধ্যে এই জাতীয় জটিলতা কি অন্তর্নিহিত? সংকলনের সময় 100% টাইপ সুরক্ষা যাচাই করার চেষ্টা করা আমাদের ছেড়ে দেওয়া উচিত?
আমার মূল প্রশ্নটি হল এই তিনটি লক্ষ্য সম্পর্কে শ্রদ্ধার সাথে কোন ভাষাটি "সঠিকভাবে এটি পেয়েছে"? আমি বুঝতে পারি যে এটি ব্যক্তিগত, কিন্তু এখনও পর্যন্ত আমি এমন একটি ভাষাও খুঁজে পাই না যেখানে এটির সমস্ত প্রোগ্রামাররা একমত নন যে জেনেরিক টাইপ সিস্টেমটি একটি গোলযোগ।
সংযোজন: যেমন উল্লেখ করা হয়েছে, সাব টাইপিং / উত্তরাধিকার এবং জেনেরিকগুলির সংমিশ্রণটি জটিলতা সৃষ্টি করে, তাই আমি সত্যিই এমন একটি ভাষা খুঁজছি যা উভয়কেই সংযুক্ত করে এবং জটিলতার বিস্ফোরণ এড়ায়।
Foo<T> where SiameseCat:T
) এবং জেনেরিক ধরণের কোনও সম্ভাবনা নেই যা রূপান্তরযোগ্য নয়Object
। আইএমএইচও,। নেট মোট কাঠামোগত ধরণের যা একই ধরণের, তবে আরও বেয়ার-বোনড থেকে উপকৃত হবে। যদি KeyValuePair<TKey,TValue>
এ জাতীয় ধরণ ছিল তবে IEnumerable<KeyValuePair<SiameseCat,FordFocus>>
একটিতে কাস্ট করা যেতে পারে IEnumerable<KeyValuePair<Animal,Vehicle>>
, তবে কেবল যদি টাইপটি বক্স করতে না পারা যায়।
easy-to-read type declarations
? তৃতীয় মানদণ্ডটিও দ্ব্যর্থক: উদাহরণস্বরূপ, আমি সীমা সূচকগুলি ব্যতিক্রমের বাইরে সীমাবদ্ধকরণের সময় ত্রুটিগুলিতে রূপান্তর করতে পারি যদি না আপনি সংকলন সময়ে সূচিটি অংক করতে পারি তবে আমি আপনাকে সূচী অ্যারে না দিয়ে। এছাড়াও, দ্বিতীয় মানদণ্ডটি সাব-টাইপিংয়ের বাইরে চলে। এটি অগত্যা কোনও খারাপ জিনিস নয় তবে আপনি কী জিজ্ঞাসা করছেন সে সম্পর্কে আপনার সচেতন হওয়া উচিত।