ทฤษฎีเล็กๆ น้อยๆ ของฉัน ก็คือแนวคิดทางจิตวิทยาของ “การประทับ” สามารถนำไปใช้กับการเขียนโปรแกรมได้อย่างง่ายดาย เช่นเดียวกับที่ลูกห่านตัดสินใจว่ารูปแบบชีวิตที่เคลื่อนไหวครั้งแรกที่มันพบคือพ่อแม่ของมัน ดังนั้น โปรแกรมเมอร์จากตัวอ่อนจึงพัฒนาความผูกพันที่ลบไม่ออกกับรูปแบบและคุณลักษณะของภาษาที่ก่อตัวแรกของพวกเขา
สำหรับหลายๆ คน ภาษานั้นคือ Ruby เขามักจะให้เครดิตกับการเขียนโปรแกรม “คลิก”; ภาพพิมพ์พูดถึงมันด้วยหนี้และความรู้สึกบางอย่าง ฉันเข้าใจสิ่งนั้น ฉันเขียน “Hello world” ครั้งแรกในสิ่งที่เลวร้ายที่เรียกว่า Java แต่การเขียนโปรแกรมกลายเป็นเรื่องง่ายเมื่อฉันเรียนรู้ JavaScript (ฉันรู้ ฉันรู้) และ OCaml ซึ่งทั้งสองอย่างนี้กำหนดรสนิยมของฉันเป็นพื้นฐาน
ฉันไปถึงรูบี้ช้าไปหน่อย จนกระทั่งงานที่สี่ของฉันที่ฉันเข้าร่วมทีมที่ใช้มันเป็นหลัก เมื่อถึงตอนนั้น ฉันได้ยินเสียงชื่นชมความสง่างามของเขามากพอจนฉันเต็มไปด้วยความคาดหวัง พร้อมที่จะหลงใหลและสัมผัสประสบการณ์ซาโตริระดับมืออาชีพที่ผู้ติดตามของเขาบรรยายไว้ ความไม่พอใจของฉันเกิดขึ้นทันที
การใช้ภาษาสายหมายถึงการได้เห็นมันโดยปราศจากหมอกแห่งความรู้สึกนึกคิดที่ให้อภัยซึ่งมาพร้อมกับรอยประทับ – ความเต็มใจที่จะมองข้ามข้อบกพร่องว่าเป็นสิ่งแปลกประหลาด สิ่งที่ฉันเห็นไม่ใช่เครื่องมือที่ประดับด้วยเพชรพลอย แต่เป็นสิ่งเล็กๆ น้อยๆ ที่น่าสงสารซึ่งไม่ค่อยได้รับข้อความว่าโลกแห่งการเขียนโปรแกรมได้ดำเนินต่อไป
รูบี้ถูกสร้างขึ้น ในปี 1995 โดยโปรแกรมเมอร์ชาวญี่ปุ่น ยูกิฮิโระ มัตสึโมโตะ หรือที่รู้จักกันในชื่อ “แมตซ์” นอกเหนือจากการสร้างภาษาโปรแกรมหลักเพียงภาษาเดียวที่พัฒนาขึ้นนอกประเทศตะวันตกแล้ว ชาวมอรมอนที่เกิดในโอซาก้าแห่งนี้ยังขึ้นชื่อว่าเป็นคนดีเป็นพิเศษ มากจนชุมชน Ruby ได้นำคติประจำใจ MINASWAN มาใช้ ซึ่งหมายถึง “Matz เป็นคนดีและเราเป็นคนดี”
เมื่อเหมาะสมกับสิ่งนี้และชื่อที่สวยงามของมัน Ruby ก็ดูง่ายต่อสายตา รูปแบบไวยากรณ์นั้นเรียบง่าย โดยไม่มีเครื่องหมายอัฒภาคและวงเล็บ ยิ่งกว่า Python ซึ่งเป็นภาษาที่ขึ้นชื่อเรื่องความสามารถในการอ่าน Ruby อ่านได้เกือบเหมือนกับภาษาอังกฤษทั่วไป
ภาษาโปรแกรมโดยทั่วไปจะแบ่งออกเป็นสองค่าย: พิมพ์แบบคงที่และพิมพ์แบบไดนามิก ระบบแบบคงที่นั้นเหมือนกับชุดของบล็อกเลโก้ที่ชิ้นส่วนต่างๆ จะเชื่อมต่อกับชิ้นอื่นๆ ที่มีรูปร่างและขนาดที่ถูกต้องเท่านั้น ทำให้ความผิดพลาดบางอย่างเป็นไปไม่ได้ทางกายภาพ ต้องขอบคุณการพิมพ์แบบไดนามิกที่ทำให้คุณสามารถรวมองค์ประกอบต่างๆ เข้าด้วยกันได้ตามที่คุณต้องการ แม้ว่าในทางทฤษฎีจะมีความยืดหยุ่นมากกว่าในขนาดเล็ก แต่อิสรภาพนี้จะส่งผลย้อนกลับเมื่อคุณสร้างโครงสร้างขนาดใหญ่ ข้อผิดพลาดบางประเภทจะตรวจพบได้เฉพาะในขณะที่โปรแกรมกำลังทำงานอยู่เท่านั้น กล่าวอีกนัยหนึ่งทันทีที่คุณวางน้ำหนักบนสะพานเลโก้ มันจะกลายเป็นเรื่องไร้สาระที่ไร้ประโยชน์
อย่างที่คุณอาจเดาได้ Ruby นั้นมีการพิมพ์แบบไดนามิก Python และ JavaScript เช่นกัน แต่ในช่วงหลายปีที่ผ่านมาชุมชนเหล่านี้ได้พัฒนาเครื่องมือขั้นสูงที่ช่วยให้พวกเขาประพฤติตนมีความรับผิดชอบมากขึ้น ไม่มีโซลูชัน Ruby ในปัจจุบันใดที่ใกล้เคียงกับสิ่งเหล่านี้ มันดีเกินไปสำหรับสิ่งที่โปรแกรมเมอร์เรียกว่า “ปืน” นั่นคือฟังก์ชั่นที่ทำให้การยิงตัวเองด้วยเท้าเป็นเรื่องง่าย
