मशीन लर्निंग मॉडेल्स टाइपस्क्रिप्ट प्रकार तयार करतात का जे टाइप-चेक करतात?
Author
Venue
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगवरील युरोपियन परिषद (ECOOP) २०२३
Abstract
प्रकार स्थलांतर म्हणजे संकलन वेळी खात्री मिळविण्यासाठी अ-प्रकारबद्ध कोडमध्ये प्रकार जोडण्याची प्रक्रिया आहे. TypeScript आणि इतर क्रमिक प्रकार प्रणाली प्रोग्रामरना अस्पष्ट प्रकारांसह सुरुवात करून हळूहळू त्यांना बळकट करण्याची परवानगी देऊन प्रकार स्थलांतर सुलभ करतात. तथापि, प्रकार जोडणे हा एक हाताने करावा लागणारा प्रयत्न आहे आणि मोठ्या, औद्योगिक कोडबेसवर अनेक स्थलांतर प्रक्रियेस अनेक वर्षे लागल्याचे नोंदवले गेले आहे. संशोधन समुदायात TypeScript प्रकार स्थलांतर स्वयंचलित करण्यासाठी मशीन लर्निंगचा वापर करण्यास मोठे स्वारस्य आहे. विद्यमान मशीन लर्निंग मॉडेल्स वैयक्तिक TypeScript प्रकार अॅनोटेशन्सचे अंदाज करण्यात उच्च अचूकता दर्शवतात. तथापि, या पेपरमध्ये आम्ही असा युक्तिवाद करतो की अचूकता दिशाभ्रष्ट करणारी असू शकते, आणि आपल्याला वेगळ्या प्रश्नाकडे लक्ष देणे आवश्यक आहे: एक स्वयंचलित प्रकार स्थलांतर साधन असे कोड तयार करू शकते का जे TypeScript प्रकार तपासणी यंत्रणेवरून पास होईल? आम्ही TypeWeaver सादर करतो, एक TypeScript प्रकार स्थलांतर साधन जे कोणत्याही प्रकार अंदाज मॉडेलसह वापरता येऊ शकते. आम्ही TypeWeaver चे मूल्यांकन साहित्यातील तीन मॉडेल्ससह करतो: DeepTyper, एक पुनरावर्ती न्यूरल नेटवर्क; LambdaNet, एक ग्राफ न्यूरल नेटवर्क; आणि InCoder, एक सर्वसामान्य, बहुभाषिक ट्रान्सफॉर्मर जो मध्यभागी भरण्याच्या (fill-in-the-middle) कार्यांना समर्थन देतो. आमचे साधन टाइप अंदाज मॉडेल वापरण्यासाठी आवश्यक असलेल्या अनेक टप्प्यांचे स्वयंचलन करते, (1) प्रकल्पाच्या अवलंबित्वांसाठी टाइप्स आयात करणे; (2) जावास्क्रिप्ट मॉड्यूल्सना TypeScript नोटेशनमध्ये रूपांतरित करणे; (3) आवश्यकतेनुसार TypeScript तयार करण्यासाठी प्रोग्राममध्ये अंदाजित प्रकार टिप्पण्या (type annotations) समाविष्ट करणे; आणि (4) आवश्यकतेनुसार गैर-प्रकार अंदाज नाकारणे. आम्ही TypeWeaver चे मूल्यांकन 513 JavaScript पॅकेजेसच्या डेटासेटवर करतो, ज्यात कधीही टाइप केलेले नसलेले पॅकेजेसही समाविष्ट आहेत. सर्वोत्तम प्रकार अंदाज मॉडेलसह, आम्हाला आढळले की फक्त 21% पॅकेजेस टाइप चेक होतात, परंतु अधिक उत्साहवर्धक म्हणजे 69% फाइल्स यशस्वीरित्या टाइप चेक होतात.
