আপনি যেহেতু পাইথন উল্লেখ করেছেন প্রশ্নটি নিখুঁতভাবে টাইপ-তাত্ত্বিক নয়। তাই আমি ধরণের বিষয়ে আরও বিস্তৃত দৃষ্টিভঙ্গি দেওয়ার চেষ্টা করি। প্রকারভেদ বিভিন্ন লোকের কাছে আলাদা জিনিস। আমি কমপক্ষে ৫ টি স্বতন্ত্র (তবে সম্পর্কিত) ধরণের ধারণাগুলি সংগ্রহ করেছি:
প্রকার সিস্টেমগুলি লজিক্যাল সিস্টেম এবং তত্ত্বগুলি সেট করে।
একটি টাইপ সিস্টেম প্রতিটি গণিত মানের সাথে একটি প্রকারকে যুক্ত করে। এই মানগুলির প্রবাহ পরীক্ষা করে একটি টাইপ সিস্টেম প্রমাণ করার বা চেষ্টা করে যে কোনও ধরণের ত্রুটি ঘটতে পারে না।
প্রকারটি হ'ল বিভিন্ন ধরণের ডেটাগুলির মধ্যে একটিকে চিহ্নিত করে এমন শ্রেণিবদ্ধকরণ, যেমন বাস্তব-মূল্যবান, পূর্ণসংখ্যা বা বুলিয়ান, যা এই ধরণের জন্য সম্ভাব্য মানগুলি নির্ধারণ করে; যে ধরণের মানগুলিতে কাজ করা যায়; তথ্য অর্থ; এবং যে ধরণের মানগুলি সংরক্ষণ করা যায়
বিমূর্ত ডেটা প্রকারগুলি উচ্চ স্তরের ভাষাগুলিতে ডেটা বিমূর্তনের অনুমতি দেয়। এডিটিগুলি প্রায়শই মডিউল হিসাবে প্রয়োগ করা হয়: মডিউলটির ইন্টারফেস এডিটি অপারেশনগুলির সাথে সম্পর্কিত এমন প্রক্রিয়াগুলি ঘোষণা করে। এই তথ্য গোপন করার কৌশলটি ক্লায়েন্ট প্রোগ্রামগুলিকে বিরক্ত না করে মডিউলটির প্রয়োগ পরিবর্তন করার অনুমতি দেয়।
প্রোগ্রামিং ল্যাঙ্গুয়েজ বাস্তবায়ন মানগুলির ক্রিয়াকলাপের জন্য প্রয়োজনীয় মানগুলি এবং অ্যালগরিদমগুলি সঞ্চয় করার জন্য বিভিন্ন ধরণের মান ব্যবহার করে।
উদ্ধৃতিগুলি উইকিপিডিয়া থেকে এসেছে, তবে প্রয়োজনের উত্থাপনের পরে আমি আরও ভাল রেফারেন্স সরবরাহ করতে পারি।
প্রকার 1-এর উদ্ভব রসেলের কাজ থেকে হয়েছিল তবে আজ তারা কেবল প্যারাডক্স থেকে রক্ষা করছে না: হোমোপি টাইপ তত্ত্বের টাইপ করা ভাষাটি একটি আনুষ্ঠানিক, মেশিন-বোধগম্য ভাষায় গণিতকে এনকোড করার একটি নতুন উপায় এবং ভিত্তি বোঝার নতুন উপায় is গণিতের। ("পুরানো" উপায়টি অ্যাক্সিয়োমেটিক সেট তত্ত্বটি ব্যবহার করে এনকোডিং করছে)।
বিভিন্ন বিভিন্ন প্রয়োজন থেকে প্রোগ্রামিংয়ে 2-5 প্রকারের উদ্ভব হয়: বাগগুলি এড়ানোর জন্য, ডেটা সফটওয়্যার ডিজাইনার এবং প্রোগ্রামারদের সাথে কাজ করে শ্রেণিবদ্ধ করা, বৃহত সিস্টেমগুলি ডিজাইন করা এবং প্রোগ্রামিং ভাষার দক্ষতা যথাক্রমে প্রয়োগ করা।
সি / সি ++, অ্যাডা, জাভা, পাইথনে টাইপ সিস্টেমগুলি রাসেলের কাজ বা বাগগুলি এড়ানোর আকাঙ্ক্ষা থেকে উদ্ভূত হয়নি। এগুলি সেখানে বিভিন্ন ধরণের ডেটা বর্ণনা করার প্রয়োজন থেকে উদ্ভূত হয়েছিল (উদাঃ "শেষ নামটি একটি চরিত্রের স্ট্রিং এবং একটি সংখ্যা নয়"), সফ্টওয়্যার ডিজাইনকে আধুনিকীকরণ এবং উপাত্তের জন্য নিখুঁতভাবে নিম্ন-স্তরের উপস্থাপনা চয়ন করার জন্য। এই ভাষাগুলির কোনও প্রকার -1 বা প্রকার -2 নেই। জাভা ত্রুটিগুলি থেকে টাইপ সিস্টেম ব্যবহার করে প্রোগ্রামের সঠিকতা প্রমাণের মাধ্যমে নয়, তবে ভাষার যত্নশীল নকশা (কোনও পয়েন্টার পাটিগণিত নেই) এবং রানটাইম সিস্টেম (ভার্চুয়াল মেশিন, বাইটকোড যাচাইকরণ) দ্বারা আপেক্ষিক সুরক্ষা নিশ্চিত করে। জাভাতে টাইপ সিস্টেম না কোনও লজিক্যাল সিস্টেম এবং না কোনও সেট তত্ত্ব।
তবে আগদা প্রোগ্রামিং ল্যাঙ্গুয়েজে টাইপ সিস্টেমটি রাসেলের টাইপ সিস্টেমের একটি আধুনিক রূপ (পরবর্তী কাজ বা পের মার্টিন-লোফ এবং অন্যান্য গণিতবিদদের উপর ভিত্তি করে)। আগদার টাইপ সিস্টেমটি প্রোগ্রামের গাণিতিক বৈশিষ্ট্য এবং সেই বৈশিষ্ট্যগুলির প্রমাণগুলি প্রকাশ করার জন্য ডিজাইন করা হয়েছে, এটি একটি যৌক্তিক সিস্টেম এবং একটি সেট তত্ত্ব।
এখানে কোনও সাদা-সাদা পার্থক্য নেই: অনেকগুলি ভাষা এর মধ্যে ফিট করে। উদাহরণস্বরূপ, হাস্কেল ভাষার টাইপ সিস্টেমটি রাসেলের কাজকর্মের শিকড় রয়েছে, সরল আগদার সিস্টেম হিসাবে দেখা যেতে পারে, তবে গাণিতিক দৃষ্টিকোণ থেকে যদি এটি লজিক্যাল সিস্টেম বা সেট তত্ত্ব হিসাবে দেখা হয় তবে এটি বেমানান (স্ব-বিরোধী)।
তবে, বাগ থেকে হ্যাস্কেল প্রোগ্রামগুলি রক্ষার জন্য একটি তাত্ত্বিক বাহন হিসাবে, এটি বেশ ভালভাবে কাজ করে। এমনকি আপনি নির্দিষ্ট বৈশিষ্ট্য এবং তাদের প্রমাণগুলি এনকোড করতে প্রকারগুলি ব্যবহার করতে পারেন তবে সমস্ত বৈশিষ্ট্য এনকোড করা যায় না এবং প্রোগ্রামার এখনও নিরুৎসাহিত নোংরা হ্যাক ব্যবহার করলে প্রমাণিত বৈশিষ্ট্যগুলি লঙ্ঘন করতে পারে।
স্কেলার টাইপ সিস্টেমটি রাসেলের কাজ এবং আগদার নিখুঁত প্রুফ ভাষা থেকে আরও দূরে, তবে এখনও রাসেলের কাজের মূল রয়েছে।
শিল্প ভাষার বৈশিষ্ট্য যা প্রকারের প্রকারভেদগুলির জন্য প্রকারের সিস্টেমগুলি ডিজাইন করা হয়নি, সেখানে অনেকগুলি পদ্ধতি এবং সিস্টেম রয়েছে।
আকর্ষণীয় তবে ভিন্ন পদ্ধতির জন্য কক এবং মাইক্রোসফ্ট বুগি গবেষণা প্রকল্প দেখুন। কোক প্রোগ্রামগুলি থেকে আবশ্যক প্রোগ্রাম উত্পন্ন করতে কোক প্রকার তত্ত্বের উপর নির্ভর করে। বুগি প্রপার্টি সহ অত্যাবশ্যকীয় কর্মসূচিগুলির টীকাগুলির উপর নির্ভর করে এবং কোকের চেয়ে সম্পূর্ণ ভিন্ন পদ্ধতির সাহায্যে জেড 3 উপপাদক প্রবাদযুক্ত সেই বৈশিষ্ট্যগুলি প্রমাণ করার উপর নির্ভর করে।