โปรเจกต์ Juniper: Functional Reactive Programming Language
Juniper คือ Functional Reactive Programming Language ใหม่สำหรับ Arduino ซึ่งช่วยให้การ coding ง่ายขึ้นอย่างมาก
Juniper คือ Functional Reactive Programming Language ใหม่สำหรับ Arduino ซึ่งช่วยให้การ coding ง่ายขึ้นอย่างมาก
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
Project Supporter Team
โพสต์โดย
Juniper เป็นภาษาเขียนโปรแกรมเชิงฟังก์ชันแบบตอบสนอง (Functional Reactive Programming) ที่พัฒนาขึ้นที่มหาวิทยาลัย Tufts โดย Caleb Helbling และ Louis Ades โปรเจกต์นี้ได้รับการพัฒนาขึ้นสำหรับวิชา Senior Design ภาควิชาวิทยาการคอมพิวเตอร์ ระยะเวลา 1 ปี โดยมี ดร. Samuel Guyer เป็นที่ปรึกษาและเมนเทอร์ งานนำเสนอของเขาในปี 2015 เป็นจุดเริ่มต้นของโปรเจกต์นี้:
Juniper เป็นภาษาเขียนโปรแกรมเชิงฟังก์ชันแบบตอบสนอง (FRP) ที่มุ่งเป้าไปที่ Arduino และระบบ Microcontroller ที่เกี่ยวข้อง Juniper มีคุณสมบัติระดับสูงมากมาย รวมถึง Parametric Polymorphic Functions, Anonymous Functions, การจัดการหน่วยความจำอัตโนมัติ (Automatic Memory Management) และโครงสร้างข้อมูลแบบแก้ไขไม่ได้ (Immutable Data Structures) นอกจากนี้ยังมี Standard Library ที่มีฟังก์ชันการประมวลผลสัญญาณ (Signal Processing) ของ FRP ที่เป็นประโยชน์มากมาย Juniper จะถูกแปลงเป็นภาษา C++ มาตรฐาน และถูกคอมไพล์ด้วยเครื่องมือพัฒนาของ Arduino ที่มีอยู่เดิม ทำให้โปรแกรมของ Juniper สามารถทำงานบนอุปกรณ์ที่มีทรัพยากรจำกัด (Resource-constrained devices) ได้ และช่วยให้ทำงานร่วมกับไลบรารี C++ เดิมสำหรับอุปกรณ์เหล่านี้ได้อย่างไร้รอยต่อ
บทความวิจัยเกี่ยวกับภาษา Juniper ได้รับการตีพิมพ์ในงาน ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design (FARM) และมีการนำเสนองานในเดือนกันยายนที่งาน International Conference on Functional Programming (ICFP) ในเมืองนารา ประเทศญี่ปุ่น ปัจจุบันบทความวิจัยและคำบรรยายมีอยู่บนเว็บไซต์ของ Juniper แล้ว:
http://www.juniper-lang.org/publications/juniper_farm_preprint.pdf
บทความวิจัยและงานนำเสนอนี้ได้ให้ข้อสังเกตที่สำคัญเกี่ยวกับสถานะปัจจุบันของการเขียนโปรแกรม Arduino ไว้ดังนี้:
นี่คือส่วนหนึ่งที่น่าสนใจจากบทความวิจัย:
ในบทความนี้เราขอนำเสนอภาษาใหม่ชื่อว่า Juniper สำหรับการเขียนโปรแกรม Arduino และ Microcontroller ที่คล้ายกัน เราใช้ข้อสังเกตที่ว่าโปรแกรม Arduino จำนวนมากเป็นแบบตอบสนอง (Reactive): คือมีการตอบสนองต่อสัญญาณที่เข้ามา ประมวลผลสัญญาณเหล่านั้น และสร้างสัญญาณเอาต์พุตใหม่ออกมา การใช้สภาพแวดล้อม C++ ที่มีอยู่ทำให้โปรแกรมเหล่านี้กลายเป็นโค้ดแบบ “Spaghetti” ได้อย่างรวดเร็ว ซึ่งขาดความเป็นโมดูล (Modularity) และทำความเข้าใจได้ยาก Juniper แก้ปัญหานี้โดยใช้ Functional Reactive Programming (FRP) ใน FRP โปรแกรมจะตอบสนองต่อเหตุการณ์โดยการส่งต่อค่าไปตามสัญญาณ (Signals) หรือพฤติกรรม (Behaviors) ในกราฟแบบระบุทิศทาง (Directed graph) สัญญาณและพฤติกรรมสามารถมองได้ว่าเป็นค่าที่เปลี่ยนแปลงตามเวลาในโปรแกรม โหนด (Nodes) ในกราฟระบุทิศทางจะแทนฟังก์ชันที่จับคู่สัญญาณเข้ากับสัญญาณใหม่ ส่วนต่างๆ ของกราฟสัญญาณที่เป็นอิสระต่อกันสามารถทำงานแบบอะซิงโครนัส (Asynchronously) ได้ ซึ่งช่วยให้เกิดการทำงานแบบขนาน (Concurrency) ได้โดยไม่ต้องมีภาระงานเพิ่มเติมสำหรับโปรแกรมเมอร์ ฟังก์ชันลำดับสูง (Higher-order functions) เช่น map, fold และ filter ช่วยเพิ่มพลังในการแสดงผล (Expressive power) และการนำกลับมาใช้ใหม่ได้อีกระดับ
คอมไพล์เลอร์ (Compiler) และเอกสารการใช้งาน (Documentation) มีให้บริการแล้วบนเว็บไซต์ของ Juniper: http://www.juniper-lang.org/
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้
Verified user reviews
ล็อกอินด้วยบัญชีบนเว็บนี้แล้วให้คะแนนหรือคอมเมนต์ได้เลย ระบบเก็บผ่าน Supabase ไม่ต้องใช้ GitHub แล้ว
ยังไม่มีรีวิวที่อนุมัติแล้ว เป็นคนแรกที่มาให้ความเห็นได้เลย