ชุมชนนักพัฒนาโปรแกรมกำลังแสดงความสนใจอย่างมากต่อ Glojure ซึ่งเป็นตัวแปลภาษา Clojure ที่ทำงานบน Go โดยนักพัฒนากำลังพยายามเชื่อมช่องว่างระหว่างความสามารถอันทรงพลังของ Clojure กับระบบนิเวศของแพ็คเกจอันกว้างขวางของ Go การพัฒนานี้แสดงให้เห็นถึงการเปลี่ยนแปลงที่สำคัญจากรากฐานระบบนิเวศดั้งเดิมของ Clojure ที่อยู่บน Java เปิดโอกาสใหม่ๆ ให้กับนักพัฒนาที่ชื่นชอบทั้งสองภาษา
การตอบรับจากชุมชนและการนำไปใช้ในช่วงแรก
นักพัฒนามีความกระตือรือร้นเป็นพิเศษกับศักยภาพของ Glojure ในการใช้ประโยชน์จากไลบรารีที่เติบโตขึ้นเรื่อยๆ ของ Go แม้จะมีการถกเถียงกันเกี่ยวกับข้อได้เปรียบเชิงเปรียบเทียบของระบบนิเวศ Java แต่สมาชิกในชุมชนชี้ให้เห็นว่าแพ็คเกจของ Go มักจะสอดคล้องกับแนวทางการพัฒนาสมัยใหม่ได้ดีกว่า ดังที่สมาชิกชุมชนคนหนึ่งกล่าวว่า:
การที่ Clojure ถูกสร้างขึ้นบน Java นั้นเป็นการตัดสินใจที่ดี แต่ผมอยากใช้ Clojure ในการทำงานร่วมกับไลบรารีที่เสถียรและกำลังเติบโตในระบบนิเวศของ Go
แพ็กเกจมาตรฐานหลักของ Go ที่สามารถใช้งานได้ใน Glojure:
- fmt
- io
- net/http
- strings
- math
- os
- time
- regexp
การพัฒนาทางเทคนิคและสถานะปัจจุบัน
โครงการนี้ใช้วิธีการแปลภาษาแบบ tree-walk interpreter ซึ่งแตกต่างจากการพัฒนา Clojure บน Go แบบอื่นๆ อย่าง Joker และ let-go ผู้ใช้งานในช่วงแรกได้ทดสอบฟีเจอร์ต่างๆ สำเร็จ รวมถึงการทำงานของ macros กับฟังก์ชันมาตรฐานของ Go อย่างไรก็ตาม ผู้ใช้บางคนรายงานว่าพบข้อผิดพลาดแบบ panic ใน REPL ซึ่งแสดงให้เห็นว่าโครงการนี้ยังอยู่ในช่วงเริ่มต้นและต้องการการพัฒนาเพิ่มเติม
การเปรียบเทียบกับการพัฒนาแบบอื่น
Glojure โดดเด่นในบรรดาการพัฒนา Clojure บน Go ด้วยลักษณะการทำงานแบบ hosted และความสามารถในการทำงานร่วมกับ Go ที่ขยายได้ ต่างจาก Joker และ let-go Glojure รักษาคุณลักษณะการเป็น host ที่แท้จริง ซึ่งหมายความว่าค่าใน Go สามารถใช้เป็นค่าใน Clojure ได้และในทางกลับกัน คล้ายกับวิธีที่ Clojure ทำงานร่วมกับ Java บน JVM
การเปรียบเทียบการใช้งาน Clojure บนพื้นฐานของ Go:
การใช้งาน | ประเภท | การโฮสต์ | การทำงานร่วมกับ Go | การประมวลผลพร้อมกัน |
---|---|---|---|---|
Glojure | ตัวแปลภาษาแบบเดินต้นไม้ | มี | มี | มี |
Joker | ตัวแปลภาษาแบบเดินต้นไม้ | ไม่มี | ไม่มี | มี (พร้อม GIL) |
let-go | ตัวแปลภาษาไบต์โค้ด | ไม่มี | ไม่มี | มี |
แนวโน้มในอนาคต
แม้ว่าปัจจุบันจะอยู่ในช่วงการพัฒนาและมีข้อจำกัดบางประการ Glojure แสดงให้เห็นถึงความหวังสำหรับนักพัฒนาที่ต้องการผสมผสานรูปแบบการเขียนโปรแกรมเชิงฟังก์ชันของ Clojure กับระบบนิเวศไลบรารีที่ใช้งานได้จริงของ Go โครงสร้างและวิธีการวิเคราะห์ของโครงการที่อาจได้แรงบันดาลใจจาก tools.analyzer บ่งชี้ถึงรากฐานที่แข็งแกร่งสำหรับการพัฒนาในอนาคต
หมายเหตุทางเทคนิค: REPL (Read-Eval-Print Loop) คือสภาพแวดล้อมการเขียนโปรแกรมแบบโต้ตอบที่รับข้อมูลจากผู้ใช้ ประมวลผล และส่งผลลัพธ์กลับไปยังผู้ใช้