क्रमिक टाइपिंग: Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Type system}} {{Type systems}} धीरे-धीरे टाइपिंग एक प्रकार की प्रणाली है जिसम...")
 
(No difference)

Revision as of 15:03, 27 June 2023

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

इतिहास

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


कार्यान्वयन

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


उदाहरण

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

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

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

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

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

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


संदर्भ

  1. 1.0 1.1 Siek, Jeremy. "What is gradual typing?".
  2. Siek, Jeremy; Taha, Walid (September 2006). कार्यात्मक भाषाओं के लिए धीरे-धीरे टाइपिंग (PDF). Scheme and Functional Programming 2006. University of Chicago. pp. 81–92.
  3. Thatte, Satish (1990). "Quasi-static typing". Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '90. pp. 367–381. doi:10.1145/96709.96747. ISBN 978-0897913430. S2CID 8725290. {{cite book}}: |journal= ignored (help)
  4. Oliart, Alberto (1994). अर्ध-स्थैतिक प्रकारों का अनुमान लगाने के लिए एक एल्गोरिथम (Technical report). Boston University. 1994-013.
  5. Siek, Jeremy; Taha, Walid (August 2007). वस्तुओं के लिए क्रमिक टाइपिंग. pp. 2–27. doi:10.1007/978-3-540-73589-2_2. ISBN 978-3-540-73588-5. {{cite book}}: |journal= ignored (help)
  6. Feldthaus, Asger; Møller, Anders (2014). "जावास्क्रिप्ट पुस्तकालयों के लिए टाइपस्क्रिप्ट इंटरफेस की शुद्धता की जाँच करना". Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications - OOPSLA '14 (in English). Portland, Oregon, USA: ACM Press: 1–16. doi:10.1145/2660193.2660215. ISBN 978-1-4503-2585-1.
  7. Swamy, N.; Fournet, C.; Rastogi, A.; Bhargavan, K.; Chen, J.; Strub, P. Y.; Bierman, G. (2014). "Gradual typing embedded securely in JavaScript" (PDF). Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL '14. pp. 425–437. doi:10.1145/2535838.2535889. ISBN 9781450325448.
  8. "PHP: Function arguments - Manual » Strict typing".
  9. Tobin-Hochstadt, Sam; Felleisen, Matthias. "Interlanguage Migration: From Scripts to Programs". Proceedings of the Symposium on Object-Oriented Programming Systems, Companion Volume. Portland, OR. Tobin-Hochstadt06. Retrieved 2020-11-06.
  10. Tobin-Hochstadt, Sam; Felleisen, Matthias. "The Design and Implementation of Typed Scheme". Proceedings of the Principles of Programming Languages. San Diego, CA. Tobin-Hochstadt08. Retrieved 2020-11-06.
  11. Chas Emerick. "टाइप क्लोजर यूजर गाइड". GitHub.
  12. Jukka Lehtosalo. "mypy - पायथन के लिए वैकल्पिक स्टेटिक टाइपिंग".
  13. "Pyre - A performant type-checker for Python 3".
  14. Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (January 2012). "The Ins and Outs of Gradual Type Inference" (PDF). Association for Computing Machinery (ACM). Retrieved 2014-09-23.
  15. "टाइप-सिस्टम-जे". GitHub.
  16. "गतिशील (सी # संदर्भ)". MSDN Library. Microsoft. Retrieved 14 January 2014.
  17. "The JS++ Type System, Appendix B: Problems (Why was this hard to solve?)". Retrieved 10 February 2020.


अग्रिम पठन

  • Siek, Jeremy G.; Vitousek, Michael M.; Cimini, Matteo; Boyland, John Tang (2015). Ball, Thomas; Bodik, Rastislav; Krishnamurthi, Shriram; Lerner, Benjamin S.; Morrisett, Greg (eds.). Refined Criteria for Gradual Typing. pp. 274–293. doi:10.4230/lipics.snapl.2015.274. ISBN 9783939897804. {{cite book}}: |journal= ignored (help)