अंतर चर पर प्रकार की घोषणा के बारे में नहीं है। यह उससे थोड़ा अधिक सूक्ष्म है (और गति एरिक लिपर्ट, मुझे लगता है कि यह शब्द उचित रूप से अच्छी तरह परिभाषित है)। भेद यह है कि दृढ़ता से टाइप की गई भाषा में, प्रत्येक अभिव्यक्ति में एक प्रकार होता है जिसे संकलित समय पर निर्धारित किया जा सकता है, और केवल उस प्रकार के लिए उपयुक्त संचालन की अनुमति है।
आलोचकों के लिए एक अनियमित ("कमजोर टाइप किया गया", प्रशंसकों के लिए "गतिशील रूप से टाइप किया गया" भाषा में, ऐसा नहीं है। भाषा किसी भी प्रकार के ऑपरेशन को विफल कर सकती है, बल्कि पर्याप्त साबित होने के कारण किसी भी ऑपरेशन को किसी भी प्रकार पर निष्पादित करने की अनुमति देता है। यही है, जबकि भाषा ऑपरेशन की अनुमति दे सकती है, रनटाइम नहीं हो सकता है।
ध्यान दें कि हर जगह टाइप घोषणाओं की आवश्यकता के बिना दृढ़ता से टाइप की गई भाषा होना संभव है। वास्तव में, कोई दृढ़ता से टाइप की गई भाषा नहीं करता है। Java के इस बिट पर विचार करें:
String s = "hellO";
int l = s.getBytes().length;
संकलक कैसे तय करता है कि .length
वहाँ कानूनी है? यह कानूनी है क्योंकि इसका उपयोग byte[]
पर किया जा रहा है। लेकिन यहां byte[]
होने के नाते कुछ भी घोषणा नहीं है।इसके बजाय, संकलक जानता है कि s
एक String
है, और जब आप पर पर कॉल करते हैं, तो आपको byte[]
मिलता है। यह उन तथ्यों से अनुमान लगाता है कि s.getBytes()
का प्रकार byte[]
है, और इसलिए length
के लिए पूछना कानूनी है।
कुछ भाषा जिनके प्रकार सिस्टम जावा की तुलना में अधिक परिष्कृत हैं, संकलक को इससे अधिक अनुमान लगाने की अनुमति देते हैं। उदाहरण के लिए, स्काला में, आप कह सकते हैं:
val s = "hello"
val l = s.getBytes().length
और संकलक s
और l
के प्रकार का अनुमान लगा होगा मध्यवर्ती अभिव्यक्ति के रूप में भी,।
बोली जो मजबूत टाइपिंग लेकिन प्रकार निष्कर्ष पर कृत्रिम सीमाओं जो अनावश्यक प्रकार घोषणाओं (जावा) की तरह की आवश्यकता है, प्रकट टाइपिंग के रूप में वर्णित किया जाता है क्योंकि प्रकार जो स्पष्ट रूप से लाया कह का एक आधुनिक तरीका है प्रकट किया जाना चाहिए, अस्तित्व में, जो लिखित कहने का एक शानदार तरीका है।
मुझे आश्चर्य है कि इस सवाल का कहीं लिए सही विकल्प [सैद्धांतिक कंप्यूटर की तरह हो सकता है अगर विज्ञान] (http://cstheory.stackexchange.com/) या [प्रोग्रामर] (http://programmers.stackexchange.com/) ...? – summea
हाँ, मुझे यकीन नहीं था कि इसे कहां रखा जाए। मैं इसे जोड़ दूंगा। – Josh
सी में एक 'फ्लोट' में 'int' जोड़ने के लिए पूरी तरह से कानूनी है। –