java - How can we have a dynamically typed language over JVM? -


हमारे पास Jython , JRuby , Groovy गतिशील रूप से टाइप किया जाता है और JVM पर चलता है। मैं समझता हूं कि ये भाषाएँ बाइटकोड के लिए संकलित हैं

अन्य भाषाओं जैसे Scala का समर्थन प्रकार का अनुमान है, और यह स्पष्ट है कि कंपाइलर हमारे लिए प्रकार का अनुमान लगाता है।

लेकिन जावा एक स्थैतिक भाषा है और यह बीटाकोड के लिए संकलित है, क्या इसका अर्थ बाइटकिक्स डायनामिक टाइपिंग का समर्थन करता है?

उदाहरण के लिए जावा में हमें संकलन समय पर चर प्रकार घोषित करने की आवश्यकता है, और इसे कभी भी बदल नहीं सकता है। लेकिन पायथन के मामले में हमें किसी प्रकार की घोषणा नहीं करनी पड़ती है, लेकिन हम किसी भी प्रकार के मूल्य को समान समय के दौरान एक ही चर के लिए असाइन कर सकते हैं।

कैसे एक स्थिर भाषा पर गतिशील टाइपिंग काम करता है?

लेकिन जावा एक स्थैतिक भाषा है और यह बीटाकोड के लिए तैयार है, क्या इसका मतलब है कि बाइटको डायनेमिक टाइपिंग का समर्थन करता है?

हां इसका मतलब यह है।

आप देखते हैं कि जावा पूरी तरह से स्टैटिकली टाइप की गई भाषा नहीं है। जब भी आप किसी ऑब्जेक्ट को किसी प्रकार से एक उपप्रकार तक डालते हैं, तो JVM एक डायनामिक (रनटाइम) टाइपचेक का प्रदर्शन करता है यह जांचने के लिए कि ऑब्जेक्ट वास्तव में उपप्रकार का उदाहरण है। instanceof का उपयोग करना गतिशील प्रकार की जांच का एक और उदाहरण है।

जब आप प्रतिबिंब एपीआई का उपयोग करते हैं, और यहां तक ​​कि जब आप जेनेरिक का उपयोग करते हैं तब भी डायनेमिक प्रकार की जांच का उपयोग कवच के तहत किया जाता है।

एक स्थिर भाषा पर गतिशील टाइपिंग कार्य कैसे करता है?

यह एक विशुद्ध रूप से स्थिर रूप से चेक-चेक की गई भाषा है, ऐसा नहीं है। उदाहरण के लिए, पास्कल (विशुद्ध) स्थिर टाइपिंग के साथ एक जोरदार टाइप की गई भाषा है। लेकिन सबसे आधुनिक प्रोग्रामिंग भाषा कम से कम रनटाइम प्रकार की जांच के कुछ स्तर का समर्थन करते हैं। और कई गतिशील रूप से टाइप की गई भाषाएं वैकल्पिक वैकल्पिक टाइपिंग या डेवलपर टूल्स हैं जो प्रकार-संबंधी त्रुटियों को लेने के लिए प्रकार इंफ्रेंसिंग का उपयोग करती हैं।

संयोग से, एक भाषा स्थिर रूप से टाइप की जा सकती है और प्रकार इनफ्रेंसिंग का उपयोग कर सकती है। प्रकार अनुमान को स्पष्ट प्रकार की घोषणाओं के विकल्प के रूप में देखा जाना चाहिए, स्थिर टाइपिंग के विकल्प के रूप में नहीं।

Comments