ปัญหาของ Ruby ! สำหรับชาว Java
หลังจากที่ศึกษา เป็นเวลาพอสมควรกับ Ruby (ยังไม่ยับ Rails) ก็ได้เห็นปัญหาอย่างหนึ่งในการศึกษา Ruby ก็คือการเขียนที่พลิกแพลงได้ตลอด ไม่ว่าจะเปลี่ยน ชื่อ method ด้วย alias หรือจะเขียนแบบมี () หรือไม่มีก็ได้ การใช้ do end แืทน { } แล้วอื่นๆอีกมากมาย จะว่ามันเป็นข้อดีของ Ruby ก็ได้ แต่สำหรับชาว Java (แบบที่เขียนมานานพอสมควร) จะมีอคติเล็กน้อยในตอนแรก ผมก็เป็นเวลาดูโปรแกรมคนอื่น แล้วบางครั้งก็ยัง งง อยู่ว่ามันมาได้ยังไง ?
ถึงตอนนี้จะแกะ Code ได้บางแล้ว แต่ส่วนสำคัญที่มันเป็นปัญหาของคนชอบ Java คือรูปแบบที่ไม่ตายตัว แต่ถ้าเราสนใจ Ruby นั้นคือสัญญาณที่เรากำลังจะบอกได้ว่า Java มันมีข้อเสียอยู่ วันนี้ผมจะลองมาเปรียบเทียบ ระหว่าง Java กับ Ruby โดยผมศึกษามาพอสมควร คงจะบอกความแตกต่างเบื้องต้นได้ แต่ลึกต้องไปศึกษากันอีกที มาว่ากันที่ข้อเสียก่อนละกัน
- Ruby มีการทำงานแบบ Duck Typing ได้คือการไม่สนใจ Parameter ที่ส่งมาว่าจะเป็น Class อะไรก็ตาม
- มีวิธีเขียนที่มากมาย จนงงได้ สำหรับมือใหม่แล้วคนที่ยังชินกับการเขียนแบบ Java
- การมีหลาย method ที่ให้ผลเหมือนกันอยู่ใน Class เดียวกันทำให้งง ในตอนแรก
- การที่จะมีคำสั่ง return หรือไม่มีก็ได้ใน method ทำให้ งงสุด สำหรับชาว Java อย่างผมคนหนึ่ง
- การเีขียนแบบ Shorthand บางอย่างนั้นทำให้เรา ไม่รู้ความหมายการทำงานเลย เช่น p “555″ สั้นสุดๆ แต่กลับมาอ่านบางครั้งก็งง สำหรับผู้เริ่มต้น
- ไม่มี Overloading อีกต่อไป !! (แต่มีวิธีทำให้เหมือนแต่ผมว่ามันยุ่งยากกว่าของ Java เยอะ)
- ยังไม่มี IDE เจ๋งๆที่สามารถรองรับทุกเรื่องของ Ruby ได้
- มีอะไรที่สามารถตัดออกได้เยอะ เพราะมีวิธีอื่นทดแทนได้มาก
- เป็นภาษาที่ตอนนี้ Performance ไม่สูงทั้งเรื่อง Server และตัวภาษามันเอง
ถัดมามาพูดข้อดีของ Ruby สงสัยยาวเหยียดเลยครับผม แต่อย่างว่าของพวกนี้มันแล้วแ่ต่คนชอบด้วยนะ งั้นขอพูดในมุมมองของผมละกัน
- การมี alias ทำให้ผมจะใช้ function เดิมๆกับภาษาที่ผมถนัดได้ เช่น จะใช้คำว่า println แทนคำว่า puts ก็ได้
- การมี default value ของ method ทำให้ผมสามารถเขียน function ได้สะดวกขึ้น
- การที่ทำให้เราเลือกเขียนรูปแบบของภาษาที่เราถนัดได้เอง เช่นผมชอบเขียนแบบ Understand & Readable หรือแนวที่อ่านและเข้าใจง่าย
- เราสามารถทำเป็น module แล้วเสริมเข้าไปใน class ได้ง่ายๆ เพราะมีการรองรับเรื่องนี้ไว้อยู่แล้ว
- สนับสนุนการทำ AOP โดยไม่ต้องใช้ Framework กันเลยทีเดียว
- เป็นภาษาที่ทุกอย่างเป็น Object จริงๆ ไม่มี Primitive (แต่จริงๆ Java ก็ใช้ทุกอย่างเป็น Object ก็ได้แต่เขียนได้ไม่สวยแบบ Ruby เช่น 10.times do |x| puts x end)
- เขียนน้อยได้เยอะ ! เป็นภาษาที่ Productivity สูงโดยธรรมชาติ
- เป็น OOP ที่สมบูรณ์แบบเหมือน Java ทำได้ทุกเรื่อง !! ไม่ว่าจะเป็น Encapsulation , Inheritance , Polymorphism ฯลฯ
- ติดต่อ Database ได้ง่ายแสนง่าย ส่วนใหญ่จะไม่เกิน 1 บรรทัดทั้งนั้นไม่ว่า MySQL , SQLite , PostreSQL
- Symbol มีลักษณะคล้าย String แต่เป็น String ที่ไม่ธรรมดาในหลายกรณี
- เป็นภาษาที่ไม่ต้อง Compile เหมือน Java Code Test ๆได้ทันที (ถ้าเครื่องช้าเจอการ Compile นานแล้วซึ้งครับ)
- สามารถทำแบบนี้ได้ x,y,z = 10,11,12 ชอบโคตร หรือจะ Swap ก็ง่าย x,y = y,x Java หมดสิทธิ์ ! ทำง่ายๆแบบนี้
จะเห็นได้ว่าข้อเสียของมัน ในอนาคตถ้าทำเรื่อง IDE ดีๆออกมา รวมกับ server ที่ช่วยเรื่อง Performance ให้มันดีขึ้นละก็ ผมว่าอนาคตสดใส เพราะตอนนี้ผมชอบเรื่อง Simplicity และ Productivity ของภาษานี้อย่างมาก ยิ่งถ้าบวกกับการเขียนอย่างมี Style ที่ดีแล้ว มันคงเป็นภาษาหนึ่งที่เขียน ได้โดยมี Comment เพียงน้อยนิดได้เลย ทีเดียว ! ถ้าผมไม่ลองเล่น Ruby ผมคงเลือก Python ไปแล้ว แต่พอลองเล่นแล้วกลับชอบ Ruby มากกว่า แต่มันคงต้องใช้ Effort ในการนิยามเริ่มต้นก่อนเขียน Program นิดหนึ่ง ถึงจะดึงประสิทธิภาพที่แท้จริงของมันออกมา เล่นได้เต็มที่
จริงๆผมว่าทั้งสองภาษาเป็นภาษาที่สุดยอด ทั้งสองอันแต่ในมุมมองของผม Ruby มันเจ๋งกว่าเรื่องเขียนน้อยได้เยอะ แต่ก็ต้องเป็นคนเขีัยนโปรแกรมได้ดี ก่อนถึงควรจะมาจับภาษานี้ เพราะตัวมันเอง Flexible มากๆแล้วความ Flexible ของมันจะเป็นดาบสองคม สำหรับโปรแกรมเมอร์มือใหม่ แต่เป็นพยัคติดปีกให้โปรแกรมเมอร์มือเก่าๆ !!
เนื้อหาคล้ายกันที่น่าสนใจ


