प्रकार प्रणालियों का वर्गीकरण (मजबूत / कमजोर, गतिशील / स्थिर)


23

संक्षेप में: शैक्षणिक संदर्भों में टाइप किए गए सिस्टम कैसे वर्गीकृत किए जाते हैं; विशेष रूप से, मैं उन प्रतिष्ठित स्रोतों को कहाँ पा सकता हूँ जो विभिन्न प्रकार के प्रकारों के बीच अंतर स्पष्ट करते हैं?

एक अर्थ में इस प्रश्न के साथ कठिनाई यह नहीं है कि मुझे उत्तर नहीं मिल रहा है, बल्कि यह कि मैं बहुत अधिक खोज सकता हूं, और कोई भी सही नहीं है। पृष्ठभूमि मैं टाइपिंग के बारे में हास्केल विकी पर एक लेख को बेहतर बनाने का प्रयास कर रहा हूं , जो वर्तमान में निम्नलिखित भेदों का दावा करता है:

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

यह पूरी तरह से मेरी व्यक्तिगत धारणा के विपरीत है, जो की रेखाओं के साथ अधिक था:

  • कमजोर टाइपिंग: ऑब्जेक्ट्स के प्रकार होते हैं, लेकिन जब संदर्भ इसकी मांग करता है, तो इसे अन्य प्रकारों में बदल दिया जाता है। उदाहरण के लिए, पर्ल, पीएचपी और जावास्क्रिप्ट सभी भाषाएं हैं जिनमें "1"कम या ज्यादा किसी भी संदर्भ का 1उपयोग किया जा सकता है।
  • मजबूत टाइपिंग: ऑब्जेक्ट में प्रकार होते हैं, और कोई अंतर्निहित रूपांतरण नहीं होते हैं (हालांकि उन्हें लोड करने के लिए ओवरलोडिंग का उपयोग किया जा सकता है), इसलिए गलत संदर्भ में किसी वस्तु का उपयोग करना एक त्रुटि है। पायथन में, एक स्ट्रिंग या फ्लोट के साथ एक सरणी को अनुक्रमित करते हुए एक टाइप-इयरर अपवाद को फेंकता है; हास्केल में यह संकलन के समय विफल हो जाएगा।

मैंने इस क्षेत्र के अन्य लोगों से इस बारे में राय मांगी कि मैं किस क्षेत्र में अधिक अनुभवी हूं, और किसी ने यह लक्षण वर्णन दिया है:

  • कमजोर टाइपिंग: डेटा पर अवैध संचालन को नियंत्रित या अस्वीकार नहीं किया जाता है, लेकिन केवल अमान्य / मनमाने परिणाम उत्पन्न करता है।
  • मजबूत टाइपिंग: डेटा पर कार्रवाई केवल तभी अनुमत है जब डेटा ऑपरेशन के साथ संगत हो।

जैसा कि मैं इसे समझता हूं, पहला और आखिरी चरित्र सी को कमजोर रूप से टाइप करेगा, दूसरा इसे दृढ़ता से टाइप करेगा। पहला और दूसरा पर्ल और PHP को कमजोर टाइप का कहेंगे, तीसरा उन्हें दृढ़ता से टाइप करेगा। तीनों ने पायथन को दृढ़ता से टाइप किया।

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

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


6
मुझे लगता है कि आपके पास पहले से ही आपका जवाब है: कमजोर और मजबूत टाइपिंग की कोई स्वीकृत परिभाषा नहीं है।
svick

मुझे विश्वास करने में मुश्किल नहीं होगी, लेकिन मैं इस उम्मीद में सवाल पूछता हूं कि एक ऐसा है जिसके बारे में मैंने अभी तक नहीं सुना है :) या कम से कम एक परिभाषा की तुलना में अधिक आधिकारिक क्या कुछ लोग जिन्होंने विकी रेकिट्स को संपादित किया है, मामला है ।
बेन मिलवुड

3
इसके बारे में कुछ और चर्चा के लिए, एसओ पर इस संबंधित प्रश्न को देखें ।
svick

1
Svick के बिंदु को सुदृढ़ करने के लिए, किसी ऐसी चीज़ पर प्राधिकरण संदर्भ खोजना संभव नहीं है जिसे स्वीकार नहीं किया गया है। आधिकारिक होने का दावा करने वाला कुछ भी गलत होगा (क्योंकि किसी भी संख्या के काउंटर-उदाहरण प्रदान किए जा सकते हैं)।
edA-qa मोर्ट-ओरा-वाई

ठीक है, किसी को एक पेपर लिखने में अंतर है जो कहता है "यहाँ की एक सच्ची परिभाषा है जो हर कोई सहमत है" और कोई एक पेपर लिखता है जो कहता है "यहाँ की परिभाषाएं हैं जो मैं इस पेपर के लिए उपयोग करने जा रहा हूं, हालांकि मुझे पता है कि वहां हैं दूसरों "। यहां तक ​​कि बाद में जो मुझे पता है उससे बेहतर होगा। मुझे लगता है कि आप हो सकता है सही है, हालांकि, इस स्थिति में, क्या है लोगों प्रकार प्रणाली के विभिन्न प्रकार के बारे में क्या कहना है? क्या गतिशील / स्थैतिक भेद, कम से कम, ठोस है?
बेन मिलवुड

जवाबों:


18

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

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

  • अल्गोल 60 में, प्रक्रिया के प्रकार के मापदंडों को निर्दिष्ट किए बिना, प्रक्रिया मापदंडों के प्रकार को केवल "प्रक्रिया" के रूप में घोषित किया गया था। इसलिए, कोई मान सकता है कि एक प्रक्रिया पैरामीटर एक पूर्णांक-स्वीकार करने वाली प्रक्रिया थी, लेकिन तर्क के रूप में एक वास्तविक-स्वीकार करने वाली प्रक्रिया में गुजरती हैं। इसके परिणामस्वरूप COMMON और EQUIVALENCE कथनों के समान भ्रष्टाचार होगा। (हालांकि, अल्गोल 60 ने पुरानी समस्याओं को खत्म कर दिया।)

  • पास्कल में, "वैरिएंट रिकॉर्ड्स" जोड़े गए थे जो लगभग पुराने ईक्विवल बयानों की तरह थे।

  • सी में, "टाइप कास्ट" को जोड़ा गया था, जिसके तहत किसी भी प्रकार के डेटा को एक अलग प्रकार के डेटा के रूप में पुन: व्याख्या किया जा सकता है। यह एक जानबूझकर टाइप छेद था जो प्रोग्रामर के लिए था, जो माना जाता था कि वे क्या कर रहे हैं।

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

ध्यान दें कि लिस्प जैसी गतिशील रूप से टाइप की जाने वाली भाषाएं जो पूर्ण रूप से रन-टाइम प्रकार की जाँच करती हैं, प्रतिनिधित्व की रक्षा के अर्थ में "दृढ़ता से टाइप" हैं। एक ही समय में, सांख्यिकीय रूप से टाइप की गई भाषाएं तब तक प्रतिनिधित्व स्वतंत्रता खो देती हैं जब तक कि वे सरणी की जाँच नहीं करतीं। इसलिए, वे शब्द के सख्त अर्थ में "दृढ़ता से टाइप" नहीं हैं। इन विषम परिणामों के कारण, "जोरदार टाइप" शब्द 70 के दशक के बाद विवाद में पड़ गया। जब अमेरिकी रक्षा विभाग ने Ada के डिजाइन के लिए कठोर आवश्यकताएं विकसित कीं, तो उन्होंने इस आवश्यकता को शामिल किया कि भाषा "दृढ़ता से टाइप की जानी चाहिए"। (ऐसा लगता है कि उस समय माना गया था कि "जोरदार टाइप" का विचार स्व-स्पष्ट था। कोई परिभाषा नहीं पेश की गई थी। ) जवाब में प्रस्तुत सभी भाषा प्रस्ताव "दृढ़ता से टाइप" होने का दावा करते हैं। जब दिक्जस्त्र ने सभी भाषा प्रस्तावों का विश्लेषण किया, तो उन्होंने पाया कि उनमें से कोई भी दृढ़ता से टाइप किया गया था और वास्तव में, यह भी स्पष्ट नहीं था कि इस शब्द का क्या मतलब है। रिपोर्ट देखेंEWD663 । हालाँकि, मैं देख रहा हूँ कि यह शब्द अब युवा पीढ़ी में वापस आ रहा है, शोधकर्ताओं की एक युवा पीढ़ी के माध्यम से, जिसे इस शब्द के इतिहास की जानकारी नहीं है।

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

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

नोट जोड़ा गया : मूल बिंदु यह है कि "मजबूत टाइपिंग" शब्द एक तकनीकी शब्द के रूप में उपयोग में नहीं आया है जिसमें एक कठोर परिभाषा है। यह कुछ और था जैसे कुछ भाषा डिजाइनरों ने महसूस किया: "हमारी प्रकार प्रणाली मजबूत है; यह सभी प्रकार की त्रुटियों को पकड़ती है; इसमें टाइप छेद नहीं होते हैं" और, इसलिए, जब उन्होंने अपनी भाषा डिजाइन प्रकाशित की, तो उन्होंने दावा किया कि यह "जोरदार टाइप" था । यह एक भनभनाहट शब्द था जो अच्छा लग रहा था और लोगों ने इसका उपयोग करना शुरू कर दिया। कार्डेली-वेगनर पेपर पहला था जिसे मैंने देखा है जहां कुछ विश्लेषण में इसका अर्थ प्रदान किया गया था। यहाँ मेरी पोस्ट को उनकी स्थिति के विस्तार के रूप में सोचा जाना चाहिए।


क्या आप ऐतिहासिक विकास के लिए कुछ संदर्भ दे सकते हैं? "रन-टाइम टाइप त्रुटियों की अनुपस्थिति का मतलब कुछ भी नहीं है" - क्या आपका मतलब संकलन-समय से है?
राफेल

यहां यूक्लिड पर एक पेपर है जो Google विद्वान पर दिखाया गया है। मुझे याद है कि 70 के दशक में कई पत्र-पत्रिकाओं को देखकर, जहाँ भाषाओं का जोरदार टाइप करने का दावा किया गया था। यह आमतौर पर बिक्री पिच के रूप में सोचा गया था।
उदय रेड्डी

1
@Raphael। मेरा मतलब था "रन-टाइम टाइप त्रुटियां"। रन-टाइम में जाने के लिए, प्रोग्राम को सबसे पहले स्टैटिक टाइप चेकर को प्राप्त करना होगा। मुद्दा यह है कि जोरदार टाइप की गई भाषा, उदाहरण के लिए, जावा रन-टाइम पर टाइप एरर देगा, जब वह उन्हें कंपाइल-टाइम पर चेक नहीं कर सकता है। एक प्रकार की छेद भाषा, जैसे, सी, रन-टाइम त्रुटियों को देने के बजाय कचरा उत्पन्न करने देगी।
उदय रेड्डी

1
@benmachine। यूक्लिड पेपर I में "टाइप चेकिंग" पर अनुभाग देखें। मुझे लगता है कि मुख्य बिंदु यह है कि "दृढ़ता से टाइप किया गया" एक चर्चा शब्द है। यह कोई तकनीकी धारणा नहीं है। सबसे अच्छे रूप में, इसका तकनीकी मतलब यह है कि इसमें कोई छेद नहीं हैं।
उदय रेड्डी

1
एक ठेठ आधुनिक कार्यान्वयन जहां दो अलग-अलग पूर्णांक प्रकार एक ही प्रतिनिधित्व पर (जैसे दोनों intऔर long32 बिट किया जा रहा है, या दोनों longऔर long long64 किया जा रहा है, एक प्रोग्राम है जो उपयोग करता है ऐसे ही एक प्रकार के सूचक के कुछ भंडारण लिख सकते हैं और अन्य प्रकार के सूचक का उपयोग करता है करने के लिए इसे पढ़ने के लिए, आम तौर पर पता लगाने योग्य रन-टाइम त्रुटि को ट्रिगर नहीं किया जाएगा, लेकिन मनमाने ढंग से अन्य तरीकों से खराबी हो सकती है। आधुनिक सी इस प्रकार अन्य भाषाओं के प्रकार-सुरक्षा को खो देता है, बिना किसी शब्दार्थ को प्राप्त किए जो कि रिची की भाषा का गुणवत्ता कार्यान्वयन था। पूर्व में बदले में पेश किया गया था।
सुपरकैट

7

पेपर उदय रेड्डी ने अपने उत्तर में पाया, ऑन अंडरस्टैंडिंग टाइप्स, डेटा एब्सट्रैक्शन, और पॉलीमॉर्फिज़्म (1985), निम्नलिखित उत्तर देता है:

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


समुदाय विकी के रूप में पोस्ट किया गया क्योंकि मैं इसे खोजने का श्रेय नहीं चाहता।
बेन मिलवुड

मेरे पास यहां मौजूद समस्या svick की पहली टिप्पणी से संबंधित है। हालांकि यह अच्छा हो सकता है कि आपको मजबूत टाइपिंग की परिभाषा मिल गई है, लेकिन यह निश्चित रूप से एक सामान्य रूप से स्वीकृत परिभाषा नहीं है।
eda-qa mort-ora-y

@ edA-qamort-ora-y: आप किस आधार पर कहते हैं? क्या आपके पास जो कुछ है और जो आमतौर पर स्वीकार नहीं किया जाता है, उसके लिए बेहतर सबूत से बेहतर कुछ है? कोई प्रशस्ति पत्र? (मुझे लगता है कि आपके पास एक वैध बिंदु हो सकता है भले ही नहीं, लेकिन मुझे अभी भी लगता है कि उपरोक्त मेरे प्रश्न का उत्तर देता है; भले ही कोई आम सहमति नहीं है, कम से कम एक गंभीर शैक्षणिक उत्तर जानना अच्छा है)।
बेन मिलवुड

1
मैं वास्तव में परिभाषा पर सहमत होने की अनुपस्थिति को साबित नहीं कर सकता? यह तार्किक रूप से संभव नहीं है। हालांकि, मजबूत टाइपिंग पर विकिपीडिया लेख असहमति और विरोधाभास के लिए बहुत सारे सबूत और संदर्भ प्रदान करते हैं। en.wikipedia.org/wiki/Strong_typing
edA-qa mort-ora-y

@ edA-qamort-ora-y: विकिपीडिया के उद्धरण वास्तव में सहायक नहीं हैं: कुछ अकादमिक नहीं हैं, दूसरों को शर्तों को परिभाषित करने के अलावा अन्य कारणों से उद्धृत किया गया है। टाइपिंग प्रोग्रामिंग पेपर होनहार लगता है, लेकिन केवल परिभाषाओं को बहुत संक्षेप में पारित करने के लिए संदर्भित करता है; शायद यह मेरे जवाब के लिए वैसे भी संपादन के लायक है। सबूत के अभाव के साथ, मुझे लगता है कि लोगों के बीच विवाद / असहमति के सबूत जो जानते हैं कि वे जो बात कर रहे हैं वह मेरे लिए पर्याप्त होगा (जो वास्तव में, टाइपिंग प्रोग्रामिंग पेपर मुझे दे सकता है)।
बेन मिलवुड

6

कार्डेली और वेबर के सर्वेक्षण लेख में आधिकारिक उत्तर पाए जा सकते हैं: अंडरस्टैंडिंग टाइप्स, डेटा एब्सट्रैक्शन और पॉलीमोर्फिज्म

ध्यान रखें कि, जबकि "मजबूत टाइपिंग" का एक स्वीकृत अर्थ है, "कमजोर टाइपिंग" नहीं है। मजबूत टाइपिंग की किसी भी विफलता को कमजोर माना जा सकता है और लोग इस बात पर भिन्न हो सकते हैं कि किस प्रकार की विफलता स्वीकार्य है और क्या नहीं।



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

@benmachine। पूरा पेपर पढ़ने लायक है, लेकिन उच्च-स्तरीय वैचारिक मुद्दों को सिर्फ पहले कुछ खंडों में शामिल किया गया है।
उदय रेड्डी

4
मुझे अभी भी लगता है कि इसे इस पृष्ठ पर संक्षेप में प्रस्तुत किया जाना चाहिए। लिंक बाद में समाप्त हो सकता है।
बेन मिलवुड

@benmachine। अपने प्रश्न के अपने उत्तर के रूप में एक सारांश पोस्ट करने के लिए आपका स्वागत है।
उदय रेड्डी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.