36

क्या कोई मुझे बता सकता है कि मजबूत टाइपिंग और कमजोर टाइपिंग का मतलब क्या है और कौन सा बेहतर है?क्या कोई मुझे बता सकता है कि मजबूत टाइपिंग और कमजोर टाइपिंग का मतलब क्या है और कौन सा बेहतर है?

+2

यह भी देखें: http://stackoverflow.com/questions/2351190/static-dynamic-vs-strong-weak, http://stackoverflow.com/questions/2135066/is-my-understanding-of-type- सिस्टम-सही – outis

+0

यहां अधिकतर जवाब गलत हैं। देखें: http://stackoverflow.com/questions/2351190/static-dynamic-vs-strong-weak – darksky

उत्तर

-2

कमजोर टाइपिंग का अर्थ है कि आप निर्दिष्ट नहीं करते कि एक चर किस प्रकार है, और मजबूत टाइपिंग का अर्थ है कि आप प्रत्येक चर के लिए सख्त प्रकार देते हैं।

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

हाथ पर कार्य के आधार पर, कमजोर टाइपिंग मजबूत टाइपिंग से बेहतर हो सकती है, या इसके विपरीत, लेकिन यह ज्यादातर स्वाद का विषय है। कमजोर टाइपिंग आमतौर पर स्क्रिप्टिंग भाषाओं में उपयोग की जाती है, जबकि अधिकतर संकलित भाषाओं में मजबूत टाइपिंग का उपयोग किया जाता है।

+4

-1 कमजोर टाइपिंग और गतिशील टाइपिंग को भ्रमित करने के लिए। –

14

"मजबूत टाइपिंग" और इसके विपरीत "कमजोर टाइपिंग" अर्थ में कमजोर हैं, आंशिक रूप से जो "मजबूत" माना जाता है, उसकी धारणा अलग-अलग हो सकती है, जिसके आधार पर आप पूछ सकते हैं। जैसे सी को विभिन्न लेखकों द्वारा "दृढ़ता से टाइप किया गया" और "कमजोर टाइप किया गया" दोनों कहा जाता है, यह वास्तव में इस बात पर निर्भर करता है कि आप इसकी तुलना किस प्रकार करते हैं।

आम तौर पर एक प्रकार की प्रणाली को मजबूत माना जाना चाहिए यदि यह एक ही बाधाओं को एक और अधिक के रूप में व्यक्त कर सकता है। अक्सर दो प्रकार के सिस्टम तुलनीय नहीं होते हैं, हालांकि - किसी के पास अन्य कमीएं और इसके विपरीत हो सकती है। सापेक्ष शक्तियों की कोई भी चर्चा व्यक्तिगत स्वाद के लिए होती है।

एक मजबूत प्रकार प्रणाली होने का मतलब है कि या तो कंपाइलर या रनटाइम अधिक त्रुटियों की रिपोर्ट करेगा, जो आमतौर पर एक अच्छी बात है, हालांकि यह अधिक प्रकार की जानकारी मैन्युअल रूप से प्रदान करने की लागत पर आ सकती है, जिसे संभव माना जा सकता है सार्थक नहीं मैं दावा करता हूं कि "मजबूत टाइपिंग" आमतौर पर बेहतर होता है, लेकिन आपको लागत को देखना होगा।

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

51

कि का ध्यान रखा सिद्धांत जवाब हो जाएगा, लेकिन व्यवहार पक्ष उपेक्षित गया लगता है ...

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

$message = "You are visitor number ".$count; 

यह दृढ़ता से टाइप किया गया था, तो आप एक स्ट्रिंग के लिए एक पूर्णांक से $ गिनती कन्वर्ट करने के लिए आमतौर पर के साथ या तो कास्टिंग के साथ होगा:

$message = "you are visitor number ".(string)$count; 

... या एक समारोह:

$message = "you are visitor number ".strval($count); 

जिसके लिए बेहतर है, यह व्यक्तिपरक है। मजबूत टाइपिंग के वकील आपको बताएंगे कि इससे आपको कुछ कीड़े और/या त्रुटियों से बचने में मदद मिलेगी और एक चर के उद्देश्य को संवाद करने में मदद मिलेगी।वे आपको यह भी बताएंगे कि कमजोर-टाइपिंग के समर्थक मजबूत टाइपिंग को कॉल करेंगे "अनावश्यक भाषा फ़्लफ जो सामान्य ज्ञान" या कुछ समान द्वारा व्यर्थ प्रदान किया जाता है। कमजोर टाइपिंग समूह के कार्ड ले जाने वाले सदस्य के रूप में, मुझे यह कहना होगा कि उन्हें मेरा नंबर मिल गया है ... लेकिन मेरे पास भी है, और I इसे स्ट्रिंग में डाल सकता है :)

+16

"और * मैं * इसे एक स्ट्रिंग में रख सकता हूं" अच्छा। बल के कमजोर पक्ष के लिए +1 – annakata

+2

"मजबूत-टाइपिंग का अर्थ है कि आप एक प्रकार के चर का उपयोग नहीं कर सकते हैं जहां किसी अन्य की अपेक्षा की जाती है"। मजबूत/कमजोर चर के बारे में नहीं हैं, वे मूल्यों के बारे में हैं। मुझे लगता है कि आपको कहना चाहिए: "मजबूत-टाइपिंग का अर्थ है कि आप एक प्रकार का * वैल्यू * नहीं उपयोग कर सकते हैं जहां एक और अपेक्षित है"। –

+1

आप उलझन में हैं * स्थिर टाइपिंग * और * मजबूत टाइपिंग *। "एक चर के उद्देश्य को संचारित करना" है * स्थिर टाइपिंग *। "अनावश्यक भाषा फ्लफ" * स्थिर टाइपिंग * है। बग से बचने के लिए काफी हद तक * स्थिर टाइपिंग * है, लेकिन मजबूत टाइपिंग भी यहां मदद करता है, इसलिए आधे अंक। –

5

मैं दोहराना चाहूंगा कि कमजोर टाइपिंग गतिशील टाइपिंग के समान नहीं है।

यह विषय पर एक अच्छी तरह से लिखा लेख है और यदि आप मजबूत, कमजोर, स्थैतिक और गतिशील प्रकार प्रणाली के बीच मतभेदों के बारे में अनिश्चित हैं, तो मैं निश्चित रूप से इसे पढ़ने की अनुशंसा करता हूं। यह अंतर को संक्षिप्त उत्तर में अपेक्षाकृत बेहतर से अधिक बताता है, और इसमें कुछ बहुत ही प्रबुद्ध उदाहरण हैं।

http://en.wikipedia.org/wiki/Type_system

1

यह लेख एक महान पढ़ा है: http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html जब एक ऐसी ही सवाल का जवाब देने की कोशिश कर रहा शोध मेरे लिए बहुत कुछ ऊपर साफ कर दिया गया, आशा दूसरों भी इसे उपयोगी पाते।

मजबूत और कमजोर लेखन:

शायद सबसे आम तरीका प्रकार सिस्टम वर्गीकृत किया जाता है "मजबूत" या है "कमजोर।" यह दुर्भाग्यपूर्ण है, क्योंकि इन शब्दों में लगभग का अर्थ है। यह सीमित सीमा तक है, दो भाषाओं की तुलना बहुत ही समान प्रकार की प्रणालियों के साथ करना संभव है, और उन दोनों प्रणालियों के मजबूत के रूप में नामित करें। इसके अलावा, शब्दों का मतलब कुछ भी नहीं है।

स्थिर और गतिशील प्रकार

यह बहुत लगभग प्रकार सिस्टम वास्तविक अर्थ नहीं है कि की केवल सामान्य वर्गीकरण है। वास्तव में, यह महत्व है कि अक्सर अनुमानित [...] गतिशील और स्थैतिक प्रकार सिस्टम दो पूरी तरह से अलग चीजें हैं, जिनका लक्ष्य आंशिक रूप से ओवरलैप होता है।

एक स्थिर प्रकार प्रणाली एक व्यवस्था है जिसके द्वारा एक संकलक स्रोत कोड की जांच करता है और वाक्य रचना के टुकड़े करने के लिए प्रदान करती है लेबल (बुलाया "प्रकार"), और फिर कार्यक्रम के व्यवहार के बारे में कुछ अनुमान लगाने के लिए उन्हें का उपयोग करता है। एक गतिशील प्रकार प्रणाली एक तंत्र है जिसके द्वारा एक कंपाइलर प्रोग्राम द्वारा उपयोग किए जाने वाले डेटा के प्रकार को ट्रैक रखने के लिए कोड उत्पन्न करता है (संयोग से, जिसे "प्रकार" कहा जाता है)। इन दो प्रणालियों में से प्रत्येक में एक ही शब्द "प्रकार" का उपयोग निश्चित रूप से पूरी तरह से संयोग से नहीं है; फिर भी यह सबसे अच्छी तरह से कमजोर ऐतिहासिक महत्व के रूप में समझा जाता है। विश्व दृश्य खोजने की कोशिश करने से ग्रेट भ्रम के परिणाम जिसमें "टाइप" वास्तव में सिस्टम दोनों में एक ही चीज़ का अर्थ है। यह नहीं है

स्पष्ट/अस्पष्ट प्रकार:

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

4

मजबूत टाइपिंग आधुनिक प्रोग्रामिंग भाषाओं में सबसे आम प्रकार का मॉडल है। उन भाषाओं में एक साधारण सुविधा है - रन टाइम में टाइप मानों के बारे में जानना। हम कह सकते हैं कि मजबूत टाइप की गई भाषा दो या दो से अधिक विभिन्न प्रकार के प्रकार के मिश्रण मिश्रण को रोकती है।

String foo = "Hello, world!"; 
Object obj = foo; 

String bar = (String) obj; 
Date baz = (Date) obj; // This line will throw an error 

पिछले उदाहरण पूरी तरह से अच्छी तरह से काम करेगा जब तक प्रोग्राम कोड की अंतिम पंक्ति जहां ClassCastException फेंक दिया क्योंकि जावा मजबूत टाइप प्रोग्रामिंग भाषा है जा रहा है हिट: यहाँ जावा में एक उदाहरण है।

जब हम के बारे में बात करते हैं तो कमजोर टाइप भाषाएं, पर्ल उनमें से एक है। निम्नलिखित उदाहरण दिखाता है कि कैसे पर्ल को दो अलग-अलग प्रकारों को मिलाकर कोई समस्या नहीं है।

$a = 10; 
$b = "a"; 
$c = $a . $b; 
print $c; # returns 10a 

मैं आप पाते हैं यह उपयोगी है,

धन्यवाद उम्मीद है।

1

एक भाषा में मजबूत/कमजोर टाइपिंग कितनी आसानी से आप प्रकार रूपांतरण कर सकते हैं से संबंधित है:

अजगर में उदाहरण के लिए:

str = 5 + 'a' 
# would throw an error since it does not want to cast one type to the other implicitly. 

कहाँ सी भाषा के रूप में:

int a = 5; 
a = 5 + 'c'; 
/* is fine, because C treats 'c' as an integer in this case */ 

इस प्रकार पाइथन सी (इस परिप्रेक्ष्य से) से अधिक दृढ़ता से टाइप किया गया है।

0

हो सकता है यह मदद कर सकते हैं मजबूत और कमजोर टंकण को ​​समझने के लिए .......

मजबूत टाइपिंग: यह जितनी जल्दी हो सके चर के प्रकार की जाँच करता है आमतौर पर संकलन समय पर। यह मिश्रित प्रकार के बीच मिश्रण संचालन को रोकता है।

  • सभी चर (या डेटा प्रकार) संकलन समय पर जाना जाता है
  • नियम लिख-लिख कर सख्त प्रवर्तन नहीं है (एक स्ट्रिंग नहीं किया जा सकता:

    एक मजबूत टाइप प्रोग्रामिंग भाषा है, जिसमें से एक है जहां एक पूर्णांक उम्मीद होगी)

  • सभी अपवाद इस्तेमाल किया एक संकलन समय त्रुटि में नियमों के परिणाम टाइप करने

कमजोर प्रकार आईएनजी: जबकि कमजोर टाइपिंग सिस्टम के प्रकारों को जितनी देर हो सके जांचने में देरी कर रही है, आमतौर पर रन-टाइम तक। इसमें आप बिना किसी स्पष्ट रूपांतरण के प्रकारों को मिश्रित कर सकते हैं।

एक "कमजोर टाइप की गई" प्रोग्रामिंग भाषा केवल एक है जो मजबूत टाइप नहीं है।

जिसे पसंद किया गया है, उस पर निर्भर करता है कि आप क्या चाहते हैं। स्क्रिप्ट और अच्छी चीजों के लिए आप आमतौर पर कमजोर टाइपिंग चाहते हैं, क्योंकि आप जितना संभव हो उतना कम कोड लिखना चाहते हैं। बड़े कार्यक्रमों में, मजबूत टाइपिंग संकलन समय पर त्रुटियों को कम कर सकती है।

संबंधित मुद्दे