ทำไมผมถึงสนใจ 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s