यह प्रश्न सभी शब्दार्थों के बारे में है
अगर मैं आपको यह डेटा देता हूं: 12
यह किस प्रकार का है? आपके पास निश्चित रूप से जानने का कोई तरीका नहीं है। एक पूर्णांक हो सकता है - एक फ्लोट हो सकता है - एक स्ट्रिंग हो सकता है। इस अर्थ में यह बहुत "अनकैप्ड" डेटा है।
अगर मैं आपको एक काल्पनिक भाषा देता हूं, जो आपको इस डेटा पर "ऐड", "सबट्रेक्ट", और "कॉन्कैटनेट" जैसे ऑपरेटरों का उपयोग करने देता है और डेटा का कुछ अन्य मनमाना टुकड़ा "प्रकार" कुछ हद तक अप्रासंगिक है (मेरी काल्पनिक भाषा के लिए (उदाहरण) : शायद add(12, a)
पैदावार 109
जो 12
की ascii मूल्य से अधिक है a
)।
चलिए C एक सेकंड के लिए बात करते हैं। C बहुत अधिक आपको डेटा के किसी भी मनमाने टुकड़े के साथ जो कुछ भी आप चाहते हैं वह करने देता है। यदि आप एक ऐसे फ़ंक्शन का उपयोग कर रहे हैं जो दो uint
s लेता है - तो आप जो कुछ भी चाहते हैं उसे पास कर सकते हैं और पास कर सकते हैं - और मानों की व्याख्या केवल uint
s के रूप में की जाएगी । इस लिहाज से सी "अनटाइप्ड" है (यदि आप इसे इस तरह से मानते हैं)।
हालाँकि - और ब्रेंडन की बात पर - अगर मैंने आपको बताया कि "मेरी उम्र है 12
" - तो 12
एक प्रकार है - कम से कम हम जानते हैं कि मैं संख्यात्मक है। संदर्भ के साथ सब कुछ एक प्रकार का है - भाषा की परवाह किए बिना।
यही कारण है कि मैंने शुरुआत में कहा - आपका प्रश्न शब्दार्थ में से एक है। "अनकैप्ड" का अर्थ क्या है? मुझे लगता है कि जब ब्रेंडन ने "कोई स्थिर प्रकार नहीं" कहा तो सिर पर कील ठोक दी - क्योंकि यह सब संभवतः इसका मतलब हो सकता है। मनुष्य स्वाभाविक रूप से चीजों को प्रकारों में वर्गीकृत करता है। हम सहज रूप से जानते हैं कि एक कार और एक बंदर के बीच मौलिक रूप से कुछ अलग है - उन भेदों को बनाने के लिए कभी भी सिखाया नहीं जाता है।
शुरुआत में मेरे उदाहरण पर वापस लौटते हुए - एक ऐसी भाषा जो "प्रकारों की परवाह नहीं करती" (प्रति-से) आपको वाक्यविन्यास त्रुटि पैदा किए बिना "उम्र" और "नाम" जोड़ सकती है ... लेकिन इसका मतलब यह नहीं है कि यह एक तार्किक रूप से ध्वनि संचालन है।
जावास्क्रिप्ट आपको "त्रुटियों" पर विचार किए बिना सभी प्रकार की पागल चीजें करने दे सकता है। इसका मतलब यह नहीं है कि आप जो कर रहे हैं वह तार्किक रूप से ध्वनि है। डेवलपर के लिए यह काम करता है।
एक प्रणाली / भाषा है जो संकलन / निर्माण / व्याख्या समय "अनकैप्ड" या "डायनामिक टाइप" पर प्रकार की सुरक्षा को लागू नहीं करती है?
शब्दार्थ।
संपादित करें
मैं यहां कुछ जोड़ना चाहता था क्योंकि कुछ लोगों को "हाँ, पर पकड़ा जा रहा है, लेकिन जावास्क्रिप्ट में कुछ" प्रकार "हैं।"
किसी और के उत्तर पर मेरी टिप्पणी में मैंने कहा:
जावास्क्रिप्ट में मेरे पास ऐसी वस्तुएं हो सकती हैं जिन्हें मैंने "बंदर" बनाया है और जिन वस्तुओं को मैंने "मनुष्य" के रूप में बनाया है और कुछ कार्यों को केवल "मानव", केवल अन्य "बंदरों" पर संचालित करने के लिए डिज़ाइन किया जा सकता है, और अभी तक दूसरों पर केवल "हथियारों के साथ चीजें"। भाषा को कभी बताया गया है या नहीं, वहाँ वस्तुओं की एक ऐसी श्रेणी है जैसे "हथियारों के साथ चीजें" असेंबली के लिए अप्रासंगिक है ("अप्रकाशित") जैसा कि यह जावास्क्रिप्ट ("गतिशील") है। यह सभी तार्किक अखंडता का मामला है - और एकमात्र त्रुटि ऐसी चीज का उपयोग करना होगा जिसमें उस पद्धति के साथ हथियार नहीं थे।
इसलिए, अगर आप जावास्क्रिप्ट को आंतरिक रूप से "कुछ प्रकार की धारणा" मानते हैं - और इसलिए, "गतिशील प्रकार" - और सोचते हैं कि यह किसी भी तरह "एक अनकैप्ड सिस्टम से अलग" है - आपको उपरोक्त उदाहरण से देखना चाहिए कि कोई भी "धारणा" प्रकार "यह आंतरिक रूप से वास्तव में अप्रासंगिक है।
उदाहरण के लिए, C # के साथ एक ही ऑपरेशन करने के लिए, मुझे एक इंटरफ़ेस की आवश्यकता होगी जिसे ICreatureWithArms
कुछ कहा जाए । जावास्क्रिप्ट में ऐसा नहीं है - सी या एएसएम में ऐसा नहीं है।
स्पष्ट रूप से, जावास्क्रिप्ट को किसी भी प्रकार की "समझ" है या नहीं यह बिल्कुल अप्रासंगिक है।