संक्षेप में: शैक्षणिक संदर्भों में टाइप किए गए सिस्टम कैसे वर्गीकृत किए जाते हैं; विशेष रूप से, मैं उन प्रतिष्ठित स्रोतों को कहाँ पा सकता हूँ जो विभिन्न प्रकार के प्रकारों के बीच अंतर स्पष्ट करते हैं?
एक अर्थ में इस प्रश्न के साथ कठिनाई यह नहीं है कि मुझे उत्तर नहीं मिल रहा है, बल्कि यह कि मैं बहुत अधिक खोज सकता हूं, और कोई भी सही नहीं है। पृष्ठभूमि मैं टाइपिंग के बारे में हास्केल विकी पर एक लेख को बेहतर बनाने का प्रयास कर रहा हूं , जो वर्तमान में निम्नलिखित भेदों का दावा करता है:
- कोई टाइपिंग नहीं: भाषा में किसी भी प्रकार की धारणा नहीं है, या टाइप किए गए परिप्रेक्ष्य से: भाषा में बिल्कुल एक प्रकार है। असेंबली लैंग्वेज में केवल 'बिट पैटर्न' टाइप होता है, Rexx और Tk में केवल 'टेक्स्ट' टाइप होता है, कोर मैटलैब में केवल 'कॉम्प्लेक्स-वैल्यूड मैट्रिक्स' टाइप होता है।
- कमजोर टाइपिंग: केवल कुछ विशिष्ट प्रकार होते हैं और शायद कई प्रकार के पर्यायवाची होते हैं। ईजी सी बूलियन, पूर्णांक, वर्ण, बिट सेट और गणना के लिए पूर्णांक संख्याओं का उपयोग करता है।
- मजबूत टाइपिंग: अडा, विरथियन भाषाओं (पास्कल, मोडुला -2), ईफेल जैसे प्रकारों के बारीक दानेदार सेट
यह पूरी तरह से मेरी व्यक्तिगत धारणा के विपरीत है, जो की रेखाओं के साथ अधिक था:
- कमजोर टाइपिंग: ऑब्जेक्ट्स के प्रकार होते हैं, लेकिन जब संदर्भ इसकी मांग करता है, तो इसे अन्य प्रकारों में बदल दिया जाता है। उदाहरण के लिए, पर्ल, पीएचपी और जावास्क्रिप्ट सभी भाषाएं हैं जिनमें
"1"
कम या ज्यादा किसी भी संदर्भ का1
उपयोग किया जा सकता है। - मजबूत टाइपिंग: ऑब्जेक्ट में प्रकार होते हैं, और कोई अंतर्निहित रूपांतरण नहीं होते हैं (हालांकि उन्हें लोड करने के लिए ओवरलोडिंग का उपयोग किया जा सकता है), इसलिए गलत संदर्भ में किसी वस्तु का उपयोग करना एक त्रुटि है। पायथन में, एक स्ट्रिंग या फ्लोट के साथ एक सरणी को अनुक्रमित करते हुए एक टाइप-इयरर अपवाद को फेंकता है; हास्केल में यह संकलन के समय विफल हो जाएगा।
मैंने इस क्षेत्र के अन्य लोगों से इस बारे में राय मांगी कि मैं किस क्षेत्र में अधिक अनुभवी हूं, और किसी ने यह लक्षण वर्णन दिया है:
- कमजोर टाइपिंग: डेटा पर अवैध संचालन को नियंत्रित या अस्वीकार नहीं किया जाता है, लेकिन केवल अमान्य / मनमाने परिणाम उत्पन्न करता है।
- मजबूत टाइपिंग: डेटा पर कार्रवाई केवल तभी अनुमत है जब डेटा ऑपरेशन के साथ संगत हो।
जैसा कि मैं इसे समझता हूं, पहला और आखिरी चरित्र सी को कमजोर रूप से टाइप करेगा, दूसरा इसे दृढ़ता से टाइप करेगा। पहला और दूसरा पर्ल और PHP को कमजोर टाइप का कहेंगे, तीसरा उन्हें दृढ़ता से टाइप करेगा। तीनों ने पायथन को दृढ़ता से टाइप किया।
मुझे लगता है कि ज्यादातर लोग मुझे "अच्छी तरह से बताएंगे, कोई सहमति नहीं है, शर्तों का कोई अर्थ नहीं है"। उन लोगों को गलत कर रहे हैं, मैं इसके बारे में सुनने के लिए खुशी होगी, लेकिन अगर वे सही हैं, तो कैसे करते सीएस शोधकर्ताओं का वर्णन और प्रकार प्रणालियों की तुलना? मैं किस शब्दावली का उपयोग कर सकता हूं जो कम समस्याग्रस्त है?
संबंधित प्रश्न के रूप में, मुझे लगता है कि गतिशील / स्थिर अंतर अक्सर "संकलन समय" और "रन टाइम" के संदर्भ में दिया जाता है, जो मुझे असंतोषजनक लगता है कि किसी भाषा को संकलित किया गया है या नहीं, यह उस भाषा की संपत्ति नहीं है इसके कार्यान्वयन के रूप में। मुझे लगता है कि गतिशील बनाम स्थिर टाइपिंग का विशुद्ध रूप से अर्थ-संबंधी विवरण होना चाहिए; "एक स्थिर भाषा वह है जिसमें हर उपसंचाई को टाइप किया जा सकता है" की तर्ज पर कुछ। मैं किसी भी विचार, विशेष रूप से संदर्भों की सराहना करूंगा, जो इस धारणा को स्पष्टता प्रदान करते हैं।