รูบี (อังกฤษ: Ruby) เป็นเป็นอินเทอร์พรีเตอร์ภาษาระดับสูงเชิงวัตถุ ที่ได้รับอิทธิพลของโครงสร้างภาษามาจาก ภาษาเพิร์ลกับภาษาเอดา มีความสามารถในเชิงวัตถุแบบเดียวกับภาษาสมอลทอล์ค และมีความสามารถหลายอย่างจากภาษาไพทอน, ภาษาลิสป์, และ ตัวแปลภาษารูบีตัวหลักเป็นซอฟต์แวร์เสรี
กระบวนทัศน์ | : , , object-oriented, |
---|---|
ผู้พัฒนา | Yukihiro Matsumoto และคณะ |
เริ่มเมื่อ | ค.ศ. 1995 |
รุ่นเสถียร | 3.3.3 / 12 มิถุนายน 2024 |
ระบบชนิดตัวแปร | , , |
ภาษาโปรแกรม | C |
ระบบปฏิบัติการ | ข้ามระบบปฏิบัติการ |
สัญญาอนุญาต | และ GPL |
นามสกุลของไฟล์ | .rb |
เว็บไซต์ | www |
, , , , , , , , , | |
ได้รับอิทธิพลจาก | |
เอดา, เพิร์ล, สมอลล์ทอล์ก, ไพทอน, ลิสป์, และ | |
ส่งอิทธิพลต่อ | |
, , Crystal, , , , , , , , Ring, Rust, |
ประวัติ
ภาษารูบีสร้างโดย หรือ "Matz" ซึ่งเริ่มพัฒนาเมื่อ 24 กุมภาพันธ์ ค.ศ. 1993 และออกรุ่นแรกสู่สาธารณะใน ค.ศ. 1995 ชื่อ "รูบี" ที่แปลว่า ทับทิม นั้นเป็นหินประจำเดือนเกิดของเพื่อนร่วมงานของ Matsumoto โดยรูบีไม่ได้ตั้งใจตั้งชื่อล้อกับ Perl (แปลว่า ไข่มุก) ซึ่งเป็นหินประจำเดือนมิถุนายน ในขณะที่ทับทิมเป็นหินของเดือนกรกฎาคม
รุ่นล่าสุดคือรูบีคือ 2.2.1
ปรัชญา
ประเด็นหลักในการออกแบบภาษารูบีของ 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.3 Released". 12 มิถุนายน 2024. สืบค้นเมื่อ 12 มิถุนายน 2024.
- อ้างอิงผิดพลาด: ป้ายระบุ
<ref>
ไม่ถูกต้อง ไม่มีการกำหนดข้อความสำหรับอ้างอิงชื่อrust
- http://www.ruby-lang.org/en/downloads/
ดูเพิ่ม
แหล่งข้อมูลอื่น
- เว็บไซต์ของภาษารูบี
- Full Ruby on Rails Tutorial เก็บถาวร 2007-05-17 ที่
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
rubi xngkvs Ruby epnepnxinethxrphrietxrphasaradbsungechingwtthu thiidrbxiththiphlkhxngokhrngsrangphasamacak phasaephirlkbphasaexda mikhwamsamarthinechingwtthuaebbediywkbphasasmxlthxlkh aelamikhwamsamarthhlayxyangcakphasaiphthxn phasalisp aela twaeplphasarubitwhlkepnsxftaewresrirubi Ruby krabwnthsn object oriented phuphthnaYukihiro Matsumoto aelakhnaerimemuxkh s 1995 1995 runesthiyr3 3 3 12 mithunayn 2024rabbchnidtwaepr phasaopraekrmCrabbptibtikarkhamrabbptibtikarsyyaxnuyataela GPLnamskulkhxngifl rbewbistwww wbr ruby lang wbr org idrbxiththiphlcakexda ephirl smxllthxlk iphthxn lisp aelasngxiththiphltx Crystal Ring Rust prawtiphasarubisrangody hrux Matz sungerimphthnaemux 24 kumphaphnth kh s 1993 aelaxxkrunaerksusatharnain kh s 1995 chux rubi thiaeplwa thbthim nnepnhinpracaeduxnekidkhxngephuxnrwmngankhxng Matsumoto odyrubiimidtngictngchuxlxkb Perl aeplwa ikhmuk sungepnhinpracaeduxnmithunayn inkhnathithbthimepnhinkhxngeduxnkrkdakhm runlasudkhuxrubikhux 2 2 1prchyapraednhlkinkarxxkaebbphasarubikhxng Matz khuxkarthaihopraekrmemxrmikhwamsukhodykarldnganthiimtxngichthksaxxkip odyepniptamhlkkarkhxngkarxxkaebbswntxprasankbphuichthidi 1 Matz ennwakarxxkaebbrabbkhwrihkhwamsakhykbkhwamcaepnkhxngmnusymakkwakhwamcaepnkhxngekhruxngkhxmphiwetxr bxykhrngthiphukhnodyechphaawiswkrkhxmphiwetxr ephngkhwamsnicipthiekhruxngckr phwkekhakhidwa odykarkrathanithaihekhruxngckrthanganiderwkhun odykarkrathaniekhruxngckrcathanganxyangmiprasiththiphaphmakkhun odykarkrathaniekhruxngcathabangxyang phwkekhaphungkhwamsnicipthiekhruxngckr aetaeththicringaelw eracaepnthicatxngphungkhwamsnicipthimnusy idaek karsnicwamnusyekhiynopraekrmxyangir hruxichnganekhruxngckrxyangir eraepnnay ekhruxngckrthiepnthas klawknwaphasarubithatam principle of least surprise POLS sunghmaykhwamwaphasapktiaelwkhwrmilksnathisxdkhlxngkbsychatyanhruxepniptamsmmutithanthiopraekrmemxridkhadiw wliniimidmithimacak Matz aetphudknthwip withithangkhxngphasarubixaccaiklekhiyngkbwliwa karthaih Matz prahladicnxythisud xyangirktamopraekrmemxrhlaykhnphbwakarthaih Matz prahladicnxythisudkiklekhiyngkbkhxngcitickhxngphwkekhadwy inkarihsmphasn Matz niyamwa thukkhnmiphumihlngkhxngtnexng bangkhnxaccaekhyichphasaiphthxn bangkhnxaccaekhyichphasaephirl phwkekhaxacprahladicodymisaehtucakaengmumtang knkhxngphasa caknnphwkekhamahachnaelaphudwa chnprahladicenuxngcaknikhxngphasa dngemuxmiehtukarechnniphasarubicunglaemidhlkkarthaihprahladicnxythisud chakxn hlkkarthaihprahladicnxythisudimichsahrbthukkhn hlkkarthaihprahladicnxythisudhmaythunghlkkarthaih chn prahladicnxythisud aelacaepnhlkkarthaihprahladicnxythisudktxemuxkhunidsuksaphasarubimaaelwxyangdi twxyangechn chnekhyepnopraekrmemxrphasasiphlsphlsma kxnthixxkaebbphasarubi chnidekhiynopraekrmphasasiphlsphlsephiyngphasaediywmasxnghruxsampi aelahlngcaksxngpinnphasasiphlsphlskyngthaihchnprahladicxyu twxyangtwxyangopraekrmphasarubiphunthan thukxyangsungrwmthngtwxksrepn wtthu xikthngkareriykichemthxdimcaepntxngmiwngelbtamhlng dngnnopraekrmehlanicungthanganid 199 abs 199 ruby is cool length 12 Rick index c 2 Nice Day Isn t It split uniq sort join DINaceinsty source thairubykarekbrwbrwm karekbrwbrwmodyichaethwladb 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 karekbrwbrwmodyichaehch hash water gt wet fire gt hot puts hash fire Prints hot hash each pair do key value puts key is value end phimph water is wet fire is hot hash delete if key value key water lb water gt wet xangxing Ruby 3 3 3 Released 12 mithunayn 2024 subkhnemux 12 mithunayn 2024 xangxingphidphlad payrabu lt ref gt imthuktxng immikarkahndkhxkhwamsahrbxangxingchux rust http www ruby lang org en downloads 2 http thairuby wordpress com lingkesiy duephimRuby on Railsaehlngkhxmulxunewbistkhxngphasarubi Full Ruby on Rails Tutorial ekbthawr 2007 05 17 thi bthkhwamkarekhiynopraekrm hrux phasaopraekrmniyngepnokhrng khunsamarthchwywikiphiediyidodykarephimetimkhxmuldk