ภาษารูบี
กระบวนทัศน์ | Multi-paradigm: functional, imperative, object-oriented, reflective |
---|---|
ผู้ออกแบบ | Yukihiro Matsumoto |
ผู้พัฒนา | Yukihiro Matsumoto และคณะ |
เริ่มเมื่อ | ค.ศ. 1995 |
รุ่นเสถียร | 3.3.6[1]
/ 5 พฤศจิกายน 2024 |
ระบบชนิดตัวแปร | Duck, dynamic, strong |
ภาษาโปรแกรม | C |
ระบบปฏิบัติการ | ข้ามระบบปฏิบัติการ |
สัญญาอนุญาต | Ruby License และ GPL |
นามสกุลของไฟล์ | .rb |
เว็บไซต์ | www |
ตัวแปลภาษาหลัก | |
Ruby MRI, TruffleRuby, YARV, Rubinius, MagLev, JRuby, MacRuby, RubyMotion, Mruby, IronRuby | |
ได้รับอิทธิพลจาก | |
เอดา, เพิร์ล, สมอลล์ทอล์ก, ไพทอน, ลิสป์, Dylan และ CLU | |
ส่งอิทธิพลต่อ | |
Clojure, CoffeeScript, Crystal, D, Elixir, Groovy, Ioke, Julia, Mirah, Nu, Ring, Rust,[2] Swift |
รูบี (อังกฤษ: Ruby) เป็นเป็นอินเทอร์พรีเตอร์ภาษาระดับสูงเชิงวัตถุ ที่ได้รับอิทธิพลของโครงสร้างภาษามาจาก ภาษาเพิร์ลกับภาษาเอดา มีความสามารถในเชิงวัตถุแบบเดียวกับภาษาสมอลทอล์ค และมีความสามารถหลายอย่างจากภาษาไพทอน, ภาษาลิสป์, ภาษา Dylan และภาษา CLU ตัวแปลภาษารูบีตัวหลักเป็นซอฟต์แวร์เสรี
ประวัติ
[แก้]ภาษารูบีสร้างโดย Yukihiro Matsumoto หรือ "Matz" ซึ่งเริ่มพัฒนาเมื่อ 24 กุมภาพันธ์ ค.ศ. 1993 และออกรุ่นแรกสู่สาธารณะใน ค.ศ. 1995 ชื่อ "รูบี" ที่แปลว่า ทับทิม นั้นเป็นหินประจำเดือนเกิดของเพื่อนร่วมงานของ Matsumoto โดยรูบีไม่ได้ตั้งใจตั้งชื่อล้อกับ Perl (แปลว่า ไข่มุก) ซึ่งเป็นหินประจำเดือนมิถุนายน ในขณะที่ทับทิมเป็นหินของเดือนกรกฎาคม
รุ่นล่าสุดคือรูบีคือ 2.2.1 [3]
ปรัชญา
[แก้]ประเด็นหลักในการออกแบบภาษารูบีของ Matz คือการทำให้โปรแกรมเมอร์มีความสุขโดยการลดงานที่ไม่ต้องใช้ทักษะออกไป โดยเป็นไปตามหลักการของการออกแบบส่วนต่อประสานกับผู้ใช้ที่ดี[1] Matz เน้นว่าการออกแบบระบบควรให้ความสำคัญกับความจำเป็นของมนุษย์มากกว่าความจำเป็นของเครื่องคอมพิวเตอร์
บ่อยครั้งที่ผู้คนโดยเฉพาะวิศวกรคอมพิวเตอร์ เพ่งความสนใจไปที่เครื่องจักร พวกเขาคิดว่า "โดยการกระทำนี้ทำให้เครื่องจักรทำงานได้เร็วขึ้น โดยการกระทำนี้เครื่องจักรจะทำงานอย่างมีประสิทธิภาพมากขึ้น โดยการกระทำนี้เครื่องจะทำบางอย่าง" พวกเขาพุ่งความสนใจไปที่เครื่องจักร แต่แท้ที่จริงแล้ว เราจำเป็นที่จะต้องพุ่งความสนใจไปที่มนุษย์ ได้แก่ การสนใจว่ามนุษย์เขียนโปรแกรมอย่างไร หรือใช้งานเครื่องจักรอย่างไร เราเป็นนาย เครื่องจักรที่เป็นทาส
กล่าวกันว่าภาษารูบีทำตามหลักการทำให้ประหลาดใจน้อยที่สุด (principle of least surprise; POLS) ซึ่งหมายความว่าภาษาปกติแล้วควรมีลักษณะที่สอดคล้องกับสัญชาตญาณหรือเป็นไปตามสมมุติฐานที่โปรแกรมเมอร์ได้คาดไว้ วลีนี้ไม่ได้มีที่มาจาก Matz แต่พูดกันทั่วไป วิถีทางของภาษารูบีอาจจะใกล้เคียงกับวลีว่า "การทำให้ Matz ประหลาดใจน้อยที่สุด" อย่างไรก็ตามโปรแกรมเมอร์หลายคนพบว่าการทำให้ Matz ประหลาดใจน้อยที่สุดก็ใกล้เคียงกับตัวแบบของจิตใจของพวกเขาด้วย
ในการให้สัมภาษณ์ Matz นิยามว่า "ทุกคนมีภูมิหลังของตนเอง บางคนอาจจะเคยใช้ภาษาไพทอน บางคนอาจจะเคยใช้ภาษาเพิร์ล พวกเขาอาจประหลาดใจโดยมีสาเหตุจากแง่มุมต่างๆ กันของภาษา จากนั้นพวกเขามาหาฉันและพูดว่า 'ฉันประหลาดใจเนื่องจากลักษณะพิเศษนี้ของภาษา ดังเมื่อมีเหตุการเช่นนี้ภาษารูบีจึงละเมิดหลักการทำให้ประหลาดใจน้อยที่สุด' ช้าก่อนๆ หลักการทำให้ประหลาดใจน้อยที่สุดไม่ใช่สำหรับทุกคน หลักการทำให้ประหลาดใจน้อยที่สุดหมายถึงหลักการทำให้ "ฉัน" ประหลาดใจน้อยที่สุด และจะเป็นหลักการทำให้ประหลาดใจน้อยที่สุดก็ต่อเมื่อคุณได้ศึกษาภาษารูบีมาแล้วอย่างดี ตัวอย่างเช่น ฉันเคยเป็นโปรแกรมเมอร์ภาษาซีพลัสพลัสมา ก่อนที่ออกแบบภาษารูบี ฉันได้เขียนโปรแกรมภาษาซีพลัสพลัสเพียงภาษาเดียวมาสองหรือสามปี และหลังจากสองปีนั้นภาษาซีพลัสพลัสก็ยังทำให้ฉันประหลาดใจอยู่"
ตัวอย่าง
[แก้]ตัวอย่างโปรแกรมภาษารูบีพื้นฐาน:
# ทุกอย่างซึ่งรวมทั้งตัวอักษรเป็น[วัตถุ] อีกทั้งการเรียกใช้เมธอดไม่จำเป็นต้องมีวงเล็บตามหลัง
# ดังนั้นโปรแกรมเหล่านี้จึงทำงานได้:
-199.abs # 199
"ruby is cool".length # 12
"Rick".index ("c") # 2
"Nice Day Isn't It?".split (//).uniq.sort.join # " '?DINaceinsty"
-
source: thairuby
การเก็บรวบรวม
[แก้]การเก็บรวบรวมโดยใช้แถวลำดับ:
a = [1, 'hi', 3.14, 1, 2, [4, 5]]
a[2] # 3.14
a.reverse # [[4, 5]], 2, 1, 3.14, 'hi', 1]
a.flatten.uniq # [1, 'hi', 3.14, 2, 4, 5]
การเก็บรวบรวมโดยใช้แฮช:
hash = {'water' => 'wet', 'fire' => 'hot'}
puts hash['fire'] # Prints: hot
hash.each_pair do |key, value|
puts "#{key} is #{value}"
end
# พิมพ์: water is wet
# fire is hot
hash.delete_if {|key, value| key == 'water'} # ลบ 'water' => 'wet'
อ้างอิง
[แก้]- ↑ "Ruby 3.3.6 Released". 5 พฤศจิกายน 2024.
- ↑ อ้างอิงผิดพลาด: ป้ายระบุ
<ref>
ไม่ถูกต้อง ไม่มีการกำหนดข้อความสำหรับอ้างอิงชื่อrust
- ↑ http://www.ruby-lang.org/en/downloads/
2. http://thairuby.wordpress.com/[ลิงก์เสีย]
ดูเพิ่ม
[แก้]แหล่งข้อมูลอื่น
[แก้]- เว็บไซต์ของภาษารูบี
- Full Ruby on Rails Tutorial เก็บถาวร 2007-05-17 ที่ archive.today