• Hazel เป็นสภาพแวดล้อมไลฟ์ฟังก์ชันนัลโปรแกรมมิงบนเว็บที่มี typed holes เป็นศูนย์กลาง ทำให้โปรแกรมที่ยังไม่สมบูรณ์สามารถตรวจสอบชนิดข้อมูล จัดการ และรันได้
  • แนวคิดหลักคือการโมเดลสถานะที่ไม่สมบูรณ์ เช่น ช่องว่าง ข้อผิดพลาดของชนิดข้อมูล และ merge conflict ให้เป็น hole เพื่อลดช่วงที่เอดิเตอร์สูญเสียความหมายของโค้ด
  • โปรแกรมที่ไม่สมบูรณ์ซึ่งสร้างได้ใน Hazel ถูกนิยามทั้งแบบสแตติกและไดนามิก และอาจมีชนิดข้อมูลที่ไม่สมบูรณ์รวมถึงผลลัพธ์การรันที่ไม่สมบูรณ์ได้
  • เป้าหมายการใช้งานคือภาษาฟังก์ชันนัลตระกูล Elm/ML และถูกใช้เป็นฐานสำหรับการศึกษาการเขียนโปรแกรม การแก้ไขร่วมกัน การเรียนรู้พิสูจน์ และงานวิจัยการเติมโค้ดด้วย AI
  • เป็นโครงการวิจัยโอเพนซอร์สที่นำโดย Future of Programming Lab แห่ง University of Michigan โดยมีเว็บบิลด์สำหรับทดลองใช้งานและซอร์สโค้ดบน GitHub เปิดเผยสาธารณะ

แนวคิดหลักของ Hazel

  • Hazel เป็น สภาพแวดล้อมไลฟ์ฟังก์ชันนัลโปรแกรมมิง และถูกออกแบบโดยมี typed holes เป็นศูนย์กลาง
  • แม้โปรแกรมจะยังไม่เสร็จ ก็ยังทำงานต่อไปนี้ต่อได้
    • ตรวจสอบชนิดข้อมูล
    • จัดการแก้ไข
    • รัน
  • เป้าหมายคือการสร้างสภาพแวดล้อมที่ยังคงให้ ฟีดแบ็กที่มีความหมาย ได้ แม้โค้ดที่กำลังแก้ไขอยู่จะอยู่ในสถานะเสียหาย

วิธีจัดการโปรแกรมที่ไม่สมบูรณ์

  • ในกระบวนการเขียนโปรแกรมทั่วไป มักเกิดสถานะที่ข้อความของโปรแกรมยังไม่สมบูรณ์ตามรูปแบบอยู่บ่อยครั้ง
    • ช่องว่าง
    • ข้อผิดพลาดของชนิดข้อมูล
    • merge conflict
  • นิยามของภาษาโปรแกรมแบบเดิมไม่ได้ให้ความหมายเชิงรูปแบบแก่โครงสร้างเหล่านี้ ทำให้แม้แต่พฤติกรรมของโค้ดบางส่วนที่สมบูรณ์แล้วก็ยังจัดการเป็น ไลฟ์ฟีดแบ็ก ได้ยาก
  • เอดิเตอร์และเครื่องมือต่าง ๆ จึงต้องพึ่งพา heuristic ที่ซับซ้อนเพื่อให้การเติมโค้ด การตรวจสอบชนิดข้อมูล และการนำทางโค้ดทำงานได้อย่างไม่สะดุด
  • Hazel โมเดลโปรแกรมที่ไม่สมบูรณ์เป็น โปรแกรมที่มี hole
    • hole แทนส่วนของโปรแกรมที่ขาดหายไป
    • ทำหน้าที่เหมือนเยื่อหุ้มที่ครอบส่วนที่มีข้อผิดพลาดหรือส่วนที่เกิด conflict ในสภาพแวดล้อมการทำงานร่วมกัน
  • แนวทางนี้อิงกับทฤษฎี contextual modal type theory และ gradual type theory

สภาพแวดล้อมและโมเดลการรันของ Hazel

  • Hazel กำลังถูกพัฒนาเป็น สภาพแวดล้อมโปรแกรมมิงบนเว็บ สำหรับภาษาฟังก์ชันนัลที่คล้าย Elm/ML
  • โปรแกรมที่ไม่สมบูรณ์ทั้งหมดซึ่งสร้างได้ด้วยภาษา editing action ของ Hazel ถูกนิยามทั้งแบบสแตติกและไดนามิก
    • อาจมีชนิดข้อมูลที่ไม่สมบูรณ์ได้
    • เมื่อรันแล้วอาจสร้างผลลัพธ์ที่ไม่สมบูรณ์ได้
  • คุณลักษณะนี้ทำให้ Hazel ถูกใช้เป็นแพลตฟอร์มสำหรับงานวิจัยด้านสภาพแวดล้อมโปรแกรมมิงแห่งอนาคตและการศึกษาการเขียนโปรแกรม

วิสัยทัศน์งานวิจัยและเอกสารที่เกี่ยวข้อง

งานวิจัยล่าสุดและทิศทางการตีพิมพ์

  • ในปี 2025 งานวิจัยรอบ Hazel ถูกนำเสนอในหลายการประชุม
    • Incremental Bidirectional Typing via Order Maintenance: งานวิจัยที่นำเทคนิคจากระบบเลย์เอาต์ของเบราว์เซอร์มาใช้ทำให้การตรวจสอบชนิดข้อมูลแบบสองทิศทางเป็นแบบ incremental และได้รับรางวัล OOPSLA 2025 Distinguished Paper Award
    • Syntactic Completions with Material Obligations: ทฤษฎีและการนำไปใช้จริงสำหรับซ่อมแซมข้อผิดพลาดทางไวยากรณ์โดยใช้งานที่ต้องทำซึ่งถูกแสดงเป็นรูปธรรมทางภาพในระบบ Tylr
    • A FAIR Case for a Live Computational Commons: ข้อเสนอในการจัดโครงสร้างงานวิทยาศาสตร์ใหม่โดยมีสภาพแวดล้อมไลฟ์โปรแกรมมิงขนาดใหญ่เป็นศูนย์กลาง
    • Decomposable Type Highlighting for Bidirectional Type and Cast Systems: งานวิจัย UI สำหรับดีบักข้อผิดพลาดของชนิดข้อมูลทั้งแบบสแตติกและไดนามิกใน Hazel
    • Hazel Deriver: A Live Editor for Constructing Rule-Based Derivations: เครื่องมือเพื่อการศึกษาสำหรับสร้างกระบวนการอนุมานแบบ natural deduction
  • ในปี 2024 หัวข้อหลักต่อเนื่องคือการกู้คืนข้อผิดพลาดของชนิดข้อมูล การผสานกับ LLM การเรียนรู้พิสูจน์ และสภาพแวดล้อมการคำนวณสำหรับวิทยาศาสตร์ภูมิอากาศ
    • Total Type Error Localization and Recovery with Holes กล่าวถึงการระบุตำแหน่งข้อผิดพลาดและการกู้คืนของโปรแกรมที่กำหนดชนิดข้อมูลผิด และได้รับรางวัล POPL 2024 Distinguished Paper Award
    • Statically Contextualizing Large Language Models with Typed Holes เป็นงานที่ผสาน language server กับ large language model เพื่อปรับปรุงประสิทธิภาพการเติมโค้ดด้วย AI อย่างมาก
    • NSF ให้ทุนสนับสนุนโครงการวิจัยที่เปลี่ยน Hazel ให้เป็นเครื่องมือช่วยพิสูจน์สำหรับใช้ในห้องเรียน
  • งานวิจัยตั้งแต่ปี 2017 ถึง 2023 ได้ค่อย ๆ พัฒนาการคำนวณพื้นฐาน การแก้ไขเชิงโครงสร้าง การประเมินผลแบบไลฟ์ และฟังก์ชันช่วยด้านการศึกษาให้กับ Hazel

การใช้งานและการมีส่วนร่วม

  • Hazel มีเว็บบิลด์ให้ทดลองใช้งานโดยตรง
  • ซอร์สโค้ดเปิดเผยบน GitHub
  • Hazel เป็น โครงการวิจัยโอเพนซอร์ส ที่นำโดย Future of Programming Lab (FP Lab) แห่ง University of Michigan
  • หากต้องการมีส่วนร่วมหรือมีคำถาม สามารถติดต่อ Cyrus Omar หัวหน้าทีมได้

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น