क्रमिक टाइपिंग

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

इतिहास
यह शब्द जेरेमी सीक द्वारा गढ़ा गया था। जेरेमी सीक और वालिद ताहा ने 2006 में क्रमिक टाइपिंग पर शोध करना प्रारम्भ किया था।

कार्यान्वयन
क्रमिक टाइपिंग में, स्टैटिकली-अज्ञात प्रकारों का प्रतिनिधित्व करने के लिए डायनामिक नामक एक विशेष प्रकार का उपयोग किया जाता है। प्रकार की समानता की धारणा को एक नए संबंध द्वारा प्रतिस्थापित किया जाता है जिसे संगति कहा जाता है जो गतिशील प्रकार को हर दूसरे प्रकार से संबंधित करता है। संगति संबंध प्रतिवर्ती और सममित है लेकिन सकर्मक नहीं है।

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

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

उदाहरण
उपलब्ध और गतिशील रूप से टाइप की गई भाषाओं से प्राप्त क्रमिक टाइप की गई भाषाओं के उदाहरणों में क्लोजर कंपाइलर, टाइपप्रति  (दोनों जावास्क्रिप्ट के लिए) सम्मिलित हैं ), हैक (प्रोग्रामिंग भाषा) (PHP के लिए), PHP (7.0.1 के बाद से)। टाइप किया हुआ रैकेट (रैकेट के लिए (प्रोग्रामिंग भाषा)  ), टाइप क्लोजर (क्लोजर के लिए), साइथन (एक पायथन (प्रोग्रामिंग लैंग्वेज) कंपाइलर), माइपी (पायथन (प्रोग्रामिंग लैंग्वेज) के लिए एक स्टैटिक टाइप चेकर), pyre (पायथन के लिए वैकल्पिक स्टेटिक टाइप चेकर), या cperl (एक टाइप किया हुआ पर्ल 5)।  ActionScript  क्रमिक टाइप की जाने वाली भाषा है यह अब ECMAScript का कार्यान्वयन है, हालांकि यह मूल रूप से अलग-अलग भाई-बहन के रूप में उत्पन्न हुआ, दोनों ही Apple के हाइपरटॉक से प्रभावित थे।

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

इसके विपरीत, C Sharp (प्रोग्रामिंग लैंग्वेज)|C# एक वैधानिक रूप से टाइप की गई भाषा के रूप में प्रारम्भ हुआ, लेकिन संस्करण 4.0 के रूप में क्रमिक टाइप किया गया है, चर का उपयोग करके चर को स्पष्ट रूप से गतिशील के रूप में चिह्नित करने की अनुमति देता है।  प्रकार। डार्ट (प्रोग्रामिंग भाषा), डायलन (प्रोग्रामिंग भाषा), और राकू (प्रोग्रामिंग भाषा) सम्मिलित हैं क्रमिक टाइप की जाने वाली भाषाएँ गतिशील रूप से टाइप की गई भाषा से नहीं ली गई हैं।

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

ऑब्जेक्टिव C में विधि कॉल के संबंध में ऑब्जेक्ट पॉइंटर्स के लिए क्रमिक टाइपिंग है। स्टैटिक टाइपिंग का उपयोग तब किया जाता है जब एक वैरिएबल को ऑब्जेक्ट के एक निश्चित वर्ग के पॉइंटर के रूप में टाइप किया जाता है: जब वेरिएबल के लिए एक मेथड कॉल किया जाता है, तो कंपाइलर स्टैटिकली चेक करता है कि क्लास को इस तरह के मेथड को सपोर्ट करने के लिए घोषित किया गया है, या यह एक चेतावनी या त्रुटि उत्पन्न करता है। हालाँकि, यदि प्रकार का एक चर  प्रयोग किया जाता है, तो संकलक उस पर किसी भी विधि को बुलाए जाने की अनुमति देता है।

JS ++ प्रोग्रामिंग भाषा, 2011 में रिलीज़ हुई, एक क्रमिक प्रकार की प्रणाली के साथ जावास्क्रिप्ट (गतिशील रूप से टाइप) का एक सुपरसेट है जो ईसीएमएस्क्रिप्ट (ECMAScript) और दस्तावेज़ ऑब्जेक्ट मॉडल एपीआई (DOM API) कोने के परिस्थितियों के लिए सुदृढ़ता है।