REPL ของ Clojure

ตอบคำถามในกรุ๊ป Clojure in Thai

REPL ถ้ามองเผินๆ ก็จะคล้าย console หรือ interpreter ของภาษาอื่นๆแหละครับ แต่ของ Clojure จะเน้นให้เราสามารถส่งโค้ดจาก editor ได้ และด้วยความที่ภาษาออกแบบเรื่องการ redefine มาไว้ตั้งแต่ต้น ทำให้เราพัฒนาแบบ incremental / interactive ได้จริงๆ บวกกับการที่มันมีวงเล็บแสดงขอบเขตชัดเจนทำให้การเลือกส่งโค้ดกลุ่มใดๆ ไปที่ repl มันตรงไปตรงมาชัดเจนกว่า ลองคิดภาพดูว่าถ้าเราต้องการเปลี่ยน implementation แค่เมท็อดเดียวใน Ruby เราจะต้อง select โค้ดยังไงใน editor หรือถ้าเราจะ redefine class ใน python เราต้อง select โค้ดยังไง วงเล็บที่ชัดเจนของ Clojure ช่วยในเรื่องนี้ได้มาก

อีกเรื่องหนึ่งที่สำคัญ คือ การทำงานของ Clojure แบบที่เราสั่งให้มันอ่านไฟล์ทั้งหมดเอง กับการที่เราค่อยๆ ส่งทีละ expression ไปที่ repl จะมีค่าเหมือนกัน 100% ทำให้เราไม่ต้องคอยกังวลถึงความแตกต่างใดๆ

ถ้าใครเป็นคนที่ชอบได้รับ feedback เร็วๆ ในระหว่างการ development ชอบ feedback เร็วๆ ของ TDD สำหรับผมแล้ว REPL นี่เร็วกว่า TDD อีก

ถ้าใครที่เชื่อในเรื่องการ make it work ก่อน make it right จะพบว่าเราสามารถเริ่มจากโค้ด snippet ที่ทำงานได้ แล้วค่อยๆ ปั้นไปจนได้โปรแกรมที่มีโครงสร้างชัดเจน maintain ง่ายได้เลยผ่านการเล่นกับ REPL นี่แหละ

Leave a comment