क्या मशीन लर्निंग मॉडल ऐसे टाइपस्क्रिप्ट टाइप्स उत्पन्न करते हैं जो टाइप-चेक होते हैं?
Author
Venue
यूरोपीय ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सम्मेलन (ECOOP) 2023
Abstract
टाइप माइग्रेशन संकलन समय पर आश्वासन प्राप्त करने के लिए बिना टाइप वाले कोड में टाइप जोड़ने की प्रक्रिया है। टाइपस्क्रिप्ट और अन्य क्रमिक टाइप सिस्टम प्रोग्रामरों को अस्पष्ट टाइप से शुरू करने और धीरे-धीरे उन्हें मजबूत करने की अनुमति देकर टाइप माइग्रेशन को सुगम बनाते हैं। हालांकि, टाइप जोड़ना एक मैन्युअल प्रयास है और बड़े, उद्योग-स्तरीय कोडबेस पर कई माइग्रेशन में कई वर्षों का समय लगने की रिपोर्ट है। शोध समुदाय में, टाइपस्क्रिप्ट टाइप माइग्रेशन को स्वचालित करने के लिए मशीन लर्निंग का उपयोग करने में महत्वपूर्ण रुचि रही है। मौजूदा मशीन लर्निंग मॉडल व्यक्तिगत टाइपस्क्रिप्ट टाइप एनोटेशन की भविष्यवाणी करने में उच्च स्तर की सटीकता की रिपोर्ट करते हैं। हालांकि, इस पेपर में हम तर्क देते हैं कि सटीकता भ्रामक हो सकती है, और हमें एक अलग सवाल का जवाब देना चाहिए: क्या एक स्वचालित टाइप माइग्रेशन टूल ऐसा कोड तैयार कर सकता है जो टाइपस्क्रिप्ट टाइप चेकर को पास कर जाए? हम टाइपवीवर (TypeWeaver) प्रस्तुत करते हैं, जो एक टाइपस्क्रिप्ट टाइप माइग्रेशन टूल है और जिसे किसी भी टाइप प्रेडिक्शन मॉडल के साथ इस्तेमाल किया जा सकता है। हम टाइपवीवर का मूल्यांकन साहित्य से तीन मॉडलों के साथ करते हैं: डीपटाइपर, एक रिकरेंट न्यूरल नेटवर्क; लैम्ब्डानेट, एक ग्राफ न्यूरल नेटवर्क; और इनकोडर, एक सामान्य-उद्देश्यीय, बहु-भाषा ट्रांसफार्मर जो बीच में भरने वाले कार्यों (fill-in-the-middle tasks) का समर्थन करता है। हमारा टूल टाइप प्रेडिक्शन मॉडल का उपयोग करने के लिए आवश्यक कई चरणों को स्वचालित करता है, (1) प्रोजेक्ट की निर्भरताओं के लिए टाइप इम्पोर्ट करना; (2) जावास्क्रिप्ट मॉड्यूल को टाइपस्क्रिप्ट नोटेशन में माइग्रेट करना; (3) आवश्यकता पड़ने पर टाइपस्क्रिप्ट उत्पन्न करने के लिए प्रोग्राम में अनुमानित प्रकार की एनोटेशन डालना; और (4) आवश्यकता पड़ने पर गैर-प्रकार अनुमानों को अस्वीकार करना। हम टाइपवीवर का मूल्यांकन 513 जावास्क्रिप्ट पैकेजों के एक डेटासेट पर करते हैं, जिसमें वे पैकेज भी शामिल हैं जिन्हें पहले कभी टाइप नहीं किया गया है। सर्वश्रेष्ठ प्रकार पूर्वानुमान मॉडल के साथ, हम पाते हैं कि केवल 21% पैकेज टाइप चेक करते हैं, लेकिन और भी उत्साहजनक बात यह है कि 69% फाइलें सफलतापूर्वक टाइप चेक करती हैं।
