चूँकि आप पायथन का उल्लेख करते हैं, प्रश्न विशुद्ध रूप से थ्योरिटिक नहीं है। इसलिए मैं प्रकारों पर एक व्यापक दृष्टिकोण देने की कोशिश करता हूं। प्रकार अलग-अलग लोगों के लिए अलग-अलग चीजें हैं। मैंने कम से कम 5 अलग-अलग (लेकिन संबंधित) प्रकार के विचार एकत्र किए हैं:
टाइप सिस्टम तार्किक प्रणाली और सेट सिद्धांत हैं।
एक प्रकार की प्रणाली प्रत्येक गणना मूल्य के साथ एक प्रकार को जोड़ती है। इन मूल्यों के प्रवाह की जांच करके, एक प्रकार की प्रणाली यह साबित करने या सुनिश्चित करने का प्रयास करती है कि कोई प्रकार की त्रुटियां नहीं हो सकती हैं।
प्रकार एक वर्गीकरण है जो विभिन्न प्रकार के डेटा की पहचान करता है, जैसे कि वास्तविक-मूल्यवान, पूर्णांक या बूलियन, जो उस प्रकार के लिए संभावित मान निर्धारित करता है; संचालन जो उस प्रकार के मूल्यों पर किया जा सकता है; डेटा का अर्थ; और उस प्रकार के मूल्यों को संग्रहीत किया जा सकता है
सार डेटा प्रकार उच्च स्तरीय भाषाओं में डेटा अमूर्तता के लिए अनुमति देते हैं। एडीटी को अक्सर मॉड्यूल के रूप में लागू किया जाता है: मॉड्यूल का इंटरफ़ेस एडीटी संचालन के अनुरूप प्रक्रियाओं की घोषणा करता है। यह जानकारी छिपाने की रणनीति क्लाइंट कार्यक्रमों को परेशान किए बिना मॉड्यूल के कार्यान्वयन को बदलने की अनुमति देती है।
प्रोग्रामिंग भाषा कार्यान्वयन मूल्यों पर संचालन के लिए मूल्यों की आवश्यकता और एल्गोरिदम को चुनने के लिए मूल्यों के प्रकारों का उपयोग करता है।
उद्धरण विकिपीडिया से हैं, लेकिन मैं बेहतर संदर्भ प्रदान कर सकता हूं जो एक आवश्यकता उत्पन्न होनी चाहिए।
रसेल के काम से टाइप -1 उत्पन्न हुआ, लेकिन आज वे केवल विरोधाभासों से रक्षा नहीं कर रहे हैं: होमोटोपी प्रकार सिद्धांत की टाइप की गई भाषा गणित को एक औपचारिक, मशीन-समझने योग्य भाषा में, और मनुष्य को नींव को समझने का एक नया तरीका है। गणित का। ("पुराना" तरीका एक स्वयंसिद्ध सेट सिद्धांत का उपयोग करके एन्कोडिंग है)।
टाइपिंग 2-5 कई अलग-अलग जरूरतों से प्रोग्रामिंग में पैदा हुई: बग से बचने के लिए, डेटा सॉफ्टवेयर डिजाइनरों और प्रोग्रामर के साथ काम करने के लिए, बड़े सिस्टम को डिजाइन करने और क्रमशः प्रोग्रामिंग भाषाओं को कुशलता से लागू करने के लिए।
C / C ++, Ada, Java, Python में टाइप सिस्टम रसेल के काम या बग्स से बचने की इच्छा से पैदा नहीं हुआ। वे विभिन्न प्रकार के डेटा का वर्णन करने की आवश्यकता से उत्पन्न हुए (उदाहरण के लिए "अंतिम नाम एक वर्ण स्ट्रिंग है और एक संख्या नहीं है"), सॉफ्टवेयर डिज़ाइन को संशोधित करता है और डेटा के लिए निम्न-स्तरीय अभ्यावेदन का चयन करता है। इन भाषाओं का कोई प्रकार -1 या टाइप -2 नहीं है। जावा प्रकार प्रणाली का उपयोग करके कार्यक्रम की शुद्धता साबित करने के माध्यम से नहीं बल्कि भाषा (कोई सूचक अंकगणितीय) और रनटाइम सिस्टम (वर्चुअल मशीन, बायोटेक सत्यापन) की सावधानीपूर्वक डिजाइन द्वारा बग से रिश्तेदार सुरक्षा सुनिश्चित करता है। जावा में टाइप सिस्टम न तो एक तार्किक प्रणाली है और न ही एक सेट सिद्धांत है।
हालांकि, एजडा प्रोग्रामिंग भाषा में टाइप सिस्टम रसेल के प्रकार प्रणाली (बाद के काम या प्रति मार्टिन-लोफ और अन्य गणितज्ञों पर आधारित) का एक आधुनिक संस्करण है। Agda में टाइप सिस्टम को गणितीय गुणों को उन गुणों के कार्यक्रम और प्रमाणों को व्यक्त करने के लिए डिज़ाइन किया गया है, यह एक तार्किक प्रणाली और एक निर्धारित सिद्धांत है।
यहाँ कोई श्वेत-श्याम भेद नहीं है: कई भाषाएँ बीच में फिट होती हैं। उदाहरण के लिए, हास्केल भाषा के प्रकार की प्रणाली में रसेल के काम की जड़ें हैं, इसे एक सरल Agda की प्रणाली के रूप में देखा जा सकता है, लेकिन गणितीय दृष्टिकोण से, यह तर्कहीन (स्व-विरोधाभासी) है यदि इसे तार्किक प्रणाली या एक सेट सिद्धांत के रूप में देखा जाए।
हालांकि, हास्केल कार्यक्रमों को बग से बचाने के लिए एक सैद्धांतिक वाहन के रूप में, यह बहुत अच्छी तरह से काम करता है। तुम भी कुछ संपत्तियों और उनके सबूतों को एन्कोड करने के लिए प्रकारों का उपयोग कर सकते हैं, लेकिन सभी संपत्तियों को एन्कोड नहीं किया जा सकता है, और प्रोग्रामर अभी भी साबित गुणों का उल्लंघन कर सकता है यदि वह हतोत्साहित गंदे हैक का उपयोग करता है।
स्साला का प्रकार प्रणाली रसेल के काम और अगाडा की सही प्रमाण भाषा से और भी अधिक है, लेकिन रसेल के काम में अभी भी जड़ें हैं।
औद्योगिक भाषाओं के गुणों को सिद्ध करने के लिए, जिनके प्रकार प्रणाली के लिए डिज़ाइन नहीं किए गए थे, कई दृष्टिकोण और प्रणालियाँ हैं।
दिलचस्प लेकिन अलग-अलग तरीकों के लिए, Coq और Microsoft बूगी अनुसंधान परियोजना देखें। Coq, Coq कार्यक्रमों से अनिवार्य कार्यक्रम उत्पन्न करने के लिए प्रकार सिद्धांत पर निर्भर करता है। बूगी संपत्तियों के साथ अनिवार्य कार्यक्रमों के एनोटेशन पर निर्भर करता है और उन गुणों को ज़ेड 3 प्रमेय के साथ साबित करता है जो Coq की तुलना में पूरी तरह से अलग दृष्टिकोण का उपयोग करते हैं।