โมเดลการเรียนรู้ของเครื่องสร้างประเภทของ TypeScript ที่ผ่านการตรวจสอบประเภทหรือไม่?
Author
Venue
การประชุมวิชาการยุโรปด้านการเขียนโปรแกรมเชิงวัตถุ (ECOOP) ประจำปี 2023
Abstract
การย้ายประเภท (Type migration) คือกระบวนการเพิ่มประเภทให้กับโค้ดที่ไม่มีประเภท (untyped code) เพื่อให้มั่นใจในความถูกต้องของโค้ดในขณะคอมไพล์ TypeScript และระบบประเภทแบบค่อยเป็นค่อยไป (gradual type systems) อื่น ๆ ช่วยให้การย้ายประเภทเป็นไปได้ง่ายขึ้น โดยอนุญาตให้นักพัฒนาเริ่มต้นด้วยประเภทที่ไม่ชัดเจนและค่อย ๆ เสริมความเข้มงวดของประเภทเหล่านั้น อย่างไรก็ตาม การเพิ่มประเภทเป็นกระบวนการที่ต้องทำด้วยตนเอง และมีการรายงานว่าการย้ายประเภทในฐานโค้ดขนาดใหญ่ที่ใช้ในอุตสาหกรรมต้องใช้เวลาหลายปี ในแวดวงวิจัย มีความสนใจอย่างมากในการใช้การเรียนรู้ของเครื่อง (machine learning) เพื่อทำให้การย้ายประเภทใน TypeScript เป็นไปโดยอัตโนมัติ แบบจำลองการเรียนรู้ของเครื่องที่มีอยู่รายงานความแม่นยำสูงในการทำนายการระบุประเภทของ TypeScript แต่ละรายการ อย่างไรก็ตาม ในบทความนี้เราโต้แย้งว่าความแม่นยำอาจทำให้เข้าใจผิดได้ และเราควรพิจารณาคำถามที่แตกต่างออกไป: เครื่องมือการย้ายประเภทอัตโนมัติสามารถสร้างโค้ดที่ผ่านการตรวจสอบประเภทของ TypeScript ได้หรือไม่? เราขอนำเสนอ TypeWeaver ซึ่งเป็นเครื่องมือการย้ายประเภทของ TypeScript ที่สามารถใช้งานร่วมกับแบบจำลองการทำนายประเภทใดๆ ก็ได้ เราประเมิน TypeWeaver ด้วยสามโมเดลจากวรรณกรรม: DeepTyper ซึ่งเป็นเครือข่ายประสาทเทียมแบบวนซ้ำ; LambdaNet ซึ่งเป็นเครือข่ายประสาทเทียมแบบกราฟ; และ InCoder ซึ่งเป็นตัวแปลงหลายภาษาแบบทั่วไปที่รองรับงานเติมคำในช่องว่าง เครื่องมือของเราทำให้ขั้นตอนที่จำเป็นหลายขั้นตอนสำหรับการใช้งานโมเดลการทำนายประเภทเป็นอัตโนมัติ ได้แก่ (1) การนำเข้าประเภทสำหรับโครงการที่พึ่งพา; (2) การย้ายโมดูล JavaScript ไปยังรูปแบบ TypeScript; (3) แทรกคำอธิบายประเภทที่คาดการณ์ไว้ในโปรแกรมเพื่อสร้าง TypeScript เมื่อจำเป็น; และ (4) ปฏิเสธการคาดการณ์ประเภทที่ไม่ถูกต้องเมื่อจำเป็น เราประเมิน TypeWeaver บนชุดข้อมูลของแพ็กเกจ JavaScript จำนวน 513 แพ็กเกจ ซึ่งรวมถึงแพ็กเกจที่ไม่เคยถูกกำหนดประเภทมาก่อน ด้วยแบบจำลองการคาดการณ์ประเภทที่ดีที่สุด เราพบว่าเพียง 21% ของแพ็กเกจที่สามารถผ่านการตรวจสอบประเภทได้ แต่ที่น่าสนับสนุนมากขึ้นคือ 69% ของไฟล์สามารถผ่านการตรวจสอบประเภทได้สำเร็จ
