เท้าความก่อน
ดุกมาทำงานที่ใหม่ได้ครึ่งปีแล้วค่ะ น่าดีใจเนอะ
และก็ได้เรียนภาษาใหม่ ๆ ที่นอกจาก php อีกหลาย ๆ ภาษา แต่ในเดือนที่ 5 ก็ได้เริ่มเรียน ruby ค่ะ
ที่จริงดุกเคยอยากเรียนภาษาอื่น ๆ นอกจาก php ภาษาแรกที่คิดถึงเลย คือ ruby นะคะ
ส่วนเหตุผล ไม่รู้สิอยากเรียนมีไรมะ :30: เหตุผลเกรียนมาก
ใครจะไปรู้ว่าอีก 2 ปีหลังจากนั้น ดุกจะได้เรียน ruby จริง ๆ จัง ๆ แถมเอามาเขียนใช้งานจริง ๆ อีกต่างหาก
ภาษานี้คิดค้นจากชาวญี่ปุ่นท่านนึงค่ะ ชื่อนาย Matz หรือ Yukihiro Matsumoto
ซึ่งเริ่มใช้ภาษานี้มาตั้งแต่ปี 2538 โหวว มาถึงปีนี้ก็เกือบ 20 ปีแล้วนะเนี่ย
(อันนี้เพิ่งรู้เพราะเพิ่งเปิด wikipedia (http://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B8%9A%E0%B8%B5) ดูประวัติภาษานี้นะ)
ข้อดีของเจ๊ทับทิม เท่าที่ดุกรู้
- ตัวภาษาเป็นภาษาระดับ 3 ข้อดีของภาษาระดับนี้ส่วนใหญ่คือเขียนตามไวยากรณ์ภาษาอังกฤษปกติ (กึ่ง ๆ ภาษามนุษย์)
ส่งผลให้ผู้เขียนสามารถเขียนโปรแกมได้ง่ายขึ้น โปรแกรมก็สามารถเข้าใจและนำไปประมวลผลได้
- เจ๊เค้าเร็วมากนะ อย่างน้อยก็เร็วกว่าคุณปู่ php แต่ก็ไม่เร็วเท่าคุณงู (python)
- มีความหลากหลายในการเขียน สามารถเขียนได้หลายรูปแบบมาก แล้วผลลัพธ์ก็จะออกมาเหมือนกัน (คนเขียนโปรแกรมจะสนุกกับการเขียนทำนองนี้มาก แต่ก็มีข้อเสียนะ เดี๋ยวจะเล่าให้ฟังทีหลัง)
- สามารถเขียนการวนลูปแบบต่าง ๆ ที่มีหลายบรรทัดให้จบได้ในบรรทัดเดียว
เหมาะกับการแก้ไขโปรแกรมหรือด้นสดบน command line มาก ๆ
อื่น ๆ ลองช่วยกันเพิ่มนะคะ
ข้อเสียของเจ๊ทับทิม
- เนื่องจากตัวภาษาเป็นภาษาที่สามารถเขียนได้หลากหลายรูปแบบสุด ๆ (เอาแค่การเพิ่มตัวแปร array ก็ทำได้ตั้ง 7 วิธีแล้วอะ :18:)
ส่งผลให้มันมีข้อเสียเวลาเราเขียนโปรแกรมเดียวกันกับเพื่อน ๆ เป็นทีม คือมันต้องกำหนดรูปแบบการเขียนให้ตรงกันก่อนจึงจะเริ่มเขียนได้
ไม่งั้นถ้าแบ่งกันเขียน แล้วเวลาเอามารวมกัน มันจะเขียนไม่เหมือนกันเลย เอามาต่อกันไม่ได้นั่นเองค่ะ
อื่น ๆ ลองช่วยกันเพิ่มนะคะ
ถ้ารับมือกับเจ๊ทับทิมได้ก็ ลองมาเรียนรู้พร้อม ๆ กันเลยดีกว่าา~~
(http://image.ohozaa.com/il/26269_386573571864_716666864_3786914_5897878_n.jpg)
กรี๊ด น้องทับทิม :25:
ขอลงหัวเรื่องไว้ก่อนนะคะติดธุระง่ะค่ะ เดี๋ยวมาเขียนต่อนะคะ
การ install
ตอนนั้นท่านหัวหน้าลงให้ดุกค่ะ แต่ก็ record การ install เอาไว้ด้วย (แต่ไม่อนุญาตให้เอาไปเผยแพร่นอกบริษัท)
ถ้างั้น เดี๋ยวดุกดูวิดีโอแล้วค่อยเอามาอธิบายให้ฟังในนี้ละกันนะคะ
- mac ในแมคเรา install ตัวนี้ค่ะ ชื่อว่า RVM
ขั้นตอน:
• เปิด terminal ขึ้นมานะคะ แล้วใช้คำสั่งนี้เลยค่ะ
$ curl -L httpเอส://get.rvm.io | bash -s stable --ruby
คำสั่งนี้เป็นการลง RVM โดยที่ลง ruby มาด้วยเลยค่ะ
• เมื่อทำการ install เสร็จแล้ว สามารถตรวจสอบว่ามี ruby อยู่ในเครื่องแล้วหรือยังโดยใช้คำสั่ง
which ruby
หรือ
ruby -v
ก็ได้ค่ะ
- windows ใช้ตัว install จากเว็บ http://rubyinstaller.org/downloads/ (http://rubyinstaller.org/downloads/) ค่ะ
ขั้นตอน:
• download version ล่าสุดได้จากที่นี่เลยค่ะ แล้วทำการ install ไปตามปกติค่ะ
• เมื่อทำการ install เสร็จแล้ว สามารถตรวจสอบว่ามี ruby อยู่ในเครื่องแล้วหรือยังโดยใช้คำสั่งนี้ค่ะ
ruby -v
ลงโปรแกรมอะไรด้วยเหรอ ยุ่งยากจัง..
ถ้าไม่อยากลงโปรแกรมไว้ในเครื่องล่ะ?
เว็บนี้เลยค่ะ
http://tryruby.org/levels/1/challenges/0 (http://tryruby.org/levels/1/challenges/0)
หน้าตาหน้าเว็บประมาณนี้ค่ะ
(http://img3.f0nt.com/thumb/8635954ff5e2d5cce931c5ec2be60615.jpg) (http://img3.f0nt.com/29/8635954ff5e2d5cce931c5ec2be60615.png)
เราสามารถพิมพ์โค้ดทดสอบลงไปในนี้เพื่อ run ได้เลยค่ะ
- ถ้าเราจะลอง shell script ล่ะ ใช้คำสั่งอะไร
irb
จะเป็น command เหมือนในเว็บตะกี้นี้เลยค่ะ ลงทดสอบ code ruby ได้ในนั้นเลย
- ruby เขียนเป็นไฟล์ได้มั้ย?
ได้ค่ะโดยเขียนแล้วให้ save file เป็นไฟล์นามสกุล .rb ก็ใช้ได้แล้วค่ะ save ไว้ที่ไหนก็ได้
ส่วนวิธี run file ก็ให้ใช้คำสั่งดังนี้
ruby <path file .rb>
- ใช้อะไรเขียน?
ใช้ text editor อะไรก็ได้ตามถนัดเลยค่ะ
ปกติก็ใช้ textmate ไม่ก็ textwrangler บ้างไรบ้าง (ก็บน mac นี่นะ)
ส่วนการเขียนในเบื้องต้น ดุกขอใช้ terminal ใน mac ซึ่งก็เทียบเท่ากับ command prompt ใน windows นะคะ
แล้วค่อยไปเขียนยาว ๆ ใน text editor ที่ถนัดในลำดับต่อไปค่ะ
ในระยะเริ่มแรก ท่านหัวหน้าได้เขวี้ยง tutorial ของสำนัก Lynda.com ภาค ruby essential ค่ะ
ซึ่งตัวอย่างมันจะเข้าใจได้ง่ายมาก และก็ดู text เล่มนี้ประกอบด้วย เก่ามากแล้ว (ปี 2006 โน่น)
เวลาเอามาใช้ก็ต้องคอยดูด้วยว่ามันเปลี่ยน version ไปรึยัง
(http://akamaicovers.oreilly.com/images/9780596523695/lrg.jpg) (http://shop.oreilly.com/product/9780596523695.do?sortby=publicationDate)
ตัวหนังสือหนาประมาณ yellopages 2 เล่มครึ่งซ้อนกันค่ะ :07:
บทเรียนที่จะเรียนกันมีดังนี้จ้ะ
ruby object type ก็จะประกอบด้วยวัตถุ และตัวแปรลักษณะต่าง ๆ ในภาษา ruby ที่ใช้ ๆ กัน
- variables (http://www.f0nt.com/forum/index.php/topic,19319.msg1656831.html#msg1656831)
- integers (http://www.f0nt.com/forum/index.php/topic,19319.msg1656832.html#msg1656832)
- floats (http://www.f0nt.com/forum/index.php/topic,19319.msg1656838.html#msg1656838)
- strings
- arrays
- array methods
- hashes
- symbols
- booleans
- ranges
- constants
Control Structures พูดถึงเงื่อนไขต่าง ๆ ที่ใช้ในภาษา ruby
- if else elsif
- unless case
- loops
- iterators
Code Blocks พูดถึงการเขียนโค้ดแบบ block กล่าวคือมีหัวเปิดด้วย do และปิดท้ายด้วย end ค่ะ
- Code block คือ?
- find
- merge
- collect
- sort
- inject
Methods
Classes
Working with Files
Ruby Project Creating the Food Finder
อ้างคำพูดจาก: Rubberduck เมื่อ 16 ต.ค. 2011, 10:47 น.
(http://image.ohozaa.com/il/26269_386573571864_716666864_3786914_5897878_n.jpg)
กรี๊ด น้องทับทิม :25:
น้องเค้าสวยดีน๊าา :25:
ไม่ใช่แล้ว!! :07:
เยี่ยม ๆ เริ่มแล้ว ๆ :25:
จองโต๊ะแถวหน้าสุด :10:
variableการประกาศตัวแปรสำหรับ ruby ธรรมด๊า ธรรมดา ไม่ยากเท่าไหร่ แค่
x = 1y = "hello ชาวฟอนต์!"z = []a = -9b = -0.27c = trueง่ายมากชิมิล่า~
แต่นี่คือการประกาศตัวแปรแบบใช้ทั่วไปค่ะ (ก็คือตัวแปรแบบ local ล่ะนะ)
ถ้าเกิดเราต้องการประกาศตัวแปรแบบที่ใช้งานในระดับต่าง ๆ ข้าม class กันได้
หรืออยากประกาศตัวแปรแบบ Global ไรงี้ ก็ใช้ได้ตามตารางนี้เลยค่ะ
| Global | $variable |
| Class | @@variable |
| Instance | @variable |
| Local | variable |
| Block | variable |
integers
มาเริ่มที่ตัวแปรประเภทแรกกัน นั่นคือตัวแปรแบบตัวเลขนั่นเองค่ะ
ตัวเลขโดยปกติจะมีอยู่ 2 แบบ นั่นคือ
• แบบจำนวนเต็ม (integer)
• แบบมีทศนิยม (float)
โดยในช่วงนี้จะกล่าวถึงตัวเลขแบบ integer ก่อนนะคะ ในช่วงถัดไปจะกล่าวถึงตัวเลขแบบ float ค่ะ
อย่างใน ruby เองก็จะสามารถใส่เครื่องหมายที่แสดงการคำนวณคั่นระหว่างตัวเลข 2 ตัว
ruby ก็จะทำการประมวลผลให้เองอัตโนมัติ ดังนี้ค่ะ
ตัวอย่าง
(http://img3.f0nt.com/29/63610b3cdac798119ce81ec0a1a6c2e5.png)
ถ้าลองประกาศตัวแปรจากนั้นเอาตัวแปรนั้นมาคำนวณดูบ้าง?
ตัวอย่าง#1 ให้ x=2 แล้วเอา 4 หารด้วย x
(http://img3.f0nt.com/29/58ad88bdbcb86cb824ea9809085f09f7.png)
ตัวอย่าง#2 ลองคำนวณตัวเลขแบบต่าง ๆ ดูบ้าง โดยให้ x = 4
(http://img3.f0nt.com/29/68358b23409167060b80aa8bc1614913.png)
ตัวอย่าง#3 ลองคำนวณตัวเลขแบบที่มีวงเล็บบ้าง
(http://img3.f0nt.com/30/4714ba00ffeb6fefa8c7c8e650db113b.png)
function ต่าง ๆ ที่ใช้กับตัวเลข
• <number>.class สำหรับใช้ดูว่าเป็น class อะไร
ตัวอย่าง
(http://img3.f0nt.com/30/56432c206862cc524ff9d212b94344fb.png)
• <number>.abs สำหรับแปลงค่าตัวเลขเป็นค่าตัวเลขแบบ absolute
ตัวอย่าง
(http://img3.f0nt.com/30/0cc05a66a177c7379c97ab8f73d36645.png)
• <number>.next สำหรับบวกค่าตัวเลขเป็นค่าตัวเลขบวก 1
ตัวอย่าง
(http://img3.f0nt.com/30/042cc362d465bc772e7d4845dac251f0.png)
มาแล้วๆ :25:
float
เป็นตัวแปรตัวเลขแบบทศนิยมค่ะ ไม่ว่าจะทศนิยมกี่ตำแหน่งก็ตาม สำหรับ ruby เรียกว่าเป็นตัวแปรแบบ float ทั้งหมดค่ะ
• เจ้าเป็น float ตัวจริงหรือไม่?
เช็คได้โดยใช้คำสั่ง .class ค่ะ
ตัวอย่าง
(http://img3.f0nt.com/30/eb2b1fed5efc0c5fb4f47b1ffcdeb6f0.png)
• ถ้าลองประกาศตัวแปรที่ค่าจริง ๆ ก็เหมือนกัน เช่น 10.00 กับ 10 มันจะมีอะไรแตกต่างกันมั้ย?
ลองดูตัวอย่างนี้ละกันค่ะ
(http://img3.f0nt.com/30/d6a4fd76017198e4aa4def3a8d9ee29b.png)
• ลองหารแบบได้ผลลัพธ์เป็นเลขแบบทศนิยมซ้ำให้ดูหน่อยได้มั้ย?
ได้ ๆ จัดมา..
(http://img3.f0nt.com/30/3b60aaeeb6765ef8db6691a5397dc6b1.png)
• function ที่ใช้กับเลขแบบ float
- <number>.round
เป็นการดูค่าจำนวนเต็มโดยประมาณ (ปัดเศษ 5-9 ปัดขึ้น 1-4 ปัดลง)
ตัวอย่าง
(http://img3.f0nt.com/30/9bf8e82f760df146ecb0042fc0cfd665.png)
- <number>.to_i
เป็นการแปลงค่า float เป็น integer ค่ะ
ตัวอย่าง
(http://img3.f0nt.com/30/c6aa1b5367d46ffd4983484760df1d42.png)
รูบี้ :51:
ช่วยมาต่อด้วยครับ
รออยู่อยากศึกษามากๆเลย