หน้าเว็บ

วันศุกร์ที่ 31 กรกฎาคม พ.ศ. 2552

ความเข้าใจพื้นฐานก่อนเริ่มเขียน Ruby ตอนที่ 1

[Update: 9 Aug 2014]
รื่องที่ควรรู้และทำความเข้าใจกันก่อนที่จะเริ่มเขียนภาษา Ruby
แต่ละหัวข้อที่เขียนนั้ผมไม่ได้เรียงลำดับตามความสำคัญนะครับ แบบว่า คิดอะไรได้ก่อนก็ว่าไปก่อน ถึงแม้เนื้อหาจะค่อนข้างเบาบางออกแนว งงๆ แต่อย่างน้อยมันก็น่าจะช่วยให้เพื่อนรู้จักภาษา Ruby ได้มากขึ้นบ้างล่ะน่า
มาลองไล่ดูกันไปทีละข้อครับ

1) Ruby เป็นภาษาที่ทำงานในแบบ OOP (Object Oriented Programming)
ตามที่จั่วหัวไว้เลยครับ Ruby ถูกสร้างขึ้นด้วยความตั้งใจที่จะให้เป็นภาษาที่ทำงานแบบ OOP อย่างเต็มรูปแบบ 

ดังนั้นการทำงานของ Ruby ในทุกๆส่วน จึงเป็นการทำงานที่ต้องเกี่ยวกับอ็อบเจกต์ทั้งสิ้น โครงสร้างหรือข้อมูลพื้นฐานต่างๆ ใน Ruby ก็เป็นอ็อบเจกต์เช่นกัน ข้อมูลพื้นๆ ที่คุณอาจเจอในภาษา programming อื่นๆ อย่าง String, Integer, Floating point, Array, Boolean หรือ แม้กระทั่งค่าว่างอย่าง nil เหล่านี้เป็นอ็อบเจกต์หมด

แล้วยังไง ?
ก็สบายสิครับ เพราะหากว่าข้อมูลพื้นฐานล้วนเป็นอ็อบเจกต์กันหมด นั้นหมายความว่ามันต้องมีคลาสของข้อมูลชนิดนั้นๆ (หรือของอ็อบเจกต์นั้นๆ) ถูกกำหนดไว้ในภาษา Ruby ด้วย ซึ่งคลาสพื้นฐานเหล่านี้ติดมาพร้อมกับภาษา Ruby เรียบร้อยแล้ว ในรูปของ (Build-in class)  ทำให้เราสามารถเรียกใช้ความสามารถของอ็อบเจกต์แต่ละชนิดจากเมธอดที่มาพร้อมกับคลาสได้เลย

ตัวอย่างความสามารถพื้นๆ ของข้อมูลในแต่ละประเภท
เมื่อทดลองรันผ่าน irb จะได้ผลประมาณนี้

"This is Ruby world!".upcase  # => THIS IS RUBY WORLD!
"This is Ruby world!".size  # => 19
text = "This is Ruby world!"
text.gsub(/world/, "land")    # => This is Ruby land!
text.reverse                 # => !dlrow ybuR si sihT

13*2        # => 26
13.to_s     # => "13"
3.times { |t| print "#{t} " }
# => shows "0 1 2" and return 3

text.class  # => String
3.class     # => Fixnum
true.class  # => TrueClass
nil.class   # => NilClass


ย้ำอีกครั้งว่า ข้อมูลแต่ละตัวมันเป็นอ็อบเจกต์ในตัวของมันเองอยู่แล้ว (ข้อมูลพื้นฐานเหล่านี้ไม่จำเป็นต้องสร้างอ็อบเจกต์จากคลาสโดบใช้ new เหมือนอ็อบเจกต์ทั่วๆ ไป เพราะตัวแปรภาษา Ruby จะจัดการให้เอง แต่ขอให้มองว่ามันเป็นอ็อบเจกต์ตัวหนึ่ง) ดังนั้นเราจึงสามารถเรียกเมธอดออกมาใช้ผ่านทางอ็อบเจกต์นั้นได้เลย

Ruby มีสิ่งที่เรียกว่า module ซึ่ง ทำหน้าที่ระบุความสามารถเฉพาะในลักษณะใดลักษณะหนึ่ง โดยเราสามารถนำความสามารถที่กำหนดไว้เป็น module เข้ามา "ผสม (mix-in)" ลงไปในคลาสเพื่อให้คลาสมีความสามารถแบบเดียวกับที่ระบุไว้ใน module ด้วย 
เราสามารถนำ module มาประยุกต์ใช้เพื่อให้ คลาส เสมือนมีความสามารถของการสืบทอดคุณสมบัติจากคลาสมากกว่าหนึ่งคลาส (multiple inheritance) นอกจากนี้ยังใช้ module เพื่อแบ่งแยกหมวดหมู่ของคลาสแต่และคลาสให้ชัดเจน (namespacomg) ได้ด้วย

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


2) Dynamic type: ไม่ต้องกำหนดชนิดของตัวแปร
อย่างที่เข้าใจกันว่า ตัวแปรคือสิ่งสมมติที่เรานำมาใช้ในการอ้างอิงถึงข้อมูลตัวใดตัวหนึ่ง เวลาเราจะนำข้อมูลไปใช้เพื่อคำนวณหรือกระทำการใดๆเราก็จะอ้างอิงถึงตัวแปรที่เก็บข้อมูลนั้นๆอยู่แทน
ข้อมูลที่พูดถึงก็มีอยู่ด้วยกันหลายประเภทครับ เช่น สตริง เลขจำนวนเต็ม เลขทศนิยม เป็นต้น

เพื่อให้คนเขียนโปรแกรมและตัวภาษาไม่งง และป้องกันข้อผิดพลาดที่อาจเกิดขึ้นจากการคำนวณด้วย แปรคนละชนิด ภาษาอย่าง Java หรือ C# จึงมีข้อกำหนดว่า ก่อนที่จะนำตัวแปรมาใช้ เราจะต้องประกาศตัวแปรกันก่อนเพื่อให้รู้ว่าตัวแปรตัวนั้นๆใช้เก็บข้อมูลประเภทไหน จะได้ไม่นำมาใช้มั่วกัน คนเขียนโปรแกรมจะเป็นคนรับผิดชอบในการกำหนดค่าให้กับข้อมูลแต่ละประเภทแต่ละตัว
เราเรียกลักษณะเช่นนี้ว่าเป็นการทำงานแบบ static type

การประกาศตัวแปรทำได้โดยการเขียนชื่อประเภทของข้อมูลไว้หน้าชื่อของตัวแปรในครั้งแรกที่เราสร้างตัวแปรนั้นขึ้นมา

ตัวอย่างการประกาศตัวแปรในภาษา C# หรือ Java สามารถเขียนได้ดังนี้
int a;
int b;
int sum;

a = 10;
b = 15;
sum = a + b;

ทีนี้กลับมาดูทางฝั่งภาษา Ruby บ้าง
ภาษา Ruby เป็น Dynamic type การจัดการกับประเภทของข้อมูลจะตรงข้ามกับ Static type
เราจะไม่เห็นการประกาศตัวแปรเพื่อกำหนดประเภทของข้อมูลเหมือนกับตัวอย่างที่ผ่านมา เพราะภาษา Ruby จะจัดการกับประเภทข้อมูลของตัวแปรให้เราโดยอัตโนมัติ เรามีหน้าที่แค่สร้างและนำตัวแปรไปใช้ให้ถูกต้องเท่านั้น ไม่ต้องไปกำหนดให้มัน

โค้ดแบบเดียวกับตัวอย่างที่ผ่านมาจึงเขียนใหม่ได้ดังนี้
#  Ruby code
a = 10
b = 15
sum = a + b   # => 25

จะเห็นว่าเราไม่ต้องประกาศประเภทของตัวแปร a และ b อีก สามารถนำไปใช้เก็บค่าของข้อมูลได้เลย
(ในที่นี้ตัวแปร a และ b จะเก็บค่าเลขจำนวนเต็ม)

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

a = 10
puts a  # => 10
a = "ten"
puts a  # => ten

การแปลงค่าจากตัวแปรประเภทหนึ่งไปเป็นตัวแปรอีกประเภทหนึ่ง (type casting) ไม่ได้เป็นเรื่องยากเย็นสำหรับ Ruby
การแปลงจากสตริงไปเป็นตัวเลข, ตัวเลขเป็นสตริง หรือสตริงเป็นอาเรย์ นั้ค่อนข้าวจะชิวทีเดียว
ลองดูผลลัพธ์ของการแปลงค่าจากตัวอย่างข้างล่างดูครับ

100.to_s      # => "100"
"1234".to_i   # => 1234
"1234".to_f   # => 1234.0
"one two three".split   # => ["one", "two", "three"]
[1,2,3].to_s.inspect    # => "[1,2,3]"


อย่างไรก็ตามเพื่อให้คนเขียนโปรแกรมไม่งง ว่าอันไหนเป็นตัวแปรอันไหนเป็นข้อมูล ภาษา Ruby จึงมีกฏเกณในการจำแนกประเภทของข้อมูลง่ายๆ ดังนี้ครับ

3) รันโค้ด Ruby ในแบบ procedure programming ได้ ไม่ต้องสร้างฟังชั่น main ก็ได้
ถึงแม้ว่าภาษา Ruby จะเป็น OOP ทั้งแท่ง แต่เราสามารถกำหนดให้มันรันโค้ดในลักษณะเดียวกับ Procedure programming ได้ด้วย คือรันแบบลุยไปเรื่อยทีบรรทัดต่อบรรทัด 

อัน นี้จะสะดวกมากเวลาที่เราต้องการทดสอบโค้ด หรือต้องการทดลองร่างโค้ดแบบ Top-down เพราะเราไม่จำเป็นต้องไปสร้างคลาสแล้วเริ่มรันโปรแกรมจาก main เหมือนกับภาษาอื่นๆเขียนโค้ดปุ๊บก็รันแล้วดูผลลัพธ์กันเลย

ลองเปรียบเทียบโค้ดโปรแกรม hello ระหว่าง java และ ruby ดู

ถ้าเป็น Java โค้ดที่จะเริ่มรันต้องอยู่ในเมธอด main ของคลาสที่เราสร้างขึ้นมาก่อน

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

แต่ถ้าเป็น Ruby เราไม่ต้องสร้างคลาสก็ได้ (ทุกอย่างเป็นอ็อบเจกต์และคลาสถูกกำหนดไว้ก่อนในฉากหลังแล้ว) เพียงเขียนโค้ดลงในซอร์ซไฟล์แล้วรันเลย

puts "Hello World!"

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

4) การจำแนกตัวแปรประเภทต่างๆ ใน Ruby
ถึงแม้ว่า Ruby จะเป็น Dynamic type ไม่ต้องประกาศตัวแปร แต่เราเองก็ต้องจำแนกแยกแยะให้ได้ว่า สิ่งที่ปรากฏอยู่ในโค้ด Ruby นั้นเป็นข้อมูล, ตัวแปร, เมธอด หรือคลาส
วิธีดูและแยกข้อมูลหรือตัวแปรในโค้ดให้ออกนั้นไม่ยาก มีหลักการง่ายๆ ดังนี้
  • อะไรก็ตามที่อยู่ภายใต้เครื่องหมายคำพูด(" ") หรือเครื่องหมาย (' ') ให้ถือว่ามันคือข้อมูลประเภทสตริง (String) เช่น "a", "hello", "Arsenal"
  • ตัวเลขที่ไม่มีจุดทศนิยมถือว่าเป็นข้อมูลประเภทเลขจำนวนเต็ม(Integer) เช่น 3, 25670 โดยเลขจำนวนเต็มใน Ruby เป็นอ็อบเจกต์ของคลาส Fixnum
  • ตัวเลขที่มีจุดทศนิยมถือว่าเป็นข้อมูลประเภทเลขทศนิยม(Floating point) เช่น 3.141, 0.0005 โดยตัวเลขทศนิยมเป็นอ็อบเจกต์ของคลาส Float
  • สิ่งที่อยู่ในเครื่องหมาย "[ , ]" จะถือว่าเป็นข้อมูลประเภทอาเรย์(Array) เช่น ["one", "two"] หรือ [1,2,3]
  • ข้อมูลที่อยู่ในอาเรย์ไม่จำเป็นต้องเป็นข้อมูลชนิดเดียวกันหมด ข้อมูลต่างชนิดกันสามารถปนกันอยู่ในอาเรย์ตัวเดียวได้ด้วย (แน่อนว่าเป็น dynamic type ) เช่น [1, "two", 3.00]
  • ตัวเลขที่อยู่ภายในเครื่องหมาย "( )" จะถือว่าเป็นข้อมูลประเภท range เช่น (0..9)
  • สิ่งที่อยู่ในเครื่องหมาย {} คือข้อมูลประเภท hash โดยใช้เครื่องหมาย => เป็นตัวขั้นระหว่างค่าของ key และ value เช่น {1=>"one", 2 =>"two", 3=>"three"}
  • ตัวอักษร (character) หรือคำ (word) ที่ขึ้นต้นด้วยตัวพิมพ์เล็ก อาจเป็นตัวแปร local หรือเมธอดก็ได้ ไม่ว่ามันจะเป็นตัวแปรหรือเมธอดให้มองไว้ว่าจะมีค่าบางค่าออกมาจากตัวมันแน่ นอน ตัวอย่างเช่น a, count, price_list, email 
  • ตัวอักษรหรือคำที่อยู่หลังเครื่องหมาย ":" ถือว่าเป็นข้อมูลประเภท symbol เช่น :physic, :school

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

5) Comment ในภาษา Ruby
Comment คือข้อความที่เราต้องการเขียนแทรกเอาไว้ในโค้ดเพื่ออธิบายการทำงานของโค้ดหรือเอาไว้ใส่ข้อความเพื่อเตือนความจำเวลาแก้ไขโค้ด ซึ่งข้อความที่เป็น comment นั้นจะไม่ถูกแปลรวมไปกับโค้ดเวลารันโปรแกรม
การใส่ comment ในภาษา Ruby ทำได้ 2 แบบคือ
1. ใช้เครื่องหมาย "#" วางไว้หน้าข้อความที่เราต้องการให้เป็น comment โดยจะสามารถใช้เครื่องหมาย "#" กับข้อความที่มีความยาวไม่เกินหนึ่งบรรทัดเท่านั้น
2. ใช้สัญลักษณ์ "=begin" และ "=end" ครอบข้อความที่เราต้องการให้เป็น comment โดยวิธีนี้จะสามารถใช้กับข้อความที่มีความยาวมากกว่า 1 บรรทัดขึ้นไปได้

5) ภาษา Ruby มีตัวแปลภาษาเป็นแบบ Interpreter
หมายความว่าลักษณะการแปลซอร์ซโค้ดของตัวแปลภาษา Ruby จะแปลโค้ดทีละบรรทัด โดยเริ่มจากบรรทัดแรกไปจนถึงบรรทัดสุดท้าย

วันพุธที่ 29 กรกฎาคม พ.ศ. 2552

ติดตั้ง Ruby

[update: 13 Aug 2014]

สำหรับการลงตัวแปลภาษา Ruby ให้เข้าไปที่หน้า Installation ของ Ruby official website
ในหน้านี้แบ่งการติดตั้ง Ruby ออกตามประเภทของ OS ซึ่งแต่ละ OS มีวิธีการติดตั้งให้เลือกต่างกันไป
ผมเคยติดตั้งแค่บน Debian กับ Windows เท่านั้ันซึ่งก็ไม่ยากเย็นอะไร

ในกรณีของ Debain ง่ายมาก แค่พิมพ์คำสั่งข้างล่างลงบน terminal

$ sudo apt-get install ruby

Ruby เวอร์ชั่นล่าสุดจะถูก download และติดตั้งทันที
หากต้องการติดตั้งเวอร์ชั่นใดเวอร์ชั่นหนึ่งแบบเฉพาะเจาะจง ก็แค่ระบุชื่อเวอร์ชั่นต่อท้ายคำสั่งข้างต้น เช่น ถ้าต้องการเวอร์ชั่น 1.9.3 ก็ให้พิมพ์

$ sudo apt-get install ruby 1.9.3

สำหรับการติดตั้งบน Windows  ทาง Officail site แนะนำให้ติดตั้งโดยการใช้ RubyInstaller หรือที่เรียกว่า 1-click installer ซึ่งเป็นเพ็กเกจลักษณะเดียวกับการติดตั้งโปรแกรมบน Windows ทั่วไป

ในหน้า option ระหว่างติดตั้ง ผมแนะนำให้ติ๊กถูกทั้งสาม option เลย
อันแรกเป็นการลงเพ็กเกจ Tcl/Tk ในคราวเดียวกันเลย option ที่สองตัว installer จะเพิ่ม Ruby path ลงในตัวแปร PATH ของ Windows ให้เราอัตโนมัติ ส่วน option สุดท้ายเป็นการเพิ่ม file นามสกุล .rb และ .rbw ให้ Windows รู้จัก เมื่อไฟล์ .rb หรือ .rbw ถูกเรียกใช้ก็จะถูกเรียกใช้ด้วย Ruby เวอร์ชั่นที่ติดตั้งนี้



จากนั้น คลิ๊ก Next โลด ...

Verification : ตรวจสอบหลังติดตั้ง
หลังจากลง package ติดตั้ง Ruby เรียบร้อยแล้วเราจะมาตรวจสอบกันมามันใช้งานได้หรือไม่
อย่างแรกเลย ดูว่าเราสามารถเรียก Ruby ขึ้นมาทำงานได้หรือไม่ ซึ่ง check ได้จากกาพิมพ์คำสั่ง ruby -v ที่ DOS prompt
ถ้าผลลัพธ์ที่ได้เป็นข้อความแสดง version ของ Ruby แสดงว่าการติดตั้งของเราไม่มีปัญหาครับ
ถ้าลง Ruby แล้วไม่มีปัญหาก็จะได้ผลลัพธ์ประมาณนี้

C:\>ruby -v
ruby 1.9.3p327 (2012-11-10) [i386-mingw32]


จากนั้นเราจะมาลองรันโปรแกรมภาษา Ruby เพื่อทดสอบตัวแปลภาษา โดยเราจะใช้โปรแกรม SciTE ที่ติดมากับ installation package นี่แหละในการรันโปรแกรม
โปรแกรมที่เราจะทดสอบก็คือโปรแกรม hello บ้านๆทั่วๆไปครับ วอธีการก็ง่ายมาก ให้ เปิดโปรแกรม SciTE แล้วเขียนโค้ดด้านล่างนี้ลงไปแล้ว save ให้เป็นไฟล์ชื่อ hello.rb จากนั้นกดปุ่ม F5 เพื่อรันโปรแกรม ซึ่งจะได้ผลลัพธ์ในหน้า output windows ด้านขวามือครับ


ใช้โปรแกรม SciTE เขียนโค้ด Ruby แล้วรันได้เลย

หรือจะรันโปรแกรมที่เขียนด้วยภาษา Ruby ด้วยคำสั่งใน DOS prompt ก็ย่อมทำได้ครับโดยการใช้คำสั่ง ruby แล้วตามด้วยชื่อโปรแกรม(ไฟล์นามสกุล .rb)


เรียกใช้โปรแกรมที่เขียนด้วยภาษา Ruby ผ่านทาง command line ของ DOS prompt

สำหรับคนที่ทำงานบน Windows แล้วลง Ruby ด้วย One Click Installer package นั้นสามารถเรียกใช้โปรแกรมที่เขียนด้วยภาษา Ruby(ไฟล์ .rb) ด้วยการ double click ที่ไฟล์นั้นได้เลย พูดอีกอย่างก็คือไฟล์นามสกุล .rb นั้นจะทำตัวเป็น executable ไฟล์แบบหนึ่งนั่นเอง

วันศุกร์ที่ 24 กรกฎาคม พ.ศ. 2552

มาเขียนโปรแกรมกันเถอะ

หากย้อนกลับไปเมื่อสัก 7-8 ปีที่แล้ว การจะเริ่มต้นเขียนโปรแกรมคอมพิวเตอร์นั้นดูเหมือนจะเป็นอะไรที่ยาก ต้องเทพจริงๆ เท่านั้นถึงจะเข้าใจและเขียนออกมาได้

สมัยนั้นภาษาโปรแกรมที่ทำงานบน Windows หรือ DOS ก็มีอยู่ไม่กี่ตัว อย่าง C, Pascal, Cobal ซึ่งการใช้งานของภาษาของแต่ละภาษาก็ไม่ง่ายเลย แถมแหล่งความรู้ที่จะศึกษานี่ก็จำกัดอย่างยิ่ง เพราะหนังสือเกี่ยวกับ computer programming ภาษาไทยที่มีขายก็น้อย(และอ่านยากมากๆๆๆๆ) internet ก็ยังไม่แพร่หลายเหมือนทุกวันนี้ จะซื้อ text มาอ่านก็แพงไปแถมภาษาอังกฤษเรายังออกทะเลอีก

เล่มนี้ล่ะครับคลาสิกมาก รุ่นปู่อยากผมใช้กันทุกคนครับ(อ่านยากมากเช่นกัน)


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

แต่เนื่องจากผมใช้คอมฯ อยู่ตลอดทั้งเล่นเกม เล่นเน็ต ส่งเมล ใช้ excel ทำงาน(งานนี่อันดับสุดท้ายเลย) จึงได้รับรู้ข้อมูล และเห็นวิวัฒนาการของการใช้ภาษา programming ในบ้านเรามาด้วย ซึ่งผมบอกได้เลยว่าตอนนี้หากจะเริ่มเขียนโปรแกรมซักตัวเพื่อเอามาทำอะไรบางอย่างตามที่เราต้องการนั้น มันไม่ได้ยากเย็นขั้นเทพเหมือนเมื่อก่อนอีกแล้ว เพราะ...

1) มีภาษา computer ให้ศึกษากันเยอะมาก ชอบใจภาษาไหนก็มีให้เลือก แต่ละภาษาก็มีจุดเด่นของตัวเองต่างกันไป
2) แหล่งข้อมูลเพื่อศึกษาการเขียนโปรแกรมนั้นมีมากขึ้นทั้ง internet และหนังสือภาษาไทย วางขายกันเกลื่อน แค่อ่านหนังสือก็เขียนโปรแกรมกันได้แล้วแทบจะไม่ต้องไปลง course เรียนให้เสียสตางค์
3) มีเครื่องมือและตัวช่วยในการเขียนโปรแกรมให้ download ทำให้ลดเวลาในการเขียนโปรแกรมลงได้มาก

แล้วทำไมต้องเขียนโปรแกรม
คำถามนี้เป็นคำถามเดียวกับที่ผมเคยถามตัวเองมาแล้ว ว่าทำไมต้องมานั่งเขียนโปรแกรมเองให้เสียเวลา ใช้โปรแกรมสำเร็จรูปไม่ได้เหรอ ให้คนที่ทำหน้าที่เป็น IT เขียนไม่ได้เหรอ ฯลฯ คำตอบที่ได้ก็มาจากประสบการณ์ตรงในการทำงานจริงของผม บวกกับความเห็นส่วนตัวด้วยนะครับ :)

1) ถ้าเราอยากลดเวลาทำงานพวก report ที่มันซ้ำๆ หรือไม่อยากมานั่งประมวลผลข้อมูลเช่นตัดแปะแล้วคำนวณสูตร ซึ่งพวกนี้เป็นงานซ้ำๆที่ต้องทำอยู่เป็นประจำ การเขียนโปรแกรมแล้วให้มันทำงานที่ว่านี้ให้จะช่วยคุณได้มาก และคุณจะมีเวลาไปคิดงานอย่างอื่นที่มีประโยชน์กว่า
2) บ่อยครั้งที่คุณไม่สามารถใช้โปรแกรมสำเร็จรูปทำงานของคุณให้เสร็ขในครั้งเดียว ครับ คุณอาจต้องการโปรแกรมของคุณเอง
3) ถ้าคุณฝันอยากจะสร้างเกมของคุณเอง การเขียนโปรแกรมก็เป็นหนังในสิ่งที่คุณควรศึกษา
4) ความสามารถในการเขียนโปรแกรมได้จะเพิ่มคุณค่าของคุณในการหางานครั้งต่อไป นั้นหมายถึงคุณมีโอกาสได้รับค่าตอบแทนมากขึ้น
5) การเขียนโปรแกรม มันส์ดี ครับ
สำหรับคุณผู้อ่านแล้วอาจมีเหตุผลอื่นๆอีกมากนอกเหนือจาก 5 ข้อนี้

ก็นั่นหละครับ มีแต่ข้อดีไม่มีข้อเสีย ดังนั้นเรามาเริ่มเขียนโปรแกรมกันดีกว่าครับ !


แล้วจะใช้ภาษาอะไรดี ?
โอวว ถามง่าย แต่ตอบไม่ง่ายนะครับ
จะใช้ภาษาไหนนั้นขึ้นอยู่กับความเหมาะสมและลักษณะของโปรแกรมที่จะสร้างไปใช้งาน ยกตัวอย่างเช่น ผมอยากเขียนโปรแกรมเกมที่สามารถนำไป run บนมือถือได้ อย่างนี้ควรเลือกศึกษา พวก Java เอาไว้ แต่หากจะเขียนเกมเพื่อเล่นบนเครื่องคอนโซลอย่าง Xbox360 ก็ต้องไปทางภาษา ตระกูล .NET XNA เป็นต้น
อย่างไรก็ตามภาษาที่ได้รับความนิยมและใช้งานกันอย่างแพร่หลายใน 'ตลาดแรงงานของเมื่องไทย' สมควรจัดเป็นตัวเลือกอันดับต้นๆของมือใหม่ที่อยากศึกษาการเขียนโปรแกรมครับ เพราะเมื่อเขียนเป็นแล้วส่วนใหญ่สามารถหางานได้ง่ายกว่า(แต่ก็ไม่เสมอไป :P) เมื่อมีคนใช้งานภาษาเหล่านั้นเยอะเราจึงสามารถค้นหาแหล่งความรู้สำหรับภาษานั้นๆได้ง่ายกว่าด้วย ซึ่งภาษายอดนิยมก็ได้แก่ C++, Java, ภาษาตระกูล .NET(VB, ASP, C#), PHP เป็นต้น


แต่........


ภาษาที่ผมอยากแนะนำให้ทุกท่านได้รู้จักผ่านทาง Blog นี้ไม่ได้มีชื่ออยู่ในทำเนียบภาษายอดนิยมของเมืองไทย แต่กลับเป็นที่รู้จักกันมาสักพีกใหญ่แล้วในเมืองนอก อีกทั้งความนิยมของภาษานี้ก็เพิ่มสูงขึ้นอย่างต่อเนื่อง แม้แต่ผมที่เคยสักกัดภาษา Java และ PHP ก็ยังแทใจเปลี่ยนมาใช้ภาษานี้เหมือนกัน ไม่ใช้เพราะตามกระแสหรอกครับ แต่เพราะของเขาดีจริงๆ

ภาษาที่ผมพูดถึงคือภาษา Ruby ครับ


ตอนหน้าเราจะมาดูกันครับว่า Ruby มันมีดียังไง