Monthly Archives: April 2015

ทำไมผมถึงสนใจ Clojure

พี่รูฟ ถามว่าทำไมผมถึงไม่ใช้ JRuby (ในคอมเมนต์) แล้วผมเขียนตอบไว้ซะยาวเลย เลยขอมาแป๊ะไว้ที่นี่ด้วยๆ ความเสียดาย ด้านล่างนี้คือคำตอบของผม

ไม่รู้สิครับ ไม่ได้อยู่ในการตัดสินใจเลย

ในตอนเริ่ม ทีมมีคนถนัด Ruby กับคนถนัด JavaScript แต่คนทั้งสองกลุ่มตื่นเต้น และอยากเขียน Clojure ก็เลือกกันโดยไม่มีใครมีข้อขัดแย้ง อ่อมันใช้เขียนถอด data format แปลกๆ ของโรงบาลได้ง่ายกว่าด้วย

ส่วนตัวผมทำไมถึงสนใจ หลักๆ ก็คืออยากเปลี่ยนบรรยากาศอะครับ
– เบื่อเขียน class (Kingdom of nouns)
– อยากลองศึกษาว่าข้อดีของการแก้ปัญหาด้วย functional concept เป็นยังไง
– ชอบ persistent data structure มาก ทำให้ไม่รู้สึกผิดเวลาใช้ map, reduce, select, ..
– collection library มันหล่อมาก
– อยากลอง REPL driven development ที่เค้าว่าเร็วๆ เป็นยังไง
– อยากเขียน concurrent programming บ้าง
– ภาษามันไม่เยิ่นเย้อ สั้น แต่ชัดเจน

จากนั้นก็เล่าถึงข้อเสียให้ฟัง

ข้อเสีย
– Startup time ช้า start JVM ปกติเสร็จแล้วยังต้องโหลด standard lib ต่ออีก ปกติ dev บน REPL ก็ไม่เป็นอะไร แต่ถ้าต้องแก้ config หลักๆ บางครั้งก็ต้อง restart
– ต้องรู้ Java ด้วย อ่าน error ได้ เรียกใช้ Java library ได้
– (ตามการคาดเดาของผม) ไม่มีวัน mainstream
— อธิบายให้คนฟังว่า prefix notation ไม่ได้ยากกว่า infix notation นี่ไม่ค่อยจะมีใครเชื่อ และเข้าใจง่ายๆ
— การนับวงเล็บปิดมันไม่ง่าย มี tool ช่วยถ้าใช้เป็นแล้วจะลืมวงเล็บปิดไปเลย แต่ก็ต้องเรียน (เหมือนเรียน vim command)

จากคำถามของพี่เค้าทำให้คิดย้อนกลับไปถึงสาเหตุจริงๆที่หัด Clojure

แต่ถ้าคิดย้อนกลับไปจริงๆ ก่อนที่ผมจะรู้ข้อดีข้อเสียพวกนี้ นอกจากว่าภาษาน่าสนใจ ผมเรียน Clojure เพราะผมอยากพิสูจน์ตัวเองกับตัวเองว่าเราสามารถเรียนรู้อะไรที่ยากพอประมาณด้วยตัวเองได้ เพราะก่อนหน้านี้เรียนภาษาอื่นๆ เหมือนมีคนสอนมาโดยตลอด รู้สึกอิจฉาคนที่ไม่มีคนสอนแต่เค้าเรียนเองได้ เช่น พวกที่ไม่ได้เรียนคอมฯมาโดยตรง อยากพิสูจน์ว่าเราก็ทำได้เหมือนกัน เป็นการพิสูจน์ว่าเราพร้อมจะอยู่ในสายอาชีพนี้ต่อไปอีกหลายๆปีโดยที่จะไม่ตกยุค ล้าสมัย

พอถูกถาม และได้ตอบคำถามเหล่านี้ พร้อมคำถามสุดท้ายของพี่รูฟ ว่า “แสดงว่า พิสูจน์ แล้ว” ทำให้ผมนึกขึ้นได้ว่า ผมพิสูจน์แล้ว ผมทำสำเร็จแล้วจริงๆด้วย ผมลืมที่จะยินดีกับความสำเร็จนี้ของตัวเองไปเลย

เย่!

Advertisements