ทำไมต้อง Ruby?

Ruby เขียน "ง่าย"

Ruby นับว่าเป็นภาษาที่มีความยืดหยุ่น (Flexible) มาก ทั้งในด้านของ Syntax หรือหน้าตาของโค้ด ที่อ่านง่าย เขียนได้หลายรูปแบบ ละเว้นตัว Semicolon ; และวงเล็บ () ได้ในหลายกรณี ทำให้โค้ดมีความเรียบง่าย และดูสวยงาม

# โค้ดทั้งหมดทำงานเหมือนกัน คือพิมพ์ค่า 10 ออกมา ซึ่งเป็นผลรวม (sum) ของ 1+2+3+4
puts([1,2,3,4].sum());

# สามารถละการเขียนวงเล็บของเมธอด sum และ ; ท้ายบรรทัดได้
puts([1,2,3,4].sum)

# สามารถละการเขียนวงเล็บของเมธอด puts ได้ โดยการเว้นวรรคแทน
puts [1,2,3,4].sum

# สามารถใช้ Range แทน Array ได้ ทั้งคู่มีเมธอด sum เหมือนกัน
puts (1..4).sum

นอกจากนี้ยังเป็นภาษาที่เป็นแบบ Dynamic Type คือไม่ซีเรียสเรื่องประเภทของข้อมูล ซึ่งเหมาะมากกับการเขียนโปรแกรมให้ใช้งานได้ โดยไม่ต้องเขียนโค้ดเป็นจำนวนมากเกินจำเป็น และการแปลงประเภทของข้อมูลก็ทำได้ง่ายมาก

# ไม่ต้องใช้คำนำหน้าตัวแปรอย่าง var, let, int เหมือนกับภาษาอื่นๆ ให้กำหนดค่าลงไปได้เลย
a = "Hello"
puts a.class # String

# Re-assign หรือกำหนดค่าตัวแปรใหม่ เมื่อไหร่ก็ได้
a = 1
puts a.class # Integer

a = a.to_s # Re-assign โดยแปลงเป็น String "1"
puts a.class # String

Ruby มีสังคมที่ "แข็งแกร่ง" และ "มีความเป็นอันหนึ่งอันเดียวกัน"

อันนี้เป็นความเห็นส่วนตัวนะ จากการใช้งานภาษานี้มาหลายปี เทียบกับ JavaScript เห็นว่าจำนวนของ Library หรือ Framework ต่างๆ ที่ผู้คนช่วยกันพัฒนาขึ้น จะเป็นการช่วยกันสร้างมากกว่าที่จะกระจายตัวกันแบบของ JavaScript เช่นในฝั่ง Ruby จะมีคอมมูนิตี้ที่ช่วยกันพัฒนา Web Framework อย่าง Ruby on Rails เยอะมากจนแข็งแกร่ง แต่ในทางกลับกัน JavaScript Web Framework นั้นมีเยอะมากจนนับไม่ถ้วน เช่น Express, Fastify, Hapi, Koa, Nest, Blitz และอีกมากมาย มาแข่งขันกันเอง

ทั้งนี้อาจเป็นเพราะ Ruby มี Core Team ที่มีความคิดและวิสัยทัศน์ตรงกัน หรือเพราะความเรียบง่ายแต่ยืดหยุ่นของภาษานี้ หรืออาจเป็นเพราะเหตุผลอื่นด้วยก็เป็นได้ หากผู้เขียนมีโอกาสได้ใช้ภาษาอื่นๆ อีก อาจจะมีความคิดอื่นเพิ่มเติมในส่วนนี้

Ruby ไม่เร็ว แต่ "เขียนเร็ว"

Ruby ช้ากว่าภาษาอย่าง C, Rust, C++ หลายสิบเท่า เหตุผลหนึ่งเพราะว่า Ruby เป็น Interpreted Language ในขณะที่ภาษาอันดับต้นๆ จะเป็น Compiled Language

Interpreted Language จะทำการอ่านโค้ดแล้วทำงานตามนั้นเลย ซึ่งต้องมี Interpreter ในการรันโค้ด

Compiled Language โค้ดจะต้องทำการคอมไพล์ หรือแปลงโค้ดให้เป็น Assembly หรือภาษาที่คอมพิวเตอร์ทุกเครื่องอ่านได้ การคอมไพล์จะต้องใช้เวลา แต่เมื่อคอมไพล์เสร็จแล้ว โปรแกรมจะรันได้เร็วมากกว่า

แต่ถึง Ruby จะรันได้ช้า แต่ในทางกลับกัน Ruby นั้นมีประโยชน์ในแง่ของการ "เขียนน้อยแต่ได้เยอะ" ขอยกตัวอย่างเทียบกับภาษาอื่นๆ ทั้งสามโปรแกรมนี้พิมพ์คำว่า Hello World! เหมือนกัน

ภาษา C:

#include <stdio.h>
int main() {
   printf("Hello World!");
   return 0;
}

ภาษา Java:

public class Hello {
   public static void main(String []args) {
      System.out.println("Hello World!");
   }
}

ภาษา Ruby:

puts "Hello World!"

Ruby เหมาะกับการสร้างโปรดักต์สไตล์สตาร์ทอัป

นอกจากที่ Ruby จะเขียนง่ายแล้ว ยังมีความพร้อมในการสร้างโปรดักต์หรือเว็บไซต์ได้อย่างรวดเร็ว เพราะมีสิ่งที่เรียกว่า RubyGems หรือแหล่งรวมไลบรารี่ต่างๆ ที่คนในคอมมูนิตี้ของภาษานี้ช่วยกันสร้างขึ้น (เหมือนกับใน PHP มี Composer, NodeJS มี npm, Python มี pip) และไลบรารี่สามารถติดตั้งได้ง่ายด้วยคำสั่งเดียว gem install และการใช้งานก็มักจะตรงไปตรงมา ทำให้เวลาหาวิธีการแก้ปัญหาบน Google หรือ StackOverflow มักจะเจอวิธีแก้ได้โดยไม่ยากเย็น

สิ่งสำคัญของโปรดักต์โดยเฉพาะสำหรับ Startup แล้ว สิ่งสำคัญไม่ใช่โปรแกรมหรือเว็บที่เร็ว แต่เป็นการ Go-to-market หรือการทำให้โปรดักต์ไปถึงมือลูกค้าให้เร็วที่สุดก่อน เราจึงพบเห็นได้บ่อยว่าหลายบริษัทเลือกที่จะใช้ Ruby ก่อนเป็นอันดับแรกเพื่อสร้างฐานลูกค้า และเมื่อขยายตัว (Scale) ได้ถึงระดับหนึ่ง แล้วจึงค่อยๆ เปลี่ยนไปใช้ภาษาอื่นที่มีความเร็วมากขึ้นทีหลัง

Last updated