Ruby

Posted by PunNeng, Sat Feb 25 01:19:00 UTC 2006

หายไปนาน จริงๆ ช่วงนี้ก็ไม่ค่อยว่างหรอกครับ แต่ก็อดไม่ได้ที่จะมา up เว็บ ช่วงนี้จะหมดมุ่นอยู่กับ Ruby หน่อยนะ เพราะไม่ค่อยได้ทำ Flash แล้ว เดือนนี้ได้ทำ Flash แค่ 2 วันเอง มาร่ำกันเลยดีกว่า

Ruby คืออะไร

Ruby คือ ภาษา programming ภาษานึง เป็น interpreter สำหรับการเขียนโปรแกรมเชิง Object-oriented ที่รวดเร็วและแสนง่ายดาย มันมีความสามารถที่จะจัดการกับ text files และจัดการเกี่ยวกับ system management tasks(เหมือน perl) มันแสนง่ายดาย ไวยากรณ์ตรงไปตรงมา มีส่วนเพิ่มเติมได้ด้วย และย้ายไปมาได้

อีกอย่างนึงคือ Ruby ฟรีครับ ไม่ใช่ฟรีเฉพาะค่าใช้จ่ายนะ ยังมีอิสระในการใช้งาน การคัดลอกแต่งเติม และการเผยแพร่อีกด้วย

มาดู feature กันดีกว่า

  • มีไวยากรณ์ที่แสนง่ายดาย บางส่วนก็นำมาจาก Eiffel และ Ada
  • มีการจัดการ exception เหมือนกับ java หรือ python ถ้าใครใช้พวกนี้เป็นก็สบาย
  • ตัว operator ที่มีไวยากรณ์พิเศษ สามารถประกาศ operator ให้เป็นลักษณะ method ได้
  • เป็น OO เต็มรูปแบบ ทุกอย่างจะถูกมองเป็น Object หมด เช่น 1 จะถูกมองเป็น Fixnum class
  • ถูกออกแบบมาอย่างพิเศษให้มีลักษณะ complete and open สำหรับการพัฒนา ตัวอย่างคือ สามารถเพิ่ม method หรือ instace ไปใน class ในตอน runtime ถ้ามันจำเป็นจริงๆ เราสามารถทำให้ instance ของคลาสๆ นึง สามารถทำหน้าที่อะไรๆ ต่างๆ ได้ต่างจาก instance จากคลาดเดียวกันได้ เนื่องจากมันประกาศ method ตอน runtime ได้ instance ตัวนึง อาจจะมี method มากกว่าอีกตัวนึง
  • ทำ single inheritance ได้อย่างเดียวเท่านั้น แต่มันก็รู้จัก module ซึ่ง module เป็นชุดของ method ที่ทุกๆคลาสจะสามารถนำเข้ามาเรียกใช้ได้ บางคนในทีมพัฒนาคิดว่า แบบนี้จะดีกว่าการทำ mulitple inheritance ซึ่งมันซับซ้อนเหลือเกิน และมันก็ไม่ถูกใช้ในการเปรียบเทียบกับ single inheritance บ่อยนัก(ไม่นักรวม C++)(อันนี้ก็ไม่เคยลอง)
  • มันมีการใช้ closures1 ไม่เพียงแต่ไม่ต้องตั้งชื่อ function แล้วยังทำการ binding ตัวแปรได้ด้วย
  • มีการใช้ block ด้วยนะ สามารถส่งอะไรต่างๆ ใน block(ครอบด้วย '{'...'}' หรือ 'do'...'end') ลงไปใน method หรือ ถูกเปลี่ยนให้อยู่ในลักษณะ closures ได้ด้วย
  • มีการจัดการโดยใช้ garbage collector เราไม่ต้องห่วงเลยว่าเมื่อมีตัวแปรที่เราไม่ได้ใช้มันจะเปลืองหน่วยความจำ ตัว garbage collector นี้แหละ จะเป็นตัวจัดการจัดเก็บให้เอง
  • สามารถเขียน C extension ได้ง่ายกว่า Perl หรือ Python มีการใช้งานร่วมกับ garbage collector ยังมีส่วนเสริมของ API และ SWIG interface ยังใช้ได้อีกด้วย
  • ตัว Interger จะถูกแบ่งเป็น small intergers(FixNum class) และ large interger(BigNum class) โดยที่เราไม่ต้องไปวุ่นวายอะไรกับมัน มันจะจัดการของมันเอง
  • ไม่ต้องการการประกาศ data type หรือ คำนำหน้าการประกาศตัวแปร และใช้สัญลักษณ์ เป็นตัวแสดงขอบเขตของตัวแปรนั้นๆ เช่น 'a' หมายถึง local variable, '@a' หมายถึง instance variable, '$a' หมายถึง global variable และก็ไม่ต้องใช้ self.(ในภาษาอื่นๆ จะใช้คำว่า this แทน) เป็นตัวกำหนดในทุกๆ instance member ด้วย
  • แล้วก็ยังโหลด library ที่เป็นส่วนเสริมได้ ถ้า OS มันอนุญาตให้ใช้งาน
  • ใช้ Thread โดยไม่ต้องคำนึงถึงว่า OS มันจะ support หรือไม่
  • ใช้งานได้ในทุกๆ OS - UNIX, DOS, Windows 95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2, และอื่นๆ
1คือการรักษา scope เอาไว้ เวลาที่เรียกใช้แล้ว มันควรจะต้องจบ scope ไป แล้วทำให้อะไรต่างๆ ตายไป แต่ closure จะทำให้ scope นั้น ยังคงอยู่

ข้อมูลจาก http://www.ruby-lang.org

แก้ไขล่าสุด วันที่ 1 กรกฏาคม 2550 เวลา 3.11 น.

Filed Under: Ruby | Tags: interpreter ruby

Comments

Have your say

A name is required. You may use HTML in your comments.




codegent: we're hiring