เนื้อหาในเว็บไซต์นี้ได้รับการแปลโดยใช้ปัญญาประดิษฐ์ (AI) หรือเทคโนโลยีการแปลด้วยเครื่อง และอาจมีข้อผิดพลาด

Skip to content
Programming Languages
Human Computer Interaction
Data Science

การตรวจสอบข้อผิดพลาดของประเภทข้อมูลที่เคารพความเป็นส่วนตัวในระดับขนาดใหญ่

View Publication

Author

อลัน เจฟฟรีย์ (Roblox), เบน กรีนแมน (มหาวิทยาลัยบราวน์ + มหาวิทยาลัยยูทาห์), ศรีราม กฤษณามูรติ (มหาวิทยาลัยบราวน์), และ มิตีช ชาห์ (Roblox)

Venue

ศิลปะ วิทยาศาสตร์ และวิศวกรรมศาสตร์แห่งการเขียนโปรแกรม

Abstract

บริบท: Roblox Studio ช่วยให้ผู้สร้างหลายล้านคนสร้างประสบการณ์แบบโต้ตอบได้โดยการเขียนโปรแกรมในภาษา Lua ที่ดัดแปลงเรียกว่า Luau ผู้สร้างเหล่านี้เป็นกลุ่มที่หลากหลาย ตั้งแต่ผู้เริ่มต้นที่เขียนสคริปต์แรกไปจนถึงนักพัฒนาอาชีพ ดังนั้น Luau จึงต้องรองรับผู้ใช้ที่หลากหลาย เพื่อเป็นส่วนหนึ่งของการสนับสนุนนักเขียนโปรแกรมทุกประเภท Luau จึงมีระบบประเภทข้อมูลแบบค่อยเป็นค่อยไปที่เป็นตัวเลือก และพยายามอย่างมากในการลดข้อผิดพลาดที่ผิดพลาดให้น้อยที่สุด สอบถาม: เนื่องจาก Luau กำลังถูกใช้โดยผู้สร้างหลายคนในขณะนี้ เราต้องการรวบรวมข้อมูลเพื่อปรับปรุงภาษาและโดยเฉพาะอย่างยิ่งระบบประเภทข้อมูล วิธีมาตรฐานในการรวบรวมข้อมูลคือการติดตั้งระบบติดตามข้อมูลฝั่งไคลเอนต์ อย่างไรก็ตาม เราไม่สามารถดึงข้อมูลส่วนบุคคลหรือข้อมูลที่เป็นกรรมสิทธิ์ได้ ซึ่งหมายความว่าเราไม่สามารถรวบรวมชิ้นส่วนของซอร์สโค้ด ข้อความแสดงข้อผิดพลาด หรือแม้แต่เส้นทางไฟล์ได้ คำถามการวิจัยจึงเกี่ยวข้องกับวิธีการดำเนินการเทเลเมทรีที่ไม่รุกล้ำและได้รับข้อมูลเชิงลึกเกี่ยวกับข้อผิดพลาดของประเภท วิธีการ: เราได้ออกแบบและพัฒนาระบบเทเลเมทรีที่มีการสุ่มตัวอย่างและใช้ชื่อสมมติสำหรับ Luau บันทึกเทเลเมทรีประกอบด้วยเวลาที่บันทึก, รหัสเซสชัน, เหตุผลในการส่ง, และสรุปตัวเลขของการวิเคราะห์ประเภทล่าสุด ข้อมูลนี้ช่วยให้เราศึกษาข้อผิดพลาดของประเภทได้ตลอดเวลาโดยไม่เปิดเผยข้อมูลส่วนตัว เราได้ติดตั้งระบบใน Roblox Studio ในช่วงฤดูใบไม้ผลิปี 2023 และรวบรวมข้อมูลเทเลเมตริกส์มากกว่า 1.5 ล้านรายการจากเซสชันมากกว่า 340,000 ครั้ง ความรู้: เราขอนำเสนอข้อค้นพบหลายประการเกี่ยวกับ Luau ซึ่งทั้งหมดชี้ให้เห็นว่าเทเลเมตริกส์เป็นวิธีที่มีประสิทธิภาพในการศึกษาการใช้ภาษาเชิงปฏิบัติในกรณีของข้อผิดพลาดด้านประเภทข้อมูล หนึ่งในข้อค้นพบที่ไม่ค่อยน่าประหลาดใจคือประเภทแบบค่อยเป็นค่อยไป (opt-in gradual types) ไม่เป็นที่นิยม: มีช่องว่างถึง 100 เท่าระหว่างจำนวนเซสชัน Luau ที่ไม่ได้ระบุประเภทกับจำนวนเซสชันที่ระบุประเภท ข้อที่น่าประหลาดใจคือโหมดเข้มงวดสำหรับการวิเคราะห์ประเภท (strict mode) ค่อนข้างระมัดระวังเกินไปเกี่ยวกับการโต้ตอบกับทรัพยากรข้อมูล ข้อค้นพบที่สร้างความมั่นใจคือ การวิเคราะห์ประเภทแทบไม่เคยถึงขีดจำกัดภายในของตัวเองในแง่ของขนาดของปัญหา การอ้างอิง: ผลการค้นพบของเราได้รับการสนับสนุนโดยชุดข้อมูลที่มีบันทึกเทเลเมตริกมากกว่า 1.5 ล้านรายการ ข้อมูลและสคริปต์สำหรับการวิเคราะห์มีอยู่ในอาร์ติแฟกต์ ความสำคัญ: นอกเหนือจากประโยชน์โดยตรงต่อ Luau แล้ว ผลการค้นพบของเราเกี่ยวกับประเภทและข้อผิดพลาดของประเภทยังมีนัยสำคัญต่อการนำไปใช้และการยศาสตร์ในภาษาที่ค่อยเป็นค่อยไปอื่นๆ เช่น TypeScript, Elixir และ Typed Racket การออกแบบเทเลเมตริกของเรามีความน่าสนใจในวงกว้าง เนื่องจากรายงานข้อผิดพลาดของประเภทโดยไม่เปิดเผยข้อมูลที่ละเอียดอ่อน