- 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 ถูกใช้เป็นแพลตฟอร์มสำหรับงานวิจัยด้านสภาพแวดล้อมโปรแกรมมิงแห่งอนาคตและการศึกษาการเขียนโปรแกรม
วิสัยทัศน์งานวิจัยและเอกสารที่เกี่ยวข้อง
- Toward Semantic Foundations for Program Editors: วิสัยทัศน์งานวิจัยเรื่องรากฐานเชิงความหมายสำหรับโปรแกรมเอดิเตอร์
- Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine: วิสัยทัศน์ของสภาพแวดล้อมการคำนวณแบบไลฟ์ ประกอบรวมได้ และทำงานร่วมกันได้ สำหรับวิทยาศาสตร์การคำนวณขนาดใหญ่
- การบรรยายเกี่ยวกับ Hazel ถูกรวบรวมไว้ใน YouTube playlist of Hazel-related talks
- เดโมล่าสุดดูได้จาก การบรรยายที่ Topos Institute
งานวิจัยล่าสุดและทิศทางการตีพิมพ์
- ในปี 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
- Hazelnut: A Bidirectionally Typed Structure Editor Calculus นิยามแคลคูลัสของ editing action ที่แทรก typed holes โดยอัตโนมัติ
- Live Functional Programming with Typed Holes พัฒนา operational semantics ที่สมบูรณ์สำหรับ expression ที่มี typed holes
- Program Sketching with Live Bidirectional Evaluation กล่าวถึง Smyth ซึ่งเป็นองค์ประกอบพื้นฐานของ Hazel Assistant
- Live Pattern Matching with Typed Holes กล่าวถึงการอนุมานโปรแกรมที่มี pattern holes และได้รับรางวัล OOPSLA 2023 Distinguished Paper Award
การใช้งานและการมีส่วนร่วม
- Hazel มีเว็บบิลด์ให้ทดลองใช้งานโดยตรง
- ซอร์สโค้ดเปิดเผยบน GitHub
- Hazel เป็น โครงการวิจัยโอเพนซอร์ส ที่นำโดย Future of Programming Lab (FP Lab) แห่ง University of Michigan
- หากต้องการมีส่วนร่วมหรือมีคำถาม สามารถติดต่อ Cyrus Omar หัวหน้าทีมได้
ยังไม่มีความคิดเห็น