हस्ताक्षर किए गए int क्यों सीएलएस अनुपालन नहीं कर रहे हैं?

सीएनएस अनुपालन नहीं किए गए हस्ताक्षर किए गए पूर्णांक क्यों हैं?

मुझे लगता है कि टाइप विनिर्देश सिर्फ प्रदर्शन के लिए है, न कि सहीता के लिए।

0
ro fr bn

4 उत्तर

बिना हस्ताक्षर किए गए int आपको वास्तविक जीवन में उतना अधिक लाभ नहीं पहुंचाते हैं, हालांकि 1 से अधिक प्रकार के int आपको दर्द देते हैं, इसलिए बहुत सी भाषाओं ने केवल इनट्स गाए हैं।

सीएलएस अनुपालन का लक्ष्य कक्षाओं को कई भाषाओं से उपयोग करने की इजाजत देना है?

याद रखें कि कोई भी आपको सीएलएस अनुपालन नहीं करता है।

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

0
जोड़ा
@ nicodemus13 आखिरी बार कब आपने एक व्यापार व्यवस्थापक प्रणाली देखी थी जिसकी समस्या डोमेन में बिट-वार अंकगणित थी? (उदा। सॉफ्टवेयर के प्रकार जो वीबीएनईटी प्रोग्रामर लिखते हैं)
जोड़ा लेखक Ian Ringrose, स्रोत
यदि आप किसी भी प्रकार के अंकगणित कर रहे हैं, तो वे बहुत ज़रूरी हैं।
जोड़ा लेखक nicodemus13, स्रोत
चेकसम के साथ कुछ भी बिट-वार अंकगणित का उपयोग करेगा, यह काफी आम है, और यह मुझे दूसरी भाषा को खींचने के लिए अजीब लगता है, क्योंकि वीबी ने हस्ताक्षरित पूर्णांक का समर्थन नहीं किया था। .NET को जेएनबी ऐप्स के वीबी-लेखकों के लिए भी सामान्य नहीं होना चाहिए। जब आप '1 प्रकार का int' कहते हैं, तो आपको नहीं लगता कि बाइट, छोटा, int, लंबा दर्द भी है? मुझे नहीं पता कि हस्ताक्षर क्यों और अधिक अजीब है।
जोड़ा लेखक nicodemus13, स्रोत

सभी भाषाओं में हस्ताक्षर किए गए इनट्स की अवधारणा नहीं है। उदाहरण के लिए वीबी 6 में बिना हस्ताक्षर किए गए इनट्स की कोई अवधारणा थी, जिसे मुझे संदेह था कि वीबी 7 / 7.1 के डिजाइनरों के निर्णय को भी लागू नहीं किया गया है (यह अब वीबी 8 में लागू किया गया है)।

उद्धरण के लिए:

http://msdn.microsoft.com/en-us/library/ 12a7a7h3.aspx

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

अपडेट करें: मैंने कुछ साल पहले इस बारे में आश्चर्यचकित किया था, और जब तक मैं नहीं देख सकता कि क्यों यूआईएनटी सुरक्षा सत्यापन योग्य नहीं होगा, मुझे लगता है कि सीएलएस लोगों को कहीं भी कट ऑफ पॉइंट होना चाहिए था कि बेसलाइन न्यूनतम क्या होगा समर्थित मूल्य प्रकारों की संख्या। साथ ही जब आप लंबी अवधि के बारे में सोचते हैं जहां सीएलआर को अधिक से अधिक भाषाओं को पोर्ट किया जा रहा है, तो क्यों सीएलएस अनुपालन प्राप्त करने के लिए उन्हें बिना हस्ताक्षर किए गए इन्स को लागू करने के लिए मजबूर किया जाता है यदि कभी कोई अवधारणा नहीं है?

0
जोड़ा
@ केविन: मैंने बस इस विषय के बारे में सोचा। आप जवाब तर्क लगता है। मुझे बस इस विषय के बारे में सोचना पसंद है। मुझे लगता है कि यह शर्म की बात है पास्कल जैसी तरह से इसे सीएलआर में नहीं बनाया गया। लेकिन अन्य भाषाओं के बारे में आपका तर्क: जिसने एक स्थिर स्थिर टाइप किए गए सीएलआर में दृढ़ गतिशील टाइपिंग (डीएलआर) का उपयोग करके आयरनपीथन को नहीं रोका?
जोड़ा लेखक doekman, स्रोत
@doekman: जबकि हाँ आयरनपीथन और आयरनरुबी दर्शाते हैं कि सीएलआर एक मंच प्रदान कर सकता है जिस पर आप गतिशील रूप से टाइप की गई भाषाओं का निर्माण कर सकते हैं, सीएलएस का लक्ष्य मानकों का एक सेट प्रदान करना था जो भाषा की कार्यक्षमता से आगे निकलता है और उन्हें सफलतापूर्वक और सुरक्षित रूप से अंतःक्रिया करने की अनुमति देता है। मुझे नहीं लगता कि डीएल सुविधाओं को जोड़ने के संदर्भ में एक भाषा क्या कर सकती है, सीएलएस / सीटीएस में क्या जाना चाहिए उससे सीधे संबंधित है।
जोड़ा लेखक Kev, स्रोत
मेरी समझ से, सीएलआर में 32-बिट पूर्णांक आदिम प्रकार है, जिसमें ओवरफ्लो चेकिंग के साथ हस्ताक्षरित अतिरिक्त, ओवरफ्लो चेकिंग के साथ हस्ताक्षरित अतिरिक्त, और साइन-अज्ञेयिक अतिरिक्त मोड 2 ^ 32, आदि के साथ हस्ताक्षरित अतिरिक्त के लिए अलग-अलग निर्देश हैं; जब किसी ऑब्जेक्ट संदर्भ को 32-बिट पूर्णांक आदिम में परिवर्तित करने के लिए कहा जाता है, तो सीएलआर न तो जानता है और न ही उस नंबर का उपयोग कर कोड को देखता है उम्मीद करता है इसे हस्ताक्षरित या हस्ताक्षरित किया जाना चाहिए। चाहे संकलक का मानना ​​है कि कोई संख्या हस्ताक्षरित या हस्ताक्षरित है, आम तौर पर संकलक के साथ संचालन के लिए उत्पन्न निर्देशों
जोड़ा लेखक supercat, स्रोत
@doekman क्या pacal तरह के प्रकार?
जोड़ा लेखक IllidanS4, स्रोत

बिना हस्ताक्षर किए गए पूर्णांक सीएलएस अनुपालन नहीं हैं क्योंकि वे कुछ भाषाओं के बीच अंतःक्रियाशील नहीं हैं।

0
जोड़ा

इस मुद्दे का एक हिस्सा, मुझे संदेह है कि इस तथ्य के चारों ओर घूमता है कि सी में हस्ताक्षरित पूर्णांक प्रकारों को संख्याओं के बजाय एक सार बीजगणितीय अंगूठी के सदस्यों के रूप में व्यवहार करने की आवश्यकता होती है [उदाहरण के लिए, उदाहरण के लिए, यदि एक हस्ताक्षरित 16-बिट पूर्णांक चर शून्य के बराबर है , इसे 65,535 उत्पन्न करने के लिए आवश्यक को कम करना है, और यदि यह 65,535 के बराबर है तो इसे बढ़ाने के लिए शून्य उत्पन्न करना आवश्यक है।] ऐसे समय होते हैं जब ऐसा व्यवहार बेहद उपयोगी होता है, लेकिन ऐसे व्यवहार का प्रदर्शन करने वाले संख्यात्मक प्रकार हो सकते हैं कुछ भाषाओं की भावना के खिलाफ चला गया। मैं अनुमान लगाता हूं कि हस्ताक्षरित प्रकारों को छोड़ने का निर्णय शायद चेक और अनचेक संख्यात्मक संदर्भ दोनों का समर्थन करने के फैसले को पूर्ववत करता है। निजी तौर पर, मेरी इच्छा है कि हस्ताक्षरित संख्याओं और बीजगणितीय के छल्ले के लिए अलग पूर्णांक प्रकार रहे; 32-बिट संख्या के हस्ताक्षर किए जाने के लिए एक यून्री माइनस ऑपरेटर को लागू करने से 64-बिट हस्ताक्षरित परिणाम प्राप्त हो सकते हैं [शून्य के अलावा किसी अन्य चीज़ को अस्वीकार करने से ऋणात्मक संख्या मिल जाएगी] लेकिन एक अंगूठी के प्रकार के लिए एक यूनरी माइनस लगाने से उस अंगूठी के भीतर additive उलटा होना चाहिए।

किसी भी मामले में, अप्रमाणित पूर्णांक कारण सीएलएस अनुपालन नहीं है कि माइक्रोसॉफ्ट ने फैसला किया है कि भाषाओं को "सीएलएस संगत" माना जाने के लिए हस्ताक्षरित पूर्णांक का समर्थन नहीं करना पड़ेगा।

0
जोड़ा
गणितीय परिप्रेक्ष्य से उत्कृष्ट स्पष्टीकरण!
जोड़ा लेखक dizarter, स्रोत