เหตุใด Jepsen จึงเขียนด้วย Clojure?
- Jepsen ถูกสร้างขึ้นมาเพื่อทดสอบระบบที่มีภาวะการทำงานพร้อมกัน โดยหลัก ๆ คือฐานข้อมูล
- โครงสร้างข้อมูลแบบ immutable ของ Clojure และการรองรับ concurrency ที่ยอดเยี่ยม ช่วยให้เขียนโปรแกรมที่ทำงานพร้อมกันได้อย่างถูกต้องง่ายขึ้น
- จำเป็นต้องรองรับไคลเอนต์ฐานข้อมูลที่หลากหลาย และ Clojure ก็ทำงานร่วมกับ Java ได้ดีมาก
การเลือกภาษาเพื่อการทดสอบ
- ต้องการภาษาที่กระชับและยืดหยุ่น เหมาะกับงานทดสอบเชิงทดลอง
- Clojure มีความกระชับ และให้ความยืดหยุ่นทางไวยากรณ์ผ่านระบบมาโคร
- สำหรับการทดสอบที่ต้องจัดการกับโครงสร้างข้อมูลซับซ้อน โครงสร้างข้อมูลและฟังก์ชันใน standard library ของ Clojure เหมาะอย่างยิ่ง
ประสิทธิภาพและความเสถียร
- ต้องการภาษาที่มีประสิทธิภาพในระดับ "ดีพอ" โดย Clojure อาจช้ากว่า Java อยู่บ้างเมื่อเทียบกันโดยตรง แต่ช่องว่างด้านประสิทธิภาพสามารถแก้ไขได้
- เครื่องมือ profiling ที่ยอดเยี่ยมของ JVM ทำงานเข้ากับ Clojure ได้ดี
- Clojure มีความเสถียรสูงทั้งในฐานะแพลตฟอร์มบน JVM และในตัวภาษาเอง และมีปัญหาไลบรารีเสื่อมสภาพอย่างรวดเร็วน้อย
ข้อเสียและการตัดสินใจ
- Clojure มีข้อเสียคือชุมชนวิศวกรรมขนาดเล็ก และไม่มีระบบ static type ที่ได้รับการยอมรับอย่างกว้างขวาง
- อย่างไรก็ตาม Jepsen ถูกดูแลและใช้งานโดยทีมขนาดเล็ก จึงไม่ได้ทำให้ข้อเสียเหล่านี้เป็นปัญหาใหญ่นัก
- หลังจากทำต้นแบบ Jepsen ด้วย Clojure แล้ว ก็สรุปได้ว่านี่เป็นการประนีประนอมที่ค่อนข้างดี
ความเห็นของ GN⁺
- เหตุผลสำคัญที่สุดที่ Jepsen เขียนด้วย Clojure คือโครงสร้างข้อมูลแบบ immutable และการรองรับ concurrency ที่ทรงพลังของ Clojure ทำให้เหมาะกับการทดสอบระบบฐานข้อมูลที่มีความซับซ้อนด้าน concurrency
- บทความนี้น่าจะน่าสนใจสำหรับผู้ที่สนใจวิศวกรรมซอฟต์แวร์ โดยเฉพาะการเขียนโปรแกรมแบบ concurrency และระบบฐานข้อมูล และยังเป็นกรณีศึกษาที่จับต้องได้ว่าการเลือกภาษาโปรแกรมหนึ่ง ๆ สามารถส่งผลต่อโปรเจกต์จริงอย่างไร
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
.cljcแล้วคอมไพล์ได้ทั้งฝั่งเซิร์ฟเวอร์และไคลเอนต์, ประสิทธิภาพและการนำกลับมาใช้ซ้ำของ transducers, รวมถึงความเสถียรและความเข้ากันได้ย้อนหลังที่ยาวนานของ Clojurenil