ภาษาโปรแกรม RUBY “รูบี้” คืออะไร? ภาษาโปรแกรมทับทิม

สงสัยว่าทำไม Ruby ถึงได้รับความนิยมมาก? แฟนๆ ของเขาเรียกเขาว่าลิ้นสวยและเก่ง และในขณะเดียวกันพวกเขาก็บอกว่าสะดวกสบายและใช้งานได้จริง อะไรเกินดุล?

อุดมคติของผู้สร้างรูบี้

Ruby เป็นภาษาที่มีความสมดุลอย่างรอบคอบ ผู้สร้าง ยูกิฮิโระ มัตสึโมโตะ (หรือที่รู้จักในชื่อ “Matz”) ได้รวมเอาบางส่วนของภาษาโปรดของเขา (Perl, Smalltalk, Eiffel, Ada และ Lisp) เพื่อสร้างภาษาใหม่ที่กระบวนทัศน์ การเขียนโปรแกรมเชิงฟังก์ชันสมดุลโดยหลักการของการเขียนโปรแกรมที่จำเป็น

เขามักพูดว่าเขา "พยายามทำให้ Ruby เป็นภาษาที่เป็นธรรมชาติ แต่ไม่เรียบง่าย" ที่สะท้อนถึงชีวิต

จากนี้ เขาเสริมว่า:

ทับทิมมีลักษณะภายนอกที่เรียบง่าย แต่ซับซ้อนมากจากภายใน เช่นเดียวกับร่างกายมนุษย์

การเพิ่มขึ้นของทับทิม

ตั้งแต่ออก รุ่นสาธารณะในปี 1995 Ruby ได้รับความสนใจจากโปรแกรมเมอร์ทั่วโลก ในปี 2549 Ruby ได้รับการยอมรับอย่างกว้างขวาง มีกลุ่มผู้ใช้ Ruby ที่ใช้งานอยู่ในเมืองใหญ่ๆ ทั่วโลก และการประชุม Ruby ก็เต็มไปด้วยความจุ

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

5. ครั้ง(พิมพ์ "เรารัก Ruby! Ruby เยี่ยมมาก!" }

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

ความยืดหยุ่นของทับทิม

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

ตัวอย่างเช่น การบวกจะดำเนินการโดยใช้การดำเนินการบวก (+) แต่ถ้าคุณต้องการใช้คำที่อ่านง่ายขึ้นบวกกับสิ่งนี้ คุณสามารถเพิ่มวิธีการดังกล่าวลงใน Numeric ได้โดยตรง ชั้นเรียนชั้นในภาษารูบี้.

คลาสตัวเลข def บวก (x) ตนเอง + (x) ปลาย ปลาย y = 5 บวก 6 #y ตอนนี้อายุ 11 ปี

ตัวดำเนินการใน Ruby เป็นน้ำตาลเชิงวากยสัมพันธ์สำหรับวิธีการ คุณยังสามารถแทนที่มันได้

บล็อก การออกแบบที่แสดงออกอย่างแท้จริง

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

การสร้างบล็อกได้รับแรงบันดาลใจจากภาษาโปรแกรมเชิงฟังก์ชัน Matz กล่าวว่า "ด้วยการปิดตัวลงใน Ruby ฉันอยากจะแสดงความเคารพต่อวัฒนธรรมของภาษา Lisp"

search_engines = %w แผนที่ทำ | เครื่องยนต์ |

"http://www."

+เครื่องยนต์ downcase + ลงท้ายด้วย ".com"

ในโค้ดด้านบน มีการอธิบายบล็อกไว้ภายในโครงสร้าง do ... end วิธีการ map ใช้บล็อกของโค้ดกับรายการคำที่นำเสนอ วิธีการอื่น ๆ มากมายใน Ruby ปล่อยให้เส้นทางเปิดไว้สำหรับโปรแกรมเมอร์เพื่อเขียนบล็อคโค้ดของตนเองที่บอกวิธีการโดยละเอียดว่าควรทำอย่างไร ทับทิมและมิกซ์ซินแตกต่างจากภาษาเชิงวัตถุหลายภาษา Ruby

โดยเจตนา

มอบมรดกเพียงอันเดียว แต่ Ruby ยังจัดเตรียมแนวคิดของโมดูลด้วย (เรียกว่าหมวดหมู่ใน Objective-C) โมดูลคือชุดของวิธีการ

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

คลาส MyArray รวมถึงจุดสิ้นสุดที่นับได้

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

  • การแสดงภาพของ Ruby
  • เนื่องจาก Ruby มักใช้เครื่องหมายวรรคตอนแบบเบาบางและมักใช้คำภาษาอังกฤษเป็นคำหลัก จึงมีการใช้เครื่องหมายวรรคตอนบางตัวในการตกแต่ง Ruby Ruby ไม่จำเป็นต้องประกาศตัวแปร ใช้หลักการตั้งชื่ออย่างง่ายเพื่อแยกขอบเขตของตัวแปร
  • var อาจเป็นตัวแปรท้องถิ่น

@var ตัวแปรวัตถุ

$var เป็นตัวแปรโกลบอล

สัญลักษณ์นี้ช่วยเพิ่มความสามารถในการอ่านโดยการอนุญาตให้โปรแกรมเมอร์ระบุบทบาทของแต่ละตัวแปรได้อย่างง่ายดาย นอกจากนี้ยังหลีกเลี่ยงการใช้ตนเองที่น่าเบื่อ สำหรับแต่ละวัตถุ

    Ruby มีโครงสร้างการจัดการข้อยกเว้น เช่น Java หรือ Python ซึ่งช่วยให้จัดการกับข้อผิดพลาดได้ง่ายขึ้น

    Ruby แนะนำตัวรวบรวมขยะแบบทำเครื่องหมายและกวาดที่แท้จริงสำหรับอ็อบเจ็กต์ Ruby ทั้งหมด ไม่จำเป็นต้องติดตามจำนวนลิงก์ในไลบรารีบุคคลที่สามด้วยตนเอง ดังที่ Matz กล่าวไว้ “ดีต่อสุขภาพของคุณมากกว่า”

    การเขียนส่วนขยาย C ใน Ruby นั้นง่ายกว่าใน Perl หรือ Python โดยมี API ที่หรูหรามากสำหรับการเรียก Ruby จาก C ซึ่งรวมถึงการเรียกสำหรับการฝัง Ruby ลงใน ซอฟต์แวร์เพื่อใช้เป็นภาษาสคริปต์ มีอินเทอร์เฟซ SWIG ให้เลือกด้วย

    Ruby สามารถโหลดไลบรารีบุคคลที่สามแบบไดนามิกได้หากระบบปฏิบัติการอนุญาต

    Ruby ใช้เธรดที่ไม่ขึ้นอยู่กับระบบปฏิบัติการ ด้วยวิธีนี้ บนแพลตฟอร์มใดๆ ที่คุณรัน Ruby คุณจะสามารถใช้มัลติเธรดได้ โดยไม่คำนึงว่าจะรองรับหรือไม่ ระบบนี้สตรีมหรือไม่ คุณสามารถใช้ความสามารถแบบมัลติเธรดได้แม้ใน MS-DOS!

  • การแปล

ฉันได้พบ ทับทิมเมื่อไม่นานมานี้ ต้องขอบคุณกรอบการทำงานที่ยอดเยี่ยม รูบี้ออนเรลส์- ฉันไม่คิดว่าตัวเองเป็นผู้เชี่ยวชาญ Ruby แต่ฉันได้อ่าน PickAxe ซึ่งเขียนโปรแกรมอรรถประโยชน์ Ruby หลายตัวไว้แล้ว ของใช้ส่วนตัวและพัฒนาบน Rails ในเวลาว่างของฉันด้วย

รูบี้ออน ในขณะนี้, ภาษาหลักของฉัน ฉันเริ่มต้นด้วย เทอร์โบปาสคาลที่โรงเรียนเรียน และ ซี++ที่มหาวิทยาลัยได้เขียนวิทยานิพนธ์เรื่อง ชวาและฉันก็เรียนด้วย PHPตั้งแต่เริ่มต้นเพราะฉันต้องการเรียนรู้วิธีสร้างเว็บไซต์อย่างรวดเร็วและง่ายดาย ฉันคิดว่าการเขียนโค้ดสำหรับฉันถือเป็นความบันเทิงรูปแบบหนึ่ง และเป็นเพียงสิ่งอื่นเท่านั้น ตอนแรกก็คิดว่าจะเรียนภาษาอะไร หลามหรือทับทิม ฉันเลือกอันที่สองเพราะฉันไม่ต้องการให้การเยื้องที่ไม่ถูกต้องทำให้เกิดปัญหาในโค้ดของฉัน

มีบทแนะนำ บทช่วยสอน บทความ และบทความมากมายที่เขียนโดยกูรูเกี่ยวกับวิธีใช้ Ruby ให้เกิดประโยชน์สูงสุด บทความนี้ไม่มีอะไรเช่นนั้น

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

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

สรุปคุณได้รับคำเตือนแล้ว

ทำไมต้องเรียนรูบี้?

ทับทิมยืมสิ่งที่ดีที่สุดจากภาษาโปรแกรมอื่น ๆ จาก คุยเล็กๆ น้อยๆถึง ชวา, จาก ภาษาเพิร์ลถึง หลาม- ที่นี่ ความสามารถพื้นฐานซึ่งโดยหลักการแล้วคุณสามารถดูได้ในภาษาอื่น:
  • ข้อยกเว้น เชื่อหรือไม่ว่าข้อยกเว้นถือเป็นหนึ่งในสิ่งที่สำคัญที่สุดในการพัฒนาโปรแกรมทุกประเภท โปรแกรมเมอร์ที่ PHP4ไม่รู้อะไรเกี่ยวกับพวกเขาและจะบอกคุณว่าคุณสามารถพิมพ์ (ข้อผิดพลาด) ไปที่หน้าจอหรือใช้คลาส "super-duper" ของตัวเองเพื่อจัดการกับข้อผิดพลาด โชคดีสำหรับพวกเราทุกคน ทับทิมมาพร้อมกับ ลอง/จับ(หรือดีกว่ายัง เริ่ม/ช่วยเหลือ) บล็อกและชุดของข้อยกเว้นที่กำหนดไว้ล่วงหน้าและขยายได้ เพื่อการจัดการข้อผิดพลาดที่ถูกต้อง
  • เนมสเปซ: โมดูล ทับทิมทำให้การใช้เนมสเปซเป็นเรื่องง่าย สิ่งนี้น่าจะดึงดูดผู้ที่ชื่นชอบ ซี++และ ชวา.
  • ความเชื่อประจำในตัว: สำหรับผู้เชี่ยวชาญทุกคน ภาษาเพิร์ลคุณสามารถใส่บางสิ่งเข้าไปได้ // และมันจะกลายเป็น การแสดงออกปกติพร้อมสำหรับการเปรียบเทียบ (สำหรับสิ่งนี้เราใช้ตัวดำเนินการ =~ ).
  • ตัวดำเนินการโอเวอร์โหลด: ทับทิมช่วยให้คุณสามารถกำหนดตัวดำเนินการเช่น +, -, > ฯลฯ สำหรับชั้นเรียนของคุณ
  • แพ็คเกจ: เรียกว่า " อัญมณี"(ก้อนกรวด) พวกเขาสมชื่อจริงๆ นอกจากนี้ - พวกมันทำงานด้วย แพ็คเกจรองรับการขึ้นต่อกัน และยังสามารถเป็นแบบข้ามแพลตฟอร์มหรือขึ้นอยู่กับแพลตฟอร์มก็ได้
  • คอนโซลแบบโต้ตอบ: สามารถใช้เพื่อทดสอบโค้ดแบบโต้ตอบได้ เช่น คอนโซล หลาม

2. คุณจะรักสิ่งเล็กๆ น้อยๆ

ทับทิมสง่างาม ทำไม เพราะเขาไม่ได้พยายามสร้างโค้ดให้กระชับจนรบกวนการอ่านและทำความเข้าใจ มีเคล็ดลับบางประการที่อาจช่วยคุณได้:
  • คุณสามารถใช้โอเปอเรเตอร์ทั้งสอง ถ้าและ เว้นเสียแต่ว่าในการแสดงออกตามเงื่อนไข แน่นอนคุณสามารถใช้ ถ้าที่มีความหมายตรงข้ามกับสำนวนแต่ใช้ เว้นเสียแต่ว่ามักจะนำไปสู่ น้อยลงข้อผิดพลาด นอกจากนี้ คุณสามารถใช้ตัวดำเนินการทั้งสองเป็นตัวแก้ไขเงื่อนไขได้ โดยวางไว้หลังนิพจน์แทนที่จะวางไว้ข้างหน้า: order.new ยกเว้นว่า order.exists
  • คุณสามารถใช้เครื่องหมายคำถามและเครื่องหมายอัศเจรีย์ที่ส่วนท้ายของชื่อเมธอดได้ ข้อตกลงนี้ไม่ได้บังคับใช้ แต่เป็นสัญญาณ " ? " ถูกใช้เมื่อเมธอดส่งคืน จริงหรือ เท็จขณะที่ป้าย " ! » ใช้สำหรับวิธีการที่ทำสิ่งที่ไม่สามารถย้อนกลับได้ เช่น การลบบันทึกออกจากฐานข้อมูล การแยก อักขระตัวสุดท้ายจากสตริง ฯลฯ
  • คุณสามารถใช้นามแฝง ( นามแฝง) สำหรับวิธีการที่สร้างไว้แล้ว ด้วยวิธีนี้คุณจะได้รับวิธีการต่างๆ มีอยู่และ มีอยู่จริงไม่มีค่าใช้จ่ายและไม่มีการทำซ้ำ
  • คุณสามารถใช้คำสั่ง attr_reader, attr_writerหรือ attr_accessorสำหรับ การสร้างอัตโนมัติ ทะเยอทะยาน / ผู้ตั้งค่าสำหรับสมาชิกชั้นเรียน
  • และแบบแผนการตั้งชื่อเพิ่มเติม: ค่าคงที่ คลาส และโมดูลจะถูกเขียนด้วย อักษรตัวใหญ่วิธีการและสมาชิกคลาสจะต้องขึ้นต้นด้วยตัวอักษรตัวเล็ก ชื่อตัวแปรโกลบอลขึ้นต้นด้วย " $ " ชื่อตัวแปรอ็อบเจ็กต์ขึ้นต้นด้วย " @ " และชื่อตัวแปรคลาสด้วย " @@ " อืม ฯลฯ
  • เมื่อเรียกเมธอด คุณไม่จำเป็นต้องเขียนวงเล็บ คุณสามารถเขียน write File.open("/home/h3rald/test.txt") หรือเพียงแค่ File.open "/home/h3rald/test.txt" ซึ่งสะดวกเป็นพิเศษกับวิธีการที่ไม่มีข้อโต้แย้ง

3.ไม่จำเป็นต้องใช้อัฒภาคอีกต่อไป

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

4.ทุกสิ่งล้วนเป็นวัตถุอย่างที่ควรจะเป็น

ตอนที่ฉันกำลังเรียนอยู่ ชวาฉันก็บอกแล้วว่าทุกสิ่งเป็นวัตถุ
- “วัตถุ 14 และ 374346.678 คืออะไร”
- “ไม่ โง่เขลา นี่มันตัวเลข!”

ใน ทับทิมตัวเลข, สัญลักษณ์, ค่าบูลีนและทุกสิ่งทุกอย่างก็เป็นวัตถุ อย่างจริงจัง. ซึ่งหมายความว่าคุณสามารถเขียนสิ่งต่าง ๆ เช่นนี้:
"YOU SHOULDN"T ALWAYS USE CAPITALS".lowcase # จะส่งกลับ "คุณไม่ควรใช้ตัวพิมพ์ใหญ่เสมอไป" แทนที่จะเป็นแบบนี้:
#โค้ด PHP
strtolower ("คุณควรใช้ตัวพิมพ์ใหญ่ทุกครั้ง")
ซึ่งจะช่วยประหยัดเวลา บันทึกวงเล็บ และมีเหตุผลมากขึ้น

5. ทุกสิ่งมีความสำคัญ

หรือ “ไม่จำเป็นต้องใช้อีกต่อไป กลับเพื่อคืนค่า" หากต้องการอธิบายอย่างรวดเร็ว: คำสั่งทั้งหมดใน Ruby ส่งคืนค่า แม้กระทั่งการกำหนดตัวแปร ดังนั้นคุณไม่จำเป็นต้องใช้จริงๆ คำหลัก « กลับ" ในตอนท้ายของวิธีการ มูลค่าของงานล่าสุดจะถูกส่งกลับเสมอ

6.คุณสามารถเปลี่ยนสภาพแวดล้อมด้วยวิธีใดก็ได้ที่มี

ครั้งแรกที่ฉันเห็นสิ่งนี้ฉันรู้สึกประทับใจ จินตนาการ สถานการณ์ทั่วไป: คุณเริ่มใช้คลาสของระบบหรือคลาสที่เขียนโดยคนอื่นและตระหนักว่าคุณต้องการบางอย่าง วิธีการเพิ่มเติมในนั้น มีหลายวิธีในการแก้ปัญหานี้ในภาษาโปรแกรมทั่วไป:
  • คุณกำลังโกง ซอร์สโค้ดชั้นเรียนหากคุณสามารถเข้าถึงได้ แต่โดยปกติแล้วนี่เป็นความคิดที่ไม่ดี อย่าทำ
  • คุณสืบทอดชั้นเรียนของคุณจากนั้นและเพิ่มเข้าไป วิธีการใหม่- โดยปกติแล้วนี่คือ - เป็นความคิดที่ดี- แต่วิธีหนึ่งสามารถทำให้ดูเหมือนมอนโรได้เล็กน้อย นอกจากนี้ คุณจะต้องปรับแต่งโค้ดอื่นๆ ของคุณเล็กน้อยตามนั้น
  • คุณสามารถสร้างวิธีการนอกชั้นเรียนได้ สิ่งนี้จะใช้ได้ แต่จะไม่หรูหรามากนักและยังขัดต่ออีกด้วย อุ๊ย.
ใน ทับทิมคุณสามารถเพิ่มวิธีการให้กับคลาสดั้งเดิมโดยไม่ต้องแก้ไขซอร์สโค้ด ซึ่งสามารถทำได้แม้สำหรับคลาสระบบ
เราต้องการเพิ่มวิธีการแปลงค่าจากเมตรเป็นฟุตหรือไม่? เรามาขยายคลาสกันดีกว่า ตัวเลขตามที่แสดง:
ตัวเลขคลาส
เท้าแน่นอน
ตัวเอง*3.2808399
จบ
จบ

จากนี้ไปตัวเลขของเราทั้งหมดจะมีวิธีการใหม่ที่สามารถใช้ได้เหมือนอย่างอื่นๆ:
5.feet # จะกลับมา 16.4041995
ชั้นเรียนใน ทับทิมไม่เคยปิดและสามารถขยายได้ตลอดเวลาจากทุกที่ แน่นอนว่าโอกาสนี้จะต้องใช้ด้วยความระมัดระวัง!

7. คุณไม่สามารถรับยูนิคอร์นจากนกได้ แต่คุณสามารถรับลาได้หากต้องการ

ฉันจำได้ชัดเจนว่าครูของฉันเป็นอย่างไร ซี++ใช้สัตว์เพื่อแสดงแนวคิดพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ - คลาสและการสืบทอด มีบางอย่างลึกลับเมื่อเธออธิบายมรดกหลายอย่างให้เราฟัง โดยสร้าง "เพกาซัส" จาก "นก" และ "ม้า" สิ่งที่บ้า ทับทิมไม่อนุญาต มรดกหลายอย่าง- ดูเหมือนเป็นกระแสและสุดท้ายก็เป็นเรื่องของรสนิยม ฉันไม่ชอบการได้รับมรดกหลายอย่างเพราะอาจทำให้เกิดสิ่งที่คาดเดาไม่ได้ได้ อย่างไรก็ตาม คุณสามารถสร้างสิ่งที่คล้ายกันโดยใช้โมดูลได้ ทับทิมเพื่อให้ตัวแปรและวิธีการของโมดูลหนึ่งถูกเพิ่มไปยังคลาสบางคลาสหากรวมโมดูลไว้ด้วย

8. XML ไม่จำเป็นจริงๆ

XML- ภาษามาร์กอัปที่สวยงามและใช้กันทั่วไปที่สามารถประมวลผลได้กับภาษาโปรแกรมทั้งหมดและใช้งานได้ทุกที่ น่าเสียดายที่การเขียนยุ่งยากเกินไป แยกวิเคราะห์ยาก และบอกตามตรงว่าอ่านยากในกรณีส่วนใหญ่ แต่ลองดูส่วนต่อไปนี้:
regexp: !ruby/regexp /a-zA-Z/
หมายเลข: 4.
สตริง: สตริง

มันง่ายกว่าและง่ายกว่าแน่นอน XML, ความจริง? ยินดีต้อนรับสู่ YAMLซึ่งเป็นภาษามาร์กอัปที่ชื่นชอบ (แต่ไม่ใช่เพียงภาษาเดียว) ทับทิมซึ่งสามารถนำเสนอวัตถุใดๆ ในรูปแบบที่เรียบง่าย กระชับ แต่ครบถ้วนได้
Ruby มีความสามารถในการทำงานด้วย XMLแต่เรียบง่าย YAMLติดสินบนนักพัฒนาหลายคนที่ตอนนี้ใช้มันแทน XMLเช่น สำหรับไฟล์คอนฟิกูเรชัน (นี่คือสิ่งที่เราทำในนั้น) ราง- แฟรกเมนต์ที่นำเสนอข้างต้นได้มาโดยการรันโค้ดแฟรกเมนต์ต่อไปนี้:
("string" => "a string", "number" => 4.7, "regexp" => /a-zA-Z/).to_yaml
วิธี to_yamlกำหนดไว้สำหรับชั้นเรียน วัตถุซึ่งเป็นพาเรนต์ของออบเจ็กต์อื่นๆ ทั้งหมด ดังนั้นออบเจ็กต์ทั้งหมดจึงสามารถเข้าถึงได้ ทับทิม- สิ่งนี้ทำให้คุณสามารถแปลงวัตถุเป็น YAMLและในทางกลับกัน นักพัฒนาก็โปร่งใสอย่างแน่นอน เจ๋งใช่มั้ย?

9.Lambda เป็นมากกว่าตัวอักษรกรีก

ทับทิมยืมเวทมนตร์บางอย่างมาจาก เสียงกระเพื่อมและ ภาษาเพิร์ลเข้าไปในวัตถุและบล็อก โปรค. โปรคคือ "บล็อกของรหัสที่เกี่ยวข้องกับชุดของตัวแปรท้องถิ่น เมื่อเชื่อมโยงแล้ว พวกเขาสามารถเรียกได้ในบริบทที่แตกต่างกันและยังคงเข้าถึงตัวแปรเหล่านั้นได้" ลองดูสิ่งต่อไปนี้:
def gen_times (ปัจจัย)
กลับ Proc.new (|n| n*ปัจจัย)
จบ

Times3 = gen_times(3)
times5 = gen_times(5)

Times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60

สามารถใช้คำหลักได้ แลมบ์ดาแทน Proc.ใหม่ซึ่งจะไม่ส่งผลต่อผลลัพธ์ นี่อาจดูคุ้นเคยสำหรับผู้รู้ ภาษาเพิร์ลและ หลาม(หรือ เสียงกระเพื่อม- ซึ่งสามารถทำได้แม้กระทั่งบน PHPแต่มีน้อยคนนักที่จะใช้ประโยชน์จากโอกาสนี้
นอกจากนี้ใน ทับทิมบล็อกประเภท "ไม่ได้สร้าง" มีการใช้กันอย่างแพร่หลาย โปรค" ตัวอย่างเช่น เพื่อวนซ้ำเนื้อหาของออบเจ็กต์และรันโค้ดบางอย่าง เช่น วิธีการ แต่ละใช้ได้สำหรับชั้นเรียน อาร์เรย์:
.each (|c| ใส่ c*2) #=> จะส่งคืนแต่ละองค์ประกอบคูณด้วย 2
หากรหัสไม่พอดีกับบรรทัดเดียว ขอแนะนำให้ใช้โครงสร้าง ทำ...จบแทนที่จะใช้วงเล็บ แฟนๆ ทับทิมไม่ชอบวงเล็บ

10. คุณสามารถใช้ Rails ได้

สุดท้ายแต่ไม่ท้ายสุด... ใช้ได้ตลอด รางสำหรับการพัฒนาเว็บแอพพลิเคชั่น การพัฒนาจะไม่ง่ายเหมือนด้วย PHP, แต่ รางถูกเขียนใน ทับทิมเนื่องจากมีคุณสมบัติที่ไม่พบในภาษาอื่น

บทสรุป

หมดเวลาแล้ว บางทีคุณอาจกำลังคิดที่จะดูอยู่แล้ว ทับทิมบางทีคุณอาจได้ลองแล้ว หรือบางทีคุณอาจเพิกเฉยต่อมัน ไม่ว่าครั้งต่อไปที่คุณดูโค้ดของคุณและมันดูน่ากลัวและขนาดของมันดูน่ากลัว อย่าตำหนิฉันเลย

เรียนผู้อ่าน - อย่าลืมว่า Habrauser แปลข้อความเพียงอย่างเดียว (ใช่ใช่) เขาไม่จำเป็นที่จะต้องแสดงการกล่าวอ้างทางอุดมการณ์

Ruby เป็นภาษาโปรแกรมแรกที่มาถึงเราจากดินแดนอาทิตย์อุทัย บางครั้งมันเป็นที่รู้จักอย่างกว้างขวางในญี่ปุ่นเท่านั้น เนื่องจากเอกสารทั้งหมดในนั้นไม่ได้แปลเป็นภาษาอังกฤษ อย่างไรก็ตาม ทันทีที่เริ่มมีการแปลและตีพิมพ์ Ruby ก็เริ่มให้ความสนใจไปทั่วโลก และในปี 1998 ฟอรัมนี้ " Ruby-talk” เริ่มงานแล้ว”

ผู้สร้างภาษา ยูกิฮิโระ มัตสึโมโตะ (หรือ “แมทซ์”) ไม่พอใจกับภาษาสคริปต์ที่มีอยู่ในขณะนั้น ตามที่เขาพูด "Perl 4 ไม่ทรงพลังเพียงพอ และ Python ก็ไม่เชิงวัตถุเพียงพอ" เขาต้องการภาษาที่สมบูรณ์แบบสำหรับงานของเขา ดังนั้นเขาจึงนำสิ่งที่ดีที่สุดจากภาษาอื่นมาสร้างภาษาใหม่โดยเพิ่มทุกสิ่งที่เขาเห็นว่าจำเป็นและถูกต้องและลบสิ่งที่ไม่จำเป็นออกไป เมื่อเลือกชื่อสำหรับผลงานของเขา มัตสึโมโตะต้องการให้มันค่อนข้างคล้ายกับ Perl ซึ่งหลายแนวคิดได้ส่งต่อไปยัง Ruby เขามีทางเลือกระหว่างคอรัลกับรูบี้ และบางแหล่งอ้างว่าชื่อสุดท้ายถูกเลือกเนื่องจากดวงชะตา

Ruby ดำเนินกิจการมาเกือบ 20 ปีแล้วและกำลังพัฒนาอย่างแข็งขัน โดยได้รับการสนับสนุนจากชุมชนการเขียนโปรแกรมและแฟน ๆ รวมถึง Matz เอง

ปรัชญาทับทิม

มัตสึโมโตะศึกษาการเขียนโปรแกรมในขณะที่ยังเป็นนักเรียนอยู่ แต่แนวคิดในการสร้างภาษาของตัวเองไม่ได้เข้ามาหาเขาจนกระทั่งหลายปีต่อมา เขาต้องการสร้างภาษา OOP “ของจริง” ซึ่งจะมีไวยากรณ์ที่เรียบง่ายและเข้าใจได้ และเราสามารถพูดได้อย่างปลอดภัยว่าเขาประสบความสำเร็จ ตรงกันข้ามกับภาษาที่เน้นไปที่ความเร็วที่เครื่องจักรสามารถรันโปรแกรมได้ Matz ออกแบบ Ruby เพื่อทำให้งานของมนุษย์ง่ายขึ้น แม้จะหมายถึงการเสียสละทรัพยากรคอมพิวเตอร์เพียงเล็กน้อยก็ตาม

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

Ruby ยึดถือแนวคิดของภาษา Smalltalk ซึ่งประเภทข้อมูลใดๆ ถือเป็นอ็อบเจ็กต์ ซึ่งหมายความว่าสามารถตั้งค่าวิธีการและตัวแปรอ็อบเจ็กต์ได้ นี่คือของเขา ความแตกต่างที่ได้เปรียบจากภาษาเช่น C++

นอกจากนี้ยังควรสังเกตถึงความยืดหยุ่นของภาษาด้วย ตัวอย่างเช่น คุณสามารถกำหนดการดำเนินการเพิ่มเติมใหม่ได้ และใช้สัญลักษณ์ที่สะดวกยิ่งขึ้นสำหรับคุณ ตัวอย่างเช่น ระบุว่าการบวกตัวเลขจะใช้ได้เมื่อคุณป้อนคำว่าบวก (1 บวก 2) แทนที่จะเป็นสัญลักษณ์ (1+2) นั่นคือคุณไม่ได้ปรับให้เข้ากับภาษา แต่ในทางกลับกัน ภาษาจะปรับให้เข้ากับคุณ สิ่งนี้ให้อิสระอย่างมากในแง่ของการแสดงออก เนื่องจากคุณสามารถแทนที่ตัวดำเนินการ วิธีการ ฯลฯ ได้ อย่างไรก็ตาม โปรดจำไว้ว่าการมีอิสระอันยิ่งใหญ่มาพร้อมกับความรับผิดชอบที่ยิ่งใหญ่เช่นกัน (กล่าวคือ อย่าสับสนว่าคุณเปลี่ยนชื่ออะไร ที่ไหน และอย่างไร)

Ruby ใช้ที่ไหน?

ระบบติดตามข้อบกพร่องของ Redmine และเครื่องมือแก้ไขเวกเตอร์เขียนด้วยภาษา Ruby กราฟิก Inkscape- Metasploit รุ่นที่สามด้วย (โครงการวิจัย ความปลอดภัยของข้อมูล) ถูกเขียนใหม่ทั้งหมดใน Ruby ทับทิมถูกนำมาใช้ในหลาย ๆ องค์กรขนาดใหญ่เช่น NASA, Motorola เป็นต้น

Ruby ได้รับความนิยมอย่างมากจาก Ruby on Rails ซึ่งเปิดตัวในปี 2004 Rails ถูกใช้เพื่อสร้างยักษ์ใหญ่เช่น Twitter, GitHub, Kickstarter, Diaspora เป็นต้น การเขียนเว็บไซต์บนเว็บไซต์เป็นเรื่องที่น่าพอใจและสะดวกมาก ตัวอย่างเช่น สำหรับฐานข้อมูล คุณสามารถใช้อินเทอร์เฟซการสืบค้น Active Record ซึ่งช่วยให้คุณสามารถดึงข้อมูลได้โดยไม่ต้องใช้ แบบสอบถาม SQL(ซึ่งนักพัฒนาหลายคนชอบมาก)

ตอนนี้ Ruby หรือ Ruby on Ralis ได้รับชื่อเสียงในด้านภาษาสำหรับสตาร์ทอัพแล้ว การใช้ Rails ทำให้เป็นเรื่องง่ายในการดำเนินโครงการในระยะเวลาอันสั้นซึ่งเป็นต้นฉบับและมีประสิทธิภาพ และนอกเหนือไปจากหน้า Landing Page ของเทมเพลตและร้านค้าออนไลน์ แน่นอนว่าเมื่อโหลดบนไซต์เพิ่มขึ้นและข้อกำหนดเปลี่ยนไป บางโปรเจ็กต์จะถูกเขียนใหม่เป็นภาษาอื่นโดยคำนึงถึงข้อมูลเฉพาะบางประการและเหมาะสำหรับบางกรณีมากกว่า (เช่น Java หรือ Scala) อย่างไรก็ตาม Ruby และ Rails ยังคงพัฒนาต่อไป ดังนั้นจึงไม่จำเป็นต้องเปลี่ยนในเร็วๆ นี้

ความยากในการเรียนรู้ Ruby

Ruby นั้นค่อนข้างง่ายในการเรียนรู้ แต่มีเอกสารประกอบอีกมากมายที่ ภาษาอังกฤษกว่าภาษารัสเซีย ดังนั้นเพื่อการศึกษาเชิงลึกคุณจะต้องอ่านข้อความในต้นฉบับ

นอกจากนี้เป็นที่น่าสังเกตว่าไม่ค่อยมีตำแหน่งว่างสำหรับการเขียนโปรแกรมใน Ruby ล้วนๆ 90 เปอร์เซ็นต์น่าจะเป็นของ Ruby on Rails ปัจจุบันโปรแกรมเมอร์ RoR เป็นหนึ่งในโปรแกรมเมอร์ที่เป็นที่ต้องการมากที่สุดในอุตสาหกรรมไอที ควรเพิ่มสถานะที่สูงของการเป็นชนชั้นสูงและความอิจฉาของโปรแกรมเมอร์คนอื่น ๆ เช่น ผู้เชี่ยวชาญ PHP ที่เขียนเว็บไซต์นามบัตรในราคา 100 รูเบิล ให้กับเงินเดือนที่สูง

ข้อดี/ข้อเสียของทับทิม

Ruby เป็นที่รักสำหรับ:

  • OOP ในรูปแบบ Smalltalk;
  • การสนับสนุนชุมชน (ชุมชนของโปรแกรมเมอร์);
  • ไวยากรณ์ที่ง่ายและสะดวก
  • เงินเดือนมาก
  • การสนับสนุนแนวทางการเขียนโปรแกรมที่มีแนวโน้มล่าสุด
  • จำนวนมากโซลูชั่นสำเร็จรูป

ข้อเสียของ Ruby ได้แก่:

  • การสนับสนุน Windows ไม่ดี เนื่องจาก Ruby ได้รับการพัฒนาสำหรับ Linux เป็นหลักจึงไม่ใช่ ระบบเหมือนยูนิกซ์การทำงานกับ IDE จะยากขึ้นการติดตั้งไลบรารีเพิ่มเติม ฯลฯ
  • ขาดตำแหน่งงานว่างหากไม่ใช่ Ruby on Rails
  • เอกสารเล็ก ๆ น้อย ๆ ในภาษารัสเซีย
  • การใช้หน่วยความจำ

เทคโนโลยีที่เกี่ยวข้อง

รูบี้ออนเรลส์- กรอบการทำงานสำหรับการทำงานบนเว็บ มันถูกสร้างขึ้นโดยทีมโปรแกรมเมอร์ที่นำโดย David H. Hansson ในปี 2004 และต่อมาได้รับการปรับปรุงอย่างมีนัยสำคัญโดยความพยายามของชุมชนนักพัฒนา

RubyGems - ผู้จัดการแพ็คเกจสำหรับ Ruby ทำให้การติดตั้งง่ายขึ้น ห้องสมุดเพิ่มเติม(ฮีม).

แมครูบี้- การใช้ภาษาที่ออกแบบมาเพื่อใช้งาน ระบบแมค OS X จะช่วยให้คุณเขียนแอปพลิเคชัน Mac ได้ง่ายขึ้น
mruby เป็นการใช้งานที่ได้รับการปรับปรุงซึ่ง Yukihiro Matsumoto เองก็กำลังดำเนินการอยู่

  • การแปล

ฉันได้พบ ทับทิมเมื่อไม่นานมานี้ ต้องขอบคุณกรอบการทำงานที่ยอดเยี่ยม รูบี้ออนเรลส์- ฉันไม่คิดว่าตัวเองเป็นผู้เชี่ยวชาญ Ruby แต่ฉันได้อ่าน PickAxe แล้ว เขียนโปรแกรมอรรถประโยชน์หลายอย่างใน Ruby สำหรับการใช้งานส่วนตัว และยังพัฒนาใน Rails ในเวลาว่างอีกด้วย

ปัจจุบัน Ruby เป็นภาษาหลักของฉัน ฉันเริ่มต้นด้วย เทอร์โบปาสคาลที่โรงเรียนเรียน และ ซี++ที่มหาวิทยาลัยได้เขียนวิทยานิพนธ์เรื่อง ชวาและฉันก็เรียนด้วย PHPตั้งแต่เริ่มต้นเพราะฉันต้องการเรียนรู้วิธีสร้างเว็บไซต์อย่างรวดเร็วและง่ายดาย ฉันคิดว่าการเขียนโค้ดสำหรับฉันถือเป็นความบันเทิงรูปแบบหนึ่ง และเป็นเพียงสิ่งอื่นเท่านั้น ตอนแรกก็คิดว่าจะเรียนภาษาอะไร หลามหรือทับทิม ฉันเลือกอันที่สองเพราะฉันไม่ต้องการให้การเยื้องที่ไม่ถูกต้องทำให้เกิดปัญหาในโค้ดของฉัน

มีบทแนะนำ บทช่วยสอน บทความ และบทความมากมายที่เขียนโดยกูรูเกี่ยวกับวิธีใช้ Ruby ให้เกิดประโยชน์สูงสุด บทความนี้ไม่มีอะไรเช่นนั้น

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

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

สรุปคุณได้รับคำเตือนแล้ว

ทำไมต้องเรียนรูบี้?

ทับทิมยืมสิ่งที่ดีที่สุดจากภาษาโปรแกรมอื่น ๆ จาก คุยเล็กๆ น้อยๆถึง ชวา, จาก ภาษาเพิร์ลถึง หลามนี่คือสิ่งที่เกิดขึ้นกับฉัน แต่สำหรับฉันมันไม่สำคัญนัก Ruby เป็นภาษาที่ยอดเยี่ยมและสง่างาม และเช่นเดียวกับหลายๆ อย่างนี้ มันสามารถครอบงำจิตใจของคุณและทำลายจิตวิญญาณของคุณได้
  • ข้อยกเว้น เชื่อหรือไม่ว่าข้อยกเว้นถือเป็นหนึ่งในสิ่งที่สำคัญที่สุดในการพัฒนาโปรแกรมทุกประเภท โปรแกรมเมอร์ที่ PHP4ไม่รู้อะไรเกี่ยวกับพวกเขาและจะบอกคุณว่าคุณสามารถพิมพ์ (ข้อผิดพลาด) ไปที่หน้าจอหรือใช้คลาส "super-duper" ของตัวเองเพื่อจัดการกับข้อผิดพลาด โชคดีสำหรับพวกเราทุกคน ทับทิมมาพร้อมกับ ลอง/จับ(หรือดีกว่ายัง เริ่ม/ช่วยเหลือ) บล็อกและชุดของข้อยกเว้นที่กำหนดไว้ล่วงหน้าและขยายได้ เพื่อการจัดการข้อผิดพลาดที่ถูกต้อง
  • เนมสเปซ: โมดูล ทับทิมทำให้การใช้เนมสเปซเป็นเรื่องง่าย สิ่งนี้น่าจะดึงดูดผู้ที่ชื่นชอบ ซี++และ ชวา.
  • ความเชื่อประจำในตัว: สำหรับผู้เชี่ยวชาญทุกคน ภาษาเพิร์ลคุณสามารถใส่บางสิ่งเข้าไปได้ // - ต่อไปนี้เป็นคุณลักษณะพื้นฐานที่คุณสามารถดูได้ในภาษาอื่นตามหลักการ: =~ ).
  • ตัวดำเนินการโอเวอร์โหลด: ทับทิมช่วยให้คุณสามารถกำหนดตัวดำเนินการเช่น +, -, > ฯลฯ สำหรับชั้นเรียนของคุณ
  • แพ็คเกจ: เรียกว่า " อัญมณี"(ก้อนกรวด) พวกเขาสมชื่อจริงๆ นอกจากนี้ - พวกมันทำงานด้วย แพ็คเกจรองรับการขึ้นต่อกัน และยังสามารถเป็นแบบข้ามแพลตฟอร์มหรือขึ้นอยู่กับแพลตฟอร์มก็ได้
  • คอนโซลแบบโต้ตอบ: สามารถใช้เพื่อทดสอบโค้ดแบบโต้ตอบได้ เช่น คอนโซล หลาม

2. คุณจะรักสิ่งเล็กๆ น้อยๆ

ทับทิมสง่างาม ทำไม เพราะเขาไม่ได้พยายามสร้างโค้ดให้กระชับจนรบกวนการอ่านและทำความเข้าใจ มีเคล็ดลับบางประการที่อาจช่วยคุณได้:
  • คุณสามารถใช้โอเปอเรเตอร์ทั้งสอง ถ้าและ เว้นเสียแต่ว่าในการแสดงออกตามเงื่อนไข แน่นอนคุณสามารถใช้ ถ้าที่มีความหมายตรงข้ามกับสำนวนแต่ใช้ เว้นเสียแต่ว่าและกลายเป็นนิพจน์ทั่วไปที่พร้อมสำหรับการเปรียบเทียบ (สำหรับสิ่งนี้เราใช้ตัวดำเนินการ
  • คุณสามารถใช้เครื่องหมายคำถามและเครื่องหมายอัศเจรีย์ที่ส่วนท้ายของชื่อเมธอดได้ ข้อตกลงนี้ไม่ได้บังคับใช้ แต่เป็นสัญญาณ " ? " ถูกใช้เมื่อเมธอดส่งคืน จริงหรือ เท็จขณะที่ป้าย " ! มักจะส่งผลให้เกิดข้อผิดพลาดน้อยลง นอกจากนี้ คุณสามารถใช้ตัวดำเนินการทั้งสองเป็นตัวแก้ไขเงื่อนไขได้ โดยวางไว้หลังนิพจน์แทนที่จะวางไว้ข้างหน้า: order.new ยกเว้นว่า order.exists
  • คุณสามารถใช้นามแฝง ( นามแฝง) สำหรับวิธีการที่สร้างไว้แล้ว ด้วยวิธีนี้คุณจะได้รับวิธีการต่างๆ มีอยู่และ มีอยู่จริงไม่มีค่าใช้จ่ายและไม่มีการทำซ้ำ
  • คุณสามารถใช้คำสั่ง attr_reader, attr_writerหรือ attr_accessor" ใช้สำหรับวิธีการที่ทำสิ่งที่ไม่สามารถย้อนกลับได้ เช่น การลบบันทึกออกจากฐานข้อมูล การแยกอักขระตัวสุดท้ายออกจากสตริง เป็นต้น ทะเยอทะยาน / ผู้ตั้งค่าสำหรับสมาชิกชั้นเรียน
  • สำหรับการสร้างอัตโนมัติ $ " ชื่อตัวแปรอ็อบเจ็กต์ขึ้นต้นด้วย " @ " และชื่อตัวแปรคลาสด้วย " @@ " อืม ฯลฯ
  • เมื่อเรียกเมธอด คุณไม่จำเป็นต้องเขียนวงเล็บ คุณสามารถเขียน write File.open("/home/h3rald/test.txt") หรือเพียงแค่ File.open "/home/h3rald/test.txt" ซึ่งสะดวกเป็นพิเศษกับวิธีการที่ไม่มีข้อโต้แย้ง

3.ไม่จำเป็นต้องใช้อัฒภาคอีกต่อไป

และแบบแผนการตั้งชื่อเพิ่มเติม: ค่าคงที่ คลาสและโมดูลเขียนด้วยอักษรตัวใหญ่ วิธีการและสมาชิกของคลาสจะต้องขึ้นต้นด้วยอักษรตัวพิมพ์เล็ก ตัวแปรโกลบอลตั้งชื่อโดยขึ้นต้นด้วย “ เข้า"และคุณทำเสร็จแล้ว ใน ทับทิมเช่นเดียวกับใน หลามบรรทัดใหม่จะแยกคำสั่ง คุณจึงไม่จำเป็นต้องใช้อัฒภาคตลอดเวลา น่าเสียดายนี่หมายความว่าชอบแฟนๆ ซี++เราจะไม่สามารถเขียนโปรแกรมในบรรทัดเดียวได้ แต่นั่นก็ไม่ได้แย่ขนาดนั้นใช่ไหม?

4.ทุกสิ่งล้วนเป็นวัตถุอย่างที่ควรจะเป็น

ตอนที่ฉันกำลังเรียนอยู่ ชวาฉันก็บอกแล้วว่าทุกสิ่งเป็นวัตถุ
- “วัตถุ 14 และ 374346.678 คืออะไร”
- “ไม่ โง่เขลา นี่มันตัวเลข!”

ใน ทับทิมคุณต้องการเขียนคำสั่งถัดไปหรือไม่? เดี๋ยวไปขึ้นบรรทัดใหม่ คลิก "
"YOU SHOULDN"T ALWAYS USE CAPITALS".lowcase # จะส่งกลับ "คุณไม่ควรใช้ตัวพิมพ์ใหญ่เสมอไป" แทนที่จะเป็นแบบนี้:
#โค้ด PHP
strtolower ("คุณควรใช้ตัวพิมพ์ใหญ่ทุกครั้ง")
ซึ่งจะช่วยประหยัดเวลา บันทึกวงเล็บ และมีเหตุผลมากขึ้น

5. ทุกสิ่งมีความสำคัญ

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

6.คุณสามารถเปลี่ยนสภาพแวดล้อมด้วยวิธีใดก็ได้ที่มี

ครั้งแรกที่ฉันเห็นสิ่งนี้ฉันรู้สึกประทับใจ ลองนึกภาพสถานการณ์ทั่วไป: คุณเริ่มใช้คลาสของระบบหรือคลาสที่เขียนโดยคนอื่นและตระหนักว่าคุณต้องการวิธีการเพิ่มเติมในนั้น มีหลายวิธีในการแก้ปัญหานี้ในภาษาโปรแกรมทั่วไป:
  • คุณเปลี่ยนซอร์สโค้ดของชั้นเรียนได้หากคุณมีสิทธิ์เข้าถึง แต่โดยปกติแล้วนี่เป็นความคิดที่ไม่ดี อย่าทำ
  • คุณสืบทอดคลาสของคุณจากสิ่งนั้นและเพิ่มวิธีการใหม่ลงไป โดยปกติแล้วนี่เป็นความคิดที่ดี แต่วิธีหนึ่งสามารถทำให้ดูเหมือนมอนโรได้เล็กน้อย นอกจากนี้ คุณจะต้องปรับแต่งโค้ดอื่นๆ ของคุณเล็กน้อยตามนั้น
  • คุณสามารถสร้างวิธีการนอกชั้นเรียนได้ สิ่งนี้จะใช้ได้ แต่จะไม่หรูหรามากนักและยังขัดต่ออีกด้วย อุ๊ย.
ใน ทับทิมคุณสามารถเพิ่มวิธีการให้กับคลาสดั้งเดิมโดยไม่ต้องแก้ไขซอร์สโค้ด ซึ่งสามารถทำได้แม้สำหรับคลาสระบบ
เราต้องการเพิ่มวิธีการแปลงค่าจากเมตรเป็นฟุตหรือไม่? เรามาขยายคลาสกันดีกว่า ตัวเลขตามที่แสดง:
ตัวเลขคลาส
เท้าแน่นอน
ตัวเอง*3.2808399
จบ
จบ

จากนี้ไปตัวเลขของเราทั้งหมดจะมีวิธีการใหม่ที่สามารถใช้ได้เหมือนอย่างอื่นๆ:
5.feet # จะกลับมา 16.4041995
ชั้นเรียนใน ทับทิมไม่เคยปิดและสามารถขยายได้ตลอดเวลาจากทุกที่ แน่นอนว่าโอกาสนี้จะต้องใช้ด้วยความระมัดระวัง!

7. คุณไม่สามารถรับยูนิคอร์นจากนกได้ แต่คุณสามารถรับลาได้หากต้องการ

ฉันจำได้ชัดเจนว่าครูของฉันเป็นอย่างไร ซี++ใช้สัตว์เพื่อแสดงแนวคิดพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ - คลาสและการสืบทอด มีบางอย่างลึกลับเมื่อเธออธิบายมรดกหลายอย่างให้เราฟัง โดยสร้าง "เพกาซัส" จาก "นก" และ "ม้า" สิ่งที่บ้า ทับทิมไม่อนุญาตให้มีการสืบทอดหลายรายการ ดูเหมือนเป็นกระแสและสุดท้ายก็เป็นเรื่องของรสนิยม ฉันไม่ชอบการได้รับมรดกหลายอย่างเพราะอาจทำให้เกิดสิ่งที่คาดเดาไม่ได้ได้ อย่างไรก็ตาม คุณสามารถสร้างสิ่งที่คล้ายกันโดยใช้โมดูลได้ ทับทิมเพื่อให้ตัวแปรและวิธีการของโมดูลหนึ่งถูกเพิ่มไปยังคลาสบางคลาสหากรวมโมดูลไว้ด้วย

8. XML ไม่จำเป็นจริงๆ

XML- ภาษามาร์กอัปที่สวยงามและใช้กันทั่วไปที่สามารถประมวลผลได้กับภาษาโปรแกรมทั้งหมดและใช้งานได้ทุกที่ น่าเสียดายที่การเขียนยุ่งยากเกินไป แยกวิเคราะห์ยาก และบอกตามตรงว่าอ่านยากในกรณีส่วนใหญ่ แต่ลองดูส่วนต่อไปนี้:
regexp: !ruby/regexp /a-zA-Z/
หมายเลข: 4.
สตริง: สตริง

มันง่ายกว่าและง่ายกว่าแน่นอน XML, ความจริง? ยินดีต้อนรับสู่ YAMLซึ่งเป็นภาษามาร์กอัปที่ชื่นชอบ (แต่ไม่ใช่เพียงภาษาเดียว) ทับทิมซึ่งสามารถนำเสนอวัตถุใดๆ ในรูปแบบที่เรียบง่าย กระชับ แต่ครบถ้วนได้
Ruby มีความสามารถในการทำงานด้วย XMLแต่เรียบง่าย YAMLติดสินบนนักพัฒนาหลายคนที่ตอนนี้ใช้มันแทน XMLเช่น สำหรับไฟล์คอนฟิกูเรชัน (นี่คือสิ่งที่เราทำในนั้น) ราง- แฟรกเมนต์ที่นำเสนอข้างต้นได้มาโดยการรันโค้ดแฟรกเมนต์ต่อไปนี้:
("string" => "a string", "number" => 4.7, "regexp" => /a-zA-Z/).to_yaml
วิธี to_yamlกำหนดไว้สำหรับชั้นเรียน วัตถุซึ่งเป็นพาเรนต์ของออบเจ็กต์อื่นๆ ทั้งหมด ดังนั้นออบเจ็กต์ทั้งหมดจึงสามารถเข้าถึงได้ ทับทิม- สิ่งนี้ทำให้คุณสามารถแปลงวัตถุเป็น YAMLและในทางกลับกัน นักพัฒนาก็โปร่งใสอย่างแน่นอน เจ๋งใช่มั้ย?

9.Lambda เป็นมากกว่าตัวอักษรกรีก

ทับทิมยืมเวทมนตร์บางอย่างมาจาก เสียงกระเพื่อมและ ภาษาเพิร์ลเข้าไปในวัตถุและบล็อก โปรค. โปรคคือ "บล็อกของรหัสที่เกี่ยวข้องกับชุดของตัวแปรท้องถิ่น เมื่อเชื่อมโยงแล้ว พวกเขาสามารถเรียกได้ในบริบทที่แตกต่างกันและยังคงเข้าถึงตัวแปรเหล่านั้นได้" ลองดูสิ่งต่อไปนี้:
def gen_times (ปัจจัย)
กลับ Proc.new (|n| n*ปัจจัย)
จบ

Times3 = gen_times(3)
times5 = gen_times(5)

Times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60

สามารถใช้คำหลักได้ แลมบ์ดาแทน Proc.ใหม่ซึ่งจะไม่ส่งผลต่อผลลัพธ์ นี่อาจดูคุ้นเคยสำหรับผู้รู้ ภาษาเพิร์ลและ หลาม(หรือ เสียงกระเพื่อม- ซึ่งสามารถทำได้แม้กระทั่งบน PHPแต่มีน้อยคนนักที่จะใช้ประโยชน์จากโอกาสนี้
นอกจากนี้ใน ทับทิมบล็อกประเภท "ไม่ได้สร้าง" มีการใช้กันอย่างแพร่หลาย โปรค" ตัวอย่างเช่น เพื่อวนซ้ำเนื้อหาของออบเจ็กต์และรันโค้ดบางอย่าง เช่น วิธีการ แต่ละใช้ได้สำหรับชั้นเรียน อาร์เรย์:
.each (|c| ใส่ c*2) #=> จะส่งคืนแต่ละองค์ประกอบคูณด้วย 2
หากรหัสไม่พอดีกับบรรทัดเดียว ขอแนะนำให้ใช้โครงสร้าง ทำ...จบแทนที่จะใช้วงเล็บ แฟนๆ ทับทิมไม่ชอบวงเล็บ

10. คุณสามารถใช้ Rails ได้

สุดท้ายแต่ไม่ท้ายสุด... ใช้ได้ตลอด รางสำหรับการพัฒนาเว็บแอพพลิเคชั่น การพัฒนาจะไม่ง่ายเหมือนด้วย PHP, แต่ รางถูกเขียนใน ทับทิมเนื่องจากมีคุณสมบัติที่ไม่พบในภาษาอื่น

บทสรุป

หมดเวลาแล้ว บางทีคุณอาจกำลังคิดที่จะดูอยู่แล้ว ทับทิมบางทีคุณอาจได้ลองแล้ว หรือบางทีคุณอาจเพิกเฉยต่อมัน ไม่ว่าครั้งต่อไปที่คุณดูโค้ดของคุณและมันดูน่ากลัวและขนาดของมันดูน่ากลัว อย่าตำหนิฉันเลย

เรียนผู้อ่าน - อย่าลืมว่า Habrauser แปลข้อความเพียงอย่างเดียว (ใช่ใช่) เขาไม่จำเป็นที่จะต้องแสดงการกล่าวอ้างทางอุดมการณ์

Ruby เป็นหนึ่งในภาษาการเขียนโปรแกรมที่อายุน้อยที่สุด เป็นชื่อของอัญมณีทับทิม (โดยการเปรียบเทียบกับภาษาโปรแกรม Perl อีกภาษาหนึ่งที่ใช้กันอย่างแพร่หลาย - ไข่มุก) ต่อไปนี้คือคำอธิบายของ Ruby โดยผู้สร้างซึ่งเป็นโปรแกรมเมอร์ชาวญี่ปุ่น ยูกิฮิโระ มัตสึโมโตะ: "มันเป็นภาษาเชิงวัตถุโอเพ่นซอร์สที่ทรงพลังและไดนามิกซึ่งฉันเริ่มพัฒนาในปี 1993 Ruby ทำงานบนหลายแพลตฟอร์ม รวมถึง Linux และการใช้งาน Unix, MS มากมาย -DOS, Windows 9x/2000/NT, BeOS และ MacOS เป้าหมายหลักของ Ruby คือประสิทธิภาพในการพัฒนาโปรแกรม และผู้ใช้จะพบว่าการเขียนโปรแกรมมีประสิทธิภาพและสนุกสนานอีกด้วย"

ในญี่ปุ่น Ruby ได้เข้ามาแทนที่ภาษาที่รู้จักกันดีเช่น Python และ Perl อย่างมาก (และหนังสือ "Ruby the Object-Oriented Scripting Language" ก็กลายเป็นหนังสือขายดี) และเริ่มเผยแพร่ไปทั่วโลก สำหรับ ปีที่แล้วมีหนังสือภาษาอังกฤษสามเล่มที่อุทิศให้กับ Ruby (น่าเสียดายที่ยังไม่มีคำแปลภาษารัสเซีย) ภาษานี้มีโอกาสสูงมากที่จะได้รับความนิยมอย่างมาก เพราะท้ายที่สุดแล้ว ภาษานี้ได้ซึมซับข้อดีของภาษาอื่นโดยคำนึงถึงข้อบกพร่องของภาษาเหล่านั้นด้วย

Ruby รวมอยู่ในการกระจายมาตรฐานของ Linux OS (เริ่มจากเวอร์ชัน 7.2) และผู้ใช้ MS Windows ควรแนะนำให้รู้จักครั้งแรก รุ่นที่ล้าสมัยซึ่งรวมถึงล่ามภาษาและห้องสมุด คู่มือผู้ใช้ คำถามที่พบบ่อย (คำตอบสำหรับคำถามที่พบบ่อย) และตัวอย่างอีกมากมาย Ruby ใช้งานได้ฟรี ดังนั้นคุณจึงไม่ต้องกังวลเรื่องต้นทุนหรือข้อจำกัดในการใช้งาน

ภาษานี้เป็นหนึ่งในภาษาที่ดีที่สุดอย่างไม่ต้องสงสัยในฐานะภาษาการเขียนโปรแกรมแรกที่นักเรียนและเด็กนักเรียนศึกษา วงจรการพัฒนาที่รวดเร็ว (แก้ไข - รัน - แก้ไข) การใช้ล่าม ลักษณะดั้งเดิมของภาษาเชิงวัตถุ ตัวแปรที่ไม่ได้พิมพ์ซึ่งไม่จำเป็นต้องประกาศ - ทั้งหมดนี้ช่วยให้นักเรียนมุ่งความสนใจไปที่ หลักการทั่วไปการเขียนโปรแกรม ในการนำเสนอต่อไป เราจะเน้นไปที่การทำงานบน Linux OS การใช้ Ruby ในโปรแกรมอื่นๆ ระบบปฏิบัติการ ah แทบไม่ต่างกันเลย และผลการดำเนินการไม่ได้ขึ้นอยู่กับระบบปฏิบัติการที่ใช้

ขั้นแรก เรามาตรวจสอบว่ามีการติดตั้งล่าม Ruby บนระบบหรือไม่ ในหน้าต่างเชลล์ ให้ป้อนคำสั่ง ruby ​​​​-v (สวิตช์นี้ต้องการให้แสดงเวอร์ชันภาษา) หากข้อความต่อไปนี้ปรากฏขึ้น แสดงว่าติดตั้ง Ruby แล้ว (เวอร์ชัน วันที่ และแพลตฟอร์มอาจแตกต่างกัน):

ทับทิม 1.6.4 (2001-06-04)

ใส่ "สวัสดีชาวโลก!"

เพื่อรันโปรแกรมนี้ใน บรรทัดคำสั่งเข้า

อันเป็นผลมาจากการรันโปรแกรมวลีที่ต้องการจะถูกพิมพ์ในหน้าต่างคำสั่ง

วิธีที่สองในการรันโปรแกรมไม่สามารถใช้ได้กับผู้ใช้ทุกระบบปฏิบัติการที่ Ruby ทำงาน ผู้ใช้ Linux OS ควรวางโปรแกรมไว้ที่จุดเริ่มต้นของไฟล์พร้อมกับข้อความของโปรแกรม บรรทัดถัดไป:

#!/usr/bin/env ทับทิม

เธอ จำเป็นต้องเริ่มจากตำแหน่งแรก จากนั้นคุณจะต้องเปลี่ยนสิทธิ์การเข้าถึงไฟล์โปรแกรมทำให้สามารถเรียกใช้งานได้: chmod +x hello.rb ตอนนี้เพื่อรันโปรแกรมเพียงป้อนคำสั่ง

เพื่อให้ผู้ที่อ่านโปรแกรมเข้าใจได้มากขึ้น จึงใส่ความคิดเห็นเข้าไป ความคิดเห็นบรรทัดเดียวเริ่มต้นด้วยอักขระ # และดำเนินต่อไปจนจบบรรทัด ความคิดเห็นหลายบรรทัดล้อมรอบด้วย "วงเล็บ" พิเศษ - ทุกอย่างที่อยู่ระหว่างบรรทัด =begin และ =end ถือเป็นความคิดเห็น ตัวอย่างเช่น,

#!/usr/bin/env ruby ​​​​=begin นี่คือความคิดเห็น =end ทำให้ "Hello, World!" #นี่คือความคิดเห็นเช่นกัน

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

ตัวอย่าง

#!/usr/bin/env ruby ​​​​# คำสั่งสิ้นสุดที่ท้ายบรรทัดใส่ "Hello, World!" # คำแนะนำหลายรายการในบรรทัดเดียวทำให้ "นี่คือการทดสอบ"; ทำให้ "สาธิตวิธีการทำงานของ Ruby" # ข้อความที่ยังไม่เสร็จ # ต่อในบรรทัดถัดไปทำให้ "การเขียนโปรแกรมใน Ruby คือ " + "ประสบการณ์ที่สนุกสนาน" # คำชี้แจงที่แบ่งออกเป็นหลายบรรทัดทำให้ \ "และเราจะเรียนรู้เรื่องนี้อย่างแน่นอน!"

คำสั่ง (คำสั่ง) ส่วนใหญ่มักจะเป็นลำดับของคำสั่งที่ใช้กับนิพจน์ต่างๆ และ (อาจ) การเรียกใช้ฟังก์ชัน