ปัญหาของ 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 ของมันจะเป็นดาบสองคม สำหรับโปรแกรมเมอร์มือใหม่ แต่เป็นพยัคติดปีกให้โปรแกรมเมอร์มือเก่าๆ !!

เนื้อหาคล้ายกันที่น่าสนใจ

No Comments

(Required)
(Required, will not be published)