ภาษาโปรแกรม RUBY Ruby สำหรับผู้เริ่มต้น: ทำไมภาษานี้จึงน่าสนใจ และจะเรียนรู้ได้อย่างไรอย่างมีประสิทธิภาพ

ภาษา การเขียนโปรแกรมทับทิม เป็นภาษาการเขียนโปรแกรมเชิงวัตถุล้วน แต่เดิมออกแบบมาสำหรับการเขียนสคริปต์ มันรวมไวยากรณ์ที่ได้รับแรงบันดาลใจจากคุณสมบัติเชิงวัตถุของ Ada และ Perl และ Smalltalk และยังมี คุณสมบัติทั่วไปด้วย Python, Lisp และยูทิลิตีบรรทัดคำสั่งจะเป็นประโยชน์เมื่อเรียนรู้พื้นฐานของการเขียนโปรแกรม
ภาษาโปรแกรม Ruby ในปัจจุบันมีการนำ Ruby reatreter ไปใช้เพียงครั้งเดียว แม้ว่าจะมีความพยายามในการใช้อินเทอร์เฟซ Ruby (เรียกว่า "Cardinal") สำหรับ เครื่องเสมือนนกแก้ว.
ภาษาโปรแกรม Ruby มีมากมาย ฟังก์ชั่นที่มีประโยชน์- Ruby ยังรองรับการโอเวอร์โหลดของตัวดำเนินการและการจัดการข้อยกเว้นอีกด้วย ปัจจุบันภาษาการเขียนโปรแกรม Ruby ยังขาดการสนับสนุน Unicode Ruby มีตัววนซ้ำ (ซึ่งชวนให้นึกถึง CLU และ Sather) Ruby รองรับการแสดงฟังก์ชันนามธรรม (เช่นเดียวกับ Smalltalk และอื่นๆ อีกมากมาย ภาษาที่ใช้งานได้การเขียนโปรแกรมสำหรับผู้เริ่มต้น) Ruby มีการสนับสนุนวากยสัมพันธ์ในตัวสำหรับการทำงานปกติ นิพจน์เพิร์ลในระดับภาษา (ไม่ใช่แค่ในไลบรารี เช่นเดียวกับใน Python และภาษาอื่นๆ อีกมากมาย) รูบี้รองรับ คอลเลกชันอัตโนมัติขยะและ ไลบรารีแบบไดนามิกกำลังโหลด/เชื่อมต่อโมดูล (ขึ้นอยู่กับสถาปัตยกรรม) ไมโครซอฟต์ วินโดวส์- Ruby ได้รับการย้ายไปยังหลายแพลตฟอร์ม รวมถึง Unix, Microsoft Windows, DOS, Mac OS X, OS/2, Amiga และอีกมากมาย
Ruby เป็นแบบเชิงวัตถุล้วนๆ: ข้อมูลอ็อบเจ็กต์ทุกบิต รวมถึงประเภทที่ถูกกำหนดให้เป็น "ดั้งเดิม" ในภาษาอื่น ทุกฟังก์ชั่นเป็นวิธีการ มันคล้ายกับ Smalltalk แต่โดยพื้นฐานแล้วจะแตกต่างจาก Java และ Python ชื่อค่าแต่ละค่า (ชื่อตัวแปร) ในโปรแกรม Ruby ระบุการอ้างอิงถึงออบเจ็กต์ ไม่ใช่ตัวออบเจ็กต์เอง Ruby รองรับการสืบทอดด้วยวิธีการจัดส่งแบบไดนามิก, Mixins และ Singleton Ruby ไม่รองรับการสืบทอดหลายรายการ แต่คลาสสามารถนำเข้าโมดูลได้ แม้ว่าคุณสามารถใช้ไวยากรณ์ขั้นตอนใน Ruby ได้ แต่ทุกอย่างใน Ruby จะเป็นอ็อบเจ็กต์ในความหมายของ Smalltalk ไม่ใช่ Perl หรือ การเขียนโปรแกรมหลามสำหรับหุ่น
ภาษานี้สร้างโดย ยูกิฮิโระ มัตสึโมโตะ (หรือที่รู้จักกันในชื่อ "Matz") เมื่อวันที่ 24 กุมภาพันธ์ พ.ศ. 2536 ปัจจุบัน เวอร์ชันเสถียร 1.8.0. โปรดทราบว่าชื่อนี้ไม่ใช่ตัวย่อ แต่จริงๆ แล้วเป็นการเล่นคำเช่น Perl ตามที่ผู้เขียนกล่าวไว้ Ruby ได้รับการออกแบบมาสำหรับ Principle of Least Surprise (POLS) ซึ่งหมายความว่าภาษาควรปราศจากข้อผิดพลาดและความไม่สอดคล้องกันที่รบกวนภาษาอื่น
จากคำถามที่พบบ่อยของ Ruby: ถ้าคุณชอบ Perl คุณจะรู้สึกดีมากที่ได้ใช้ Ruby เนื่องจากมีไวยากรณ์ของมัน ถ้าคุณชอบ Smalltalk คุณจะชอบ Ruby และความหมายของมัน ถ้าคุณชอบ Python คุณอาจจะหรืออาจจะไม่รู้สึกถึงความแตกต่างอย่างมากในปรัชญาการออกแบบระหว่าง Python และ Ruby/Perl
Ruby เป็นบริการฟรีและโอเพ่นซอร์ส ใบอนุญาต GPLหรือใบอนุญาตทางศิลปะ เช่น Perl

ตัวอย่าง
นี่คือตัวอย่างโค้ด Ruby:

>> -199.abs # หมายเลข -199 เป็นวัตถุ ต้องใช้วิธี ABS => 199 >> "Ruby is cool".length # วิธีการที่เรียกว่า วัตถุสตริง– ความยาวสตริง => 13 >> "Rick".index("c") => 2 >> "John".swapcase => "jOHN" >> #Arrays ?> .sort => >> .sort.reverse = > # บล็อกโค้ดต่อไปนี้จะถูกดำเนินการ 10 ครั้ง 10.times ( # แทนที่ " " ด้วย "," และเก็บไว้ใน string1 string1 = "Hello world".gsub(" ", ",") # append "!" ไปที่ ตัวแปร "string1" string1 += "!" # ตัวแปรพิมพ์ "string1" ตามด้วยบรรทัดใหม่ใส่ string1 )

จะเป็นผู้เชี่ยวชาญด้านการพัฒนาเว็บไซต์และเริ่มสร้างรายได้ได้อย่างไร หลักสูตรวิดีโอราคาไม่แพงพร้อมคำแนะนำเบื้องต้น

  • การแปล

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

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

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

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

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

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

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

ทับทิม 1. คุณได้รับความสะดวกสบาย (ความสุข) โดยไม่มีลูกเล่น ยืมสิ่งที่ดีที่สุดจากภาษาโปรแกรมอื่น ๆ จากคุยเล็กๆ น้อยๆ ชวาถึง , จากคุยเล็กๆ น้อยๆ หลามภาษาเพิร์ล - ที่นี่ความสามารถพื้นฐาน
  • ซึ่งโดยหลักการแล้วคุณสามารถดูได้ในภาษาอื่น: ข้อยกเว้น เชื่อหรือไม่ว่าข้อยกเว้นถือเป็นหนึ่งในสิ่งที่สำคัญที่สุดในการพัฒนาโปรแกรมทุกประเภท โปรแกรมเมอร์ที่ 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 - จะอธิบายวิธีเติมเต็มความปรารถนาของคุณ ชาวญี่ปุ่นเป็นคนที่ภาคภูมิใจมาก เป็นลูกหลานของซามูไร ซึ่งนิสัยเกี่ยวกับศักดินายังคงคุกรุ่นอยู่

Ruby เป็นภาษาการเขียนโปรแกรมแบบตีความ- ฉันบอกไปแล้วว่าถ้าคุณบอกฮาร์ดแวร์โง่ๆ ชิ้นนี้ 5. ครั้ง (ใส่คำว่า "สวัสดี!") มันจะไม่เข้าใจสิ่งนี้หากไม่มีล่าม ภาษาโปรแกรมที่ต้องใช้ล่ามที่อ่านสคริปต์ที่เขียนในภาษานั้นเรียกว่าภาษาที่แปลแล้ว ตัวอย่างของภาษาดังกล่าว ได้แก่ (php, python, perl, bash และภาษาที่ยอดเยี่ยมของเราเอง!)
ภาษาที่โค้ดถูกแปลงเป็นโปรแกรมเรียกว่าคอมไพล์ ตัวอย่างของภาษาดังกล่าว ได้แก่ (C/C++, C#, GO)

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

ความเร็วเป็นสิ่งสำคัญ แต่ก็ไม่ใช่สิ่งที่สำคัญที่สุด Ruby ช้ากว่า C มากและช้ากว่า Asembler ด้วยซ้ำ แต่สิ่งนี้ไม่ได้ป้องกัน Ruby จากการดึงดูดแฟนใหม่ ๆ มากขึ้นเรื่อย ๆ ที่เผาภาพลักษณ์ของเทพเจ้าเก่าของพวกเขา ทำลายเพชร และหันไปสู่ศาสนาใหม่ที่สดใสของการเขียนโปรแกรม Ruby
Ruby ช่วยให้คุณสามารถเขียนแอปพลิเคชันได้อย่างรวดเร็วจนคุณต้องล้มละลายโดยจ้างทีมโปรแกรมเมอร์ภาษา C พิเศษที่จะเขียนโปรแกรมที่ดำเนินการแบบเดียวกัน นอกจากนี้ หากต้องคำนวณการเงินก่อนพรุ่งนี้ จะคำนวนภายใน 10 วินาที หรือ 0.1 วินาที ต่างกันไหม?
แม้ว่าประสิทธิภาพจะมีความสำคัญต่อคุณมาก แต่ Ruby ก็มีไดรเวอร์จำนวนมากสำหรับไลบรารีที่เขียนด้วยภาษา C สำหรับฐานข้อมูลและซอฟต์แวร์อื่น ๆ ดังนั้นคุณจึงมีความเร็วเท่ากับ C ในขณะที่เขียนโค้ดใน Ruby
Ruby ยังช่วยให้คุณสามารถเขียนส่วนขยายในภาษา C สำหรับส่วนที่สำคัญของโค้ด นั่นคือส่วนที่ประสิทธิภาพมีความสำคัญอย่างยิ่ง (ทั้งหมดนี้เป็นเพราะ Ruby เองเขียนด้วยภาษา C ไม่ใช่ทั้งหมด แต่เป็นส่วนใหญ่) คุณควรทำความคุ้นเคยกับความจริงที่ว่าไม่ ภาษาสากลการเขียนโปรแกรมเมื่อรู้ว่าสิ่งใดคุณไม่จำเป็นต้องรู้อะไรอีก

รูบี้มีหลายหน้าแต่ทุกหน้าเขาก็สวย มีการใช้งาน Ruby มาตรฐานที่เรียกว่า Matz Ruby Interpreter (MRI) เริ่มต้นจากสาขา 1.9 และต่อไปยังสาขาปัจจุบัน จะใช้ล่าม YARV ที่แตกต่างกัน
นอกจากนี้ยังมี Ruby สำหรับ Java virtual machine (JRuby) ซึ่งช่วยให้คุณใช้ไลบรารี่ทั้งหมดที่เขียนด้วย Java และภาษาอื่น ๆ ที่ทำงานบน JVM เช่น Scala หรือ Clojure
มี MacRuby - เวอร์ชันสำหรับ Mac OS X
มี Ruby Enterprise Edition (Ruby EE หรือ REE) - นี่คือ MRI ที่ออกแบบใหม่เล็กน้อยซึ่งช่วยให้โปรแกรม Ruby กินน้อยลง แรม.
นอกจากนี้ยังมีการพัฒนาที่เป็นกรรมสิทธิ์หลายอย่างที่ช่วยให้คุณสามารถแทนที่ส่วนประกอบ Ruby ดั้งเดิมด้วยองค์ประกอบที่มีฟังก์ชั่นครบครันและเร็วขึ้นอย่างไรก็ตามเนื่องจากการพัฒนาดังกล่าวมักจะได้รับการทดสอบไม่ดีในสภาพการต่อสู้และไม่ได้ใช้กันอย่างแพร่หลาย ฉันจะไม่แนะนำให้คุณ เพื่อใช้มัน ใช้ รุ่นอย่างเป็นทางการทับทิม.
นอกเหนือจากการใช้งาน Ruby ที่อธิบายไว้แล้ว ยังมีอีกด้วย จำนวนมากเช่น Rubinius และ Ruby MagLev เป็นต้น ฉันไม่รู้ว่าลักษณะเฉพาะของพวกเขาคืออะไร แต่ฉันจะเข้าใจและเผยแพร่ในหนึ่งในนั้นอย่างแน่นอน รุ่นถัดไปหนังสือเรียน

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

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

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

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

Ruby เป็นภาษาโปรแกรมอย่างง่าย Ruby เป็นภาษาโปรแกรมที่เข้าใจง่าย พัฒนาง่าย แต่ไม่ง่ายที่จะเรียนรู้ :) แน่นอนคุณสามารถเขียนแอปพลิเคชันที่แสดงวลีคลาสสิก "สวัสดีชาวโลก" ในวินาทีแรกของการรู้จักกัน แต่นี่คือ: ใส่ "คำว่าสวัสดี!" อย่างไรก็ตามเพื่อให้บรรลุความเชี่ยวชาญที่แท้จริงคุณควรใช้เวลาหลายปี !
คุณไม่สามารถเปรียบเทียบ Ruby กับ PHP ได้ มันเหมือนกับการเปรียบเทียบควินัวที่หรูหรากับห่านบางชนิด แต่ฉันก็จะเสียสละสิ่งนั้นและทำมัน ภาษา Ruby เองก็มีไม่มากนัก ยากกว่า PHPอย่างไรก็ตามในการศึกษาจะสะดวกและมีเหตุผลมากกว่ามาก ระบบนิเวศของ Ruby นั้นซับซ้อนกว่า เนื่องจากโปรแกรมเมอร์ Ruby คุ้นเคยกับการทำให้ทุกอย่างเป็นอัตโนมัติ และฉันอาจจะไม่เพียงบอกความจริงเท่านั้น แต่ยังรวมถึงความจริงเมื่อฉันบอกคุณว่า Rubyists มีความก้าวหน้าในเรื่องนี้มากกว่าชุมชนโปรแกรมเมอร์อื่น ๆ ระบบอัตโนมัตินี้บังคับให้นักพัฒนาต้องศึกษาเทคโนโลยีของบริษัทอื่นจำนวนมาก แต่จะช่วยลดความยุ่งยากและลดเวลาที่ใช้ในกระบวนการพัฒนาด้านข้าง (การทดสอบ การปรับใช้แอปพลิเคชันบนเซิร์ฟเวอร์ และอื่นๆ) PHP ไม่มีทั้งหมดนี้ หรือทั้งหมดเป็นเพียงพื้นฐาน! สิ่งที่น่าสนใจที่สุดคือประมาณ 25% ของโปรแกรมเมอร์ PHP ไม่ได้ใช้เฟรมเวิร์กและสร้างโค้ดห่วย ๆ พยายามค้นหาโปรแกรมเมอร์ Ruby ที่ไม่คุ้นเคยกับเฟรมเวิร์ก Rails!
สิ่งสำคัญที่ต้องจำไว้คือโปรแกรมเมอร์ Ruby ส่วนใหญ่เป็นผู้เชี่ยวชาญและผู้เชี่ยวชาญด้านการพัฒนา และคุณควรมุ่งมั่นเพื่อสิ่งนี้เสมอ มีเพียงวิธีเดียวเท่านั้นและไม่มีวิธีอื่น มีเพียงแนวทางที่รุนแรงในเรื่องนี้ คุณไม่สามารถเป็นโปรแกรมเมอร์ Ruby ที่ไม่ดีได้ ไม่ว่าคุณจะเป็นมืออาชีพหรือไม่ใช่นักพัฒนา Ruby!

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

Ruby ยังคงเป็นเทคโนโลยีกระแสหลัก!หลายๆ คนบอกว่า Ruby เป็นภาษาเขียนโปรแกรมที่ได้รับความนิยมเล็กน้อย แต่เป็นหนึ่งใน 10 ภาษาที่ได้รับความนิยมมากที่สุด มีชุมชนขนาดใหญ่และมีไลบรารี่จำนวนมาก - rubygems
อย่างไรก็ตาม การมีอยู่ของ Ruby gems ก็เป็นข้อได้เปรียบเหนือ PHP อีกประการหนึ่ง! ใน PHP มี Pear ที่น่าเบื่อซึ่งเขียนโดยลิงที่แกล้งทำเป็นนักบินอวกาศ สิ่งนี้สามารถตัดสินได้จากข้อเท็จจริงที่ว่าพบขยะจำนวนมากที่คล้ายกับมนุษย์ในรหัส Pear แต่เรารู้ว่าผู้คนไม่มีความสามารถ ของสิ่งนี้
โดยทั่วไปแล้ว ฉันเพิ่งทำบาปโดยการเปรียบเทียบ RubyGems และ Pear โครงการขนาดใหญ่ที่ประสบความสำเร็จจำนวนมากได้ถูกนำมาใช้ใน Ruby ซึ่งพิสูจน์ให้เห็นถึงตัวเลือกที่ประสบความสำเร็จของ Ruby ในฐานะส่วนสำคัญในการสร้างธุรกิจจากโครงการเว็บ Ruby เช่นเดียวกับ Python ก็เป็นหนึ่งใน 10 อันดับแรกเช่นกัน ภาษายอดนิยมการเขียนโปรแกรม ขาดข้อบกพร่องใหญ่อย่างหนึ่งของเทคโนโลยีกระแสหลัก - Ruby ไม่ได้มีจำนวนโปรแกรมเมอร์มากเกินไป โปรแกรมเมอร์ Ruby ยังขาดแคลน ซึ่งหมายความว่าเงินเดือนในอนาคตของคุณในฐานะโปรแกรมเมอร์ Ruby จะสูงกว่ามากเมื่อเทียบกับผู้ที่เขียนโปรแกรมใน PHP หรือ Java แม้ว่าความต้องการโปรแกรมเมอร์ Ruby จะได้รับการตอบสนองอย่างสมบูรณ์ แต่โปรแกรมเมอร์ Ruby ก็จะมีรายได้เพิ่มขึ้นเนื่องจากมีสองคนมาก ปัจจัยสำคัญ: มากกว่า คุณภาพสูงรหัสและผลผลิตที่สูงขึ้น

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

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

ไม่ใช่ทุกคนที่เขียนโปรแกรมใน Ruby สมควรได้รับตำแหน่งโปรแกรมเมอร์ เช่น ฉันไม่คู่ควร เพราะฉันมีประสบการณ์น้อยมากและมีความรู้ไม่เพียงพอ อย่างไรก็ตาม หากเราใช้อุณหภูมิเฉลี่ยในโรงพยาบาล ชุมชน Ruby เหนือกว่าชุมชน PHP อย่างมาก ฉันจะไม่พูดถึงภาษาการเขียนโปรแกรมอื่นเนื่องจาก Python, Java และ Perl เป็นผู้ส่งออกหลักของสมาชิกใหม่ไปยังชุมชน Ruby นั่นคือโปรแกรมเมอร์ Ruby หลายคนประสบความสำเร็จในการทำงานร่วมกับภาษาการเขียนโปรแกรมอื่นและได้รับความรู้อย่างเพียงพอ ความรู้และประสบการณ์จึงหันมานับถือศาสนาทับทิม นอกจากนี้ ผู้คนจำนวนมากที่เขียนโปรแกรมใน Ruby ยังเขียนโปรแกรมใน Python และ Perl และ Java, C, Objective-C, javascript และเชื่อหรือไม่ว่า PHP

การแนะนำ

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

เมื่อคำนึงถึงสิ่งข้างต้นแล้ว จึงสามารถกำหนดเป้าหมายต่อไปนี้ได้:

ความรู้เบื้องต้นเกี่ยวกับอัลกอริธึมการค้นหาข้อมูล

การเขียนเว็บแอปพลิเคชันการค้นหา

เป้าหมายที่ตั้งไว้สำเร็จได้ด้วยงาน:

การสำรวจทฤษฎีการค้นหา

การเรียนรู้ภาษาโปรแกรม Ruby

รู้เบื้องต้นเกี่ยวกับภาษามาร์กอัป Haml

ขอแนะนำภาษาโลหะของ Sass

ใช้ Ruby, Haml และ Sass เพื่อเขียนโค้ดเว็บแอปพลิเคชัน

ดีบักแอปพลิเคชันผลลัพธ์

ส่วนทางทฤษฎี

ทฤษฎีการสืบค้นข้อมูล

ขั้นแรก คุณต้องกำหนดเครื่องมือค้นหา

เครื่องมือค้นหา –ซอฟต์แวร์และฮาร์ดแวร์ที่ซับซ้อนพร้อมเว็บอินเตอร์เฟสที่ให้ความสามารถในการค้นหาข้อมูลบนอินเทอร์เน็ต

ขึ้นอยู่กับฟังก์ชั่นที่พวกเขาทำและงานที่พวกเขาแก้ไข เครื่องมือค้นหาแบ่งออกเป็น:

help เป็นฟังก์ชันประเภทที่พบบ่อยที่สุด ระบบสารสนเทศและประกอบด้วยการให้สมาชิกระบบสามารถรับข้อมูลการติดตั้งสำหรับออบเจ็กต์บางคลาส

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

คำนวณ หน้าที่ของระบบคือการประมวลผลข้อมูลที่อยู่ในระบบตามอัลกอริธึมการคำนวณบางอย่างเพื่อวัตถุประสงค์ต่างๆ

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

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

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

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

นอกจากนี้ยังมีการจำแนกประเภทของเครื่องมือค้นหาดังต่อไปนี้ (รูปที่ 1)

รูปที่ 1. การจำแนกประเภทของเครื่องมือค้นหา

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

ศาสตราจารย์ซิพฟ์ตั้งข้อสังเกตว่า คำยาวพบในข้อความของภาษาใด ๆ น้อยกว่าข้อความขนาดสั้น จากการสังเกตนี้ Zipf ได้รับกฎสองข้อ:

กฎข้อแรกเชื่อมโยงความถี่ของการเกิดขึ้น (การเกิดขึ้น) ของคำกับอันดับของความถี่นี้ คำที่เกิดขึ้นบ่อยที่สุดจะถูกกำหนดให้มีอันดับเท่ากับหนึ่ง คำเหล่านั้นที่ไม่ค่อยธรรมดา - อันดับเท่ากับสอง ฯลฯ Zipf ค้นพบว่าผลคูณของความถี่ของคำและอันดับของคำมีค่าคงที่

การพึ่งพาอาศัยกันนี้มักจะแสดงด้วยไฮเปอร์โบลา ค่าคงที่ของ Zipf จะแตกต่างกันไปในแต่ละภาษา แต่ภายในกลุ่มภาษาเดียว ค่าคงที่นั้นยังคงไม่เปลี่ยนแปลง สำหรับภาษารัสเซีย ค่าคงที่จะอยู่ที่ประมาณ 0.06-0.07

Zipf พิจารณาว่าความถี่ของการเกิดคำและจำนวนคำที่รวมอยู่ในข้อความตามความถี่ที่กำหนดนั้นมีความสัมพันธ์กันเช่นกัน

ในด้านหนึ่ง เส้นโค้งผลลัพธ์จะคงพารามิเตอร์ไว้สำหรับข้อความทั้งหมดภายในภาษาเดียวกัน ในทางกลับกัน ไม่ว่าข้อความจะเขียนเป็นภาษาใดก็ตาม รูปร่างของเส้นโค้ง Zipf จะไม่เปลี่ยนแปลง เฉพาะค่าสัมประสิทธิ์เท่านั้นที่จะแตกต่างกัน

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

ยังไงก็ได้ทุกคน คำค้นหาสามารถจำแนกตามลักษณะ 3 ประการ ได้แก่ ความยาวคำค้นหา ความชัดเจนของคำค้นหา ขั้นตอนการค้นหา

ดังนั้นตามความยาวคำขอทั้งหมดจะแบ่งออกเป็น

คำเดียว (“โปรโมชั่น”)

สองคำ (" การส่งเสริมเครื่องมือค้นหา»

สามคำ ("การส่งเสริมเครื่องมือค้นหาระดับมืออาชีพ")

Verbose (“การโปรโมตเครื่องมือค้นหาระดับมืออาชีพในราคาไม่แพง”)

เพื่อความชัดเจนคำขอทั้งหมดแบ่งออกเป็น:

คำขอที่ชัดเจน (“ราคาสำหรับ iPad 2”)

คำถามคลุมเครือ (“โอโซน” ซึ่งอาจเป็นแก๊สและชื่อร้านและชื่อผู้อำนวยการ)

ตามขั้นตอนการค้นหา คำขอทั้งหมดจะแบ่งออกเป็น:

การรับรู้ถึงปัญหา (“เว็บไซต์ใช้งานไม่ได้”)

การค้นหาวิธีแก้ไข (“การโฮสต์เว็บไซต์”)

การเลือกโซลูชัน (“โฮสติ้งที่จะเลือก”)

การค้นหาตำแหน่งของธุรกรรม (“ภาษีโฮสต์โฮสต์หลัก”)

ภาษาโปรแกรม RUBY

Ruby เป็นภาษาโปรแกรมระดับสูงแบบไดนามิก สะท้อนแสง มีการตีความ สำหรับการเขียนโปรแกรมเชิงวัตถุที่รวดเร็วและง่ายดาย ภาษานี้มีการใช้งานแบบมัลติเธรดที่ไม่ขึ้นกับระบบปฏิบัติการ การพิมพ์แบบไดนามิกขั้นสูง ตัวรวบรวมขยะ และคุณสมบัติอื่นๆ อีกมากมาย Ruby มีความใกล้เคียงกันในแง่ของคุณลักษณะทางไวยากรณ์ของภาษา Perl และ Eiffel และในแนวทางเชิงวัตถุ - สำหรับ Smalltalk นอกจากนี้คุณสมบัติบางอย่างของภาษายังนำมาจาก Python, Lisp, Dylan และ Clu วันนี้ล่าม Ruby ถูกนำไปใช้กับเกือบทุกแพลตฟอร์ม (Unix, Win32, OS X) ผู้สร้างภาษาคือ ยูกิฮิโระ มัตสึโมโตะ

Ruby เป็นภาษาโปรแกรมเชิงวัตถุโดยสมบูรณ์ ทุกอย่างเป็นวัตถุ และฟังก์ชันเป็นวิธีการของวัตถุเหล่านี้

คุณสมบัติพื้นฐานของทับทิม:

ภาษาที่ตีความ:

ความเป็นไปได้ของการเรียกระบบโดยตรง

การสนับสนุนที่มีประสิทธิภาพสำหรับการดำเนินการกับสตริงและกฎ (นิพจน์ทั่วไป)

การเปลี่ยนแปลงที่เกิดขึ้นทันทีในระหว่างการพัฒนา

ไม่มีขั้นตอนการเรียบเรียง

การเขียนโปรแกรมที่ง่ายและรวดเร็ว:

ไม่จำเป็นต้องประกาศตัวแปร

ตัวแปรถูกพิมพ์แบบไดนามิก

ไวยากรณ์ที่เรียบง่ายและสอดคล้องกัน

ควบคุมอัตโนมัติแรม

การเขียนโปรแกรมเชิงวัตถุ:

ทุกสิ่งเป็นวัตถุ แม้แต่ชื่อคลาสก็เป็นตัวอย่างหนึ่งของคลาสคลาส

คลาส วิธีการ การสืบทอด ความหลากหลาย การห่อหุ้ม และอื่นๆ

วิธีการเดียว

Mixins โดยใช้โมดูล (ความสามารถในการขยายคลาสโดยไม่มีการสืบทอด)

ตัววนซ้ำและการปิด

ความสามารถในการเขียนโปรแกรมเมตาที่กว้างขวาง

สิ่งอำนวยความสะดวก:

ช่วงค่าจำนวนเต็มไม่จำกัด

รูปแบบการจัดการข้อยกเว้น

ตัวดำเนินการทั้งหมดส่งคืนค่า แม้แต่โครงสร้างการควบคุม

กลไกการจับข้อยกเว้น

การสนับสนุนสตรีม; ทั้งระบบเนทีฟและตระกูล UNIX

ข้อบกพร่อง:

ไม่สามารถควบคุมกระบวนการบางอย่างได้ (เช่น การจัดสรรหน่วยความจำ) ไม่สามารถกำหนดโครงสร้างข้อมูลระดับต่ำหรือรูทีนย่อยได้

ความเป็นไปไม่ได้ของการรวบรวมและการเพิ่มประสิทธิภาพของโปรแกรม

ความเปิดกว้าง ซอร์สโค้ดแม้กระทั่งใน โปรแกรมสำเร็จรูป

ผลที่ตามมาของข้อบกพร่องสองประการแรกนั้นเป็นอย่างมาก ความเร็วต่ำการเปิดตัวและรันโปรแกรม

นอกจากนี้ยังเป็นที่น่าสังเกตว่าสำหรับ Ruby นั้นมีหลายโมดูล (ส่วนเสริม) สำหรับงานเกือบทุกประเภท (การเขียนโปรแกรมอินเทอร์เฟซที่ซับซ้อน การคำนวณทางคณิตศาสตร์, ทำงานกับเสียง, วิดีโอ, 3D ฯลฯ) ดังนั้นภาษาการเขียนโปรแกรมนี้จึงถูกเลือกเป็นภาษาหลักในการเขียนภาคปฏิบัติ

1.3. ภาษามาร์กอัปแบบง่าย HAML

Haml เป็นภาษามาร์กอัปสำหรับการสร้าง XHTML แบบง่าย HAML คอมไพล์เป็น HTML Haml นั้นง่ายกว่า Html มาก เนื่องจากช่วยให้คุณลดความซับซ้อนและเพิ่มความเร็วในการเขียนเว็บแอปพลิเคชันได้

ตัวอย่างเช่น โค้ดชิ้นนี้เป็นภาษา Haml

%html( html_attrs("ru") )

%title บล็อกของฉัน

%meta(http-equiv="Content-Type" content="text/html; charset=utf-8")

Stylesheet_link_tag "หลัก"

%h1 บล็อกของฉัน

%h2 รายการ

- @entries.each ทำ |entry|

%h3.title= entry.title

%p.date= entry.posted.strftime("%A, %B %d, %Y")

%p.body=รายการ.ร่างกาย

สงวนลิขสิทธิ์ © อีวาน

รหัส HTML ถูกแปลง

บล็อกของฉัน