บางครั้งฉันได้ยินคนบ่นเกี่ยวกับลูกค้าของพวกเขาว่าพวกเขา ยืนยัน เกี่ยวกับการใช้ Rails ซึ่งพวกเขามี Kool Aid มากเกินไป หากพวกเขาเป็นนายหน้าพวกเขาแทบจะรู้สึกไม่สบายในกระเพาะอาหารที่ต้องหานักพัฒนา Ruby on Rails 'primadona' อีกคน จากนั้นพวกเขาก็ดึงสิ่งที่คล้ายกับความโง่เขลานี้ออกมาอย่างน่าอัศจรรย์ การเปรียบเทียบระหว่าง Git และ PHP เพื่อพิสูจน์ประเด็นของพวกเขา “ พวกเขาไม่รู้ด้วยซ้ำว่ากำลังขออะไร” พวกเขากล่าว
สำหรับเราเป็น โปรแกรมเมอร์ บางครั้งดูเหมือนว่าลูกค้าของเราไม่มีเบาะแส เราชอบที่จะพูดเกินจริงกรณีเช่นนี้ เมื่อคุณคิดเกี่ยวกับเรื่องนี้ดูเหมือนจะไม่ถูกต้องที่จะคิดว่าคนที่ให้เงินฉันเพื่อสร้างสิ่งต่างๆนั้นมีข้อ จำกัด อย่างใดและ 'แค่ไม่ได้รับ' ในความเป็นจริง, ฉันเชื่อว่าลูกค้าส่วนใหญ่รู้ว่าตัวเลือกของพวกเขาดี แต่พวกเขาก็เช่นกัน ยัง ตัดสินใจเลือกใช้ Rails
ฉันจะพยายามอธิบายว่าอะไรในความคิดของฉันที่ทำให้ Rails มีประโยชน์มากพอที่จะได้รับการพิจารณาอย่างจริงจังสำหรับโครงการและความต้องการมากมายเหลือเฟือ
เทมเพลตข้อกำหนดทางเทคนิคสำหรับการพัฒนาซอฟต์แวร์
เป็นไปได้ว่าจะไม่มีใครรู้ถึงประโยชน์ของ Ruby หากไม่ใช่สำหรับ Rails เอง บางคนชอบดูแคลน Ruby โดยบอกว่ามัน“ ง่ายมากสำหรับ Ruby” กับ“ อัศวินในชุดเกราะที่ส่องแสงที่เรียกว่า Rails” และถ้าไม่มี Rails“ Ruby จะไม่เกี่ยวข้อง” ฉันไม่สามารถพูดได้อย่างแน่นอนว่านั่นเป็นความจริงหรือไม่ แต่ฉันรู้ว่ามันจะเป็นเรื่องที่น่าเสียดายอย่างมากหากโลกนี้พลาดภาษาที่ยอดเยี่ยมเช่นนี้ ความจริงก็คือ: ผู้เขียน Rails เลือก Ruby โดยเจตนาและการเดิมพันที่ 'ป่าเถื่อน' ของเขาจ่ายออกไปพร้อมดอกเบี้ยมหาศาล สิ่งที่เขาเห็นในตอนนั้นคนอื่น ๆ สามารถเห็นได้ในวันนี้ Ruby ช่วยให้โปรแกรมเมอร์มีวิธีพิเศษที่ยากมากที่จะอธิบายกับ 'ฝูงที่ไม่ได้อาบน้ำ' เหตุใดจึงต้องใช้ Ruby on Rails? Ruby ทำให้โปรแกรมเมอร์มีความสุขตามที่โฆษณาไว้
ในขณะที่นักพัฒนาส่วนใหญ่ยอมรับว่า Ruby มีประโยชน์ แต่บางคนก็เห็นว่าเป็น มากเกินไป ดังนั้น. พวกเขากังวลเกี่ยวกับสิ่งที่อาจเกิดขึ้นกับเสรีภาพทั้งหมดที่ Ruby ยอมให้มีโอกาสที่จะใช้ในทางที่ผิด ให้ฉันอธิบายด้วยการปะลิง:
'1'.to_i #=> 1 class String def to_i raise 'foobar' end end '1'.to_i #=> RuntimeError: foobar
ง่ายอย่างนั้นด้วยโค้ดเพียงห้าบรรทัดเราได้นำคลาสที่มีอยู่และลบล้างพฤติกรรมของคลาสนั้นไป Nohting เป็นสิ่งศักดิ์สิทธิ์ - ไม่ใช่แม้แต่ String ข้อผิดพลาดเฉพาะนี้จะสังเกตเห็นได้ง่าย แต่สิ่งต่าง ๆ จะน่ากลัวกว่านี้มาก:
class String def to_i self.to_f - 1.13 end end '2'.to_i #=> 0.8700000000000001
เช่นเดียวกับที่เราได้นำเสนอข้อผิดพลาดในคลาส String ที่สามารถห่อหุ้มและบดบังด้วยเลเยอร์เมื่อเลเยอร์ของความซับซ้อน
คุณอาจคิดว่า: ทุกคนและแม่ของพวกเขาจะทำแอปพลิเคชันอันมีค่าของฉันไม่ได้หรือ แม้ว่าพฤติกรรมนี้จะดูน่ากลัว แต่ก็ไม่เชิง ในห้าปีของ ใช้ Ruby ฉันไม่มีปัญหากับพฤติกรรมนี้เลย มันอาจดูขัดกัน แต่แล้วอีกครั้งก็เช่นกันการขับรถยนต์ที่ความเร็ว 60 ไมล์ต่อชั่วโมงในทิศทางตรงกันข้ามโดยมีเส้นสีขาวบาง ๆ คั่นกลางถนน ในทางปฏิบัติทั้งสองทำงานได้ดีอย่างน่าทึ่ง
วิธีที่เร็วที่สุดในการเรียนรู้ c++มันอาจดูขัดกัน แต่แล้วอีกครั้งก็เช่นกันการขับรถยนต์ที่ความเร็ว 60 ไมล์ต่อชั่วโมงในทิศทางตรงกันข้ามโดยมีเส้นสีขาวบาง ๆ คั่นกลางถนน ในทางปฏิบัติทั้งสองทำงานได้ดีอย่างน่าทึ่ง
ประโยชน์อีกประการหนึ่งคือ Ruby เป็นเครื่องมืออเนกประสงค์ ดังนั้นจึงมีคมเหมือนมีด ฉันชอบคิดว่าผู้ใหญ่สามารถจับมีดได้ดี - การป้องกันเด็กมีไว้สำหรับเด็ก ๆ ( ทวีต ). และการได้รับการปฏิบัติเหมือนเด็กในไอทีทำให้คุณตกเป็นเหยื่อของ Paul Graham’s ความขัดแย้งของ Blub : คุณคิดว่าตัวเองดีกว่าถ้าไม่มีคุณสมบัติบางอย่างที่คุณไม่เข้าใจหรือมีคนบอกว่าคุณอันตรายเกินไป แน่นอนวันนี้เราจะถามว่า“ ทำไมต้องใช้ Ruby on Rails”; ดังนั้นนี่จึงเป็นการถกเถียงกันอีกครั้ง เป็นที่ยอมรับว่า Ruby พลาดฟีเจอร์บางอย่างที่ภาษาอื่นมี (Lisp hmm, hmm) สรุปแล้ว Ruby อยู่ใกล้กับส่วนบนสุดของ 'language power ต่อเนื่อง'
สองสามปีแรกของฉันกับรูบี้ช่างน่าถ่อมตัว ฉันได้เรียนรู้มากมายจากการอ่านโค้ดของผู้อื่น บางครั้งฉันก็ประหลาดใจ บางครั้งฉันก็บ้า แต่ในที่สุดความรู้นี้ก็ทำให้ฉันสื่อสารกับคอมพิวเตอร์ได้อย่างมีประสิทธิภาพมากขึ้นกว่า แต่ก่อน ฉันเกือบจะรู้สึกเสียใจกับภาษา 'เทปสีแดง' อื่น ๆ ที่ทำให้คุณกระโดดผ่านห่วงเพียงเพื่อที่จะกระโดดผ่านพวกเขาทั้งหมดพร้อมกับบอกคุณว่า 'ฉันแค่ทำในสิ่งที่ดีที่สุดสำหรับคุณมันก็เพื่อประโยชน์ของคุณเอง!'
มีความเคารพอย่างยิ่งต่อหลักการปฏิบัติที่ถักเป็น DNA ของ Rails ในระดับต่ำสุดที่เป็นไปได้ เมื่อใช้ร่วมกับประโยชน์ของทับทิมลัทธิปฏิบัตินิยมนี้ก่อให้เกิดโซลูชันที่สง่างามและกระตุ้น / สร้างแรงบันดาลใจ ชุมชนพัฒนา Ruby on Rails เพื่อทำเช่นเดียวกัน ลัทธิปฏิบัตินิยมมักถูกโฆษณาว่าเป็นเต็นท์ของ Rails ดังนั้นการอ้างสิทธิ์นี้จึงไม่ใช่เรื่องใหม่ แต่ฉันได้รับการเตือนถึงความจริงเมื่อเร็ว ๆ นี้เนื่องจากเพื่อนของฉันพยายามแสดงให้ฉันเห็นว่า 'เจ๋ง' แค่ไหน ไฮเบอร์เนต เป็นอย่างนั้นจริงๆ เขากำลังดิ้นรน ฉันรู้สึกได้ถึงความเจ็บปวดของเขาในขณะที่เขาไม่สามารถตั้งค่าตัวเลือกและพารามิเตอร์การกำหนดค่ามากมายที่ควรจะเป็นค่าเริ่มต้นของเฟรมเวิร์กตั้งแต่แรก
เมื่ออายุมากขึ้นมาตรฐานด้านความซับซ้อนเทียมของฉันก็สูงขึ้นเรื่อย ๆ เมื่อพิจารณาว่าฉันเริ่มเขียนรหัสการผลิตในปี 1989 ตอนอายุ 11 ขวบ (เริ่มต้นด้วยโครงการสำหรับเพื่อนบ้านข้างบ้านของฉันใน Clipper Summer '87 ) ฉันมีความอดทนต่อภาวะแทรกซ้อนที่ไม่จำเป็นเกือบเป็นศูนย์ และ Rails ได้คะแนนสูงมากในแผนกนั้น มันเป็นมากกว่าแค่ 'การประชุมมากกว่าการกำหนดค่า' ฉันกำลังพูดถึงแนวคิดเชิงปฏิบัติทั้งหมดที่มีมูลค่าสูงภายในและแทรกซึมผ่านชุมชน Rails
Rails ใกล้เคียงกับภาษาอังกฤษมากที่สุด (เว้นแต่คุณจะใช้ COBOL) ใช้สิ่งที่เรียกว่าภายใน DSL ขยาย Ruby ด้วยความหมายของตัวเอง การสร้าง DSL เป็นสิ่งที่อันตรายเสมอเมื่อคุณพัฒนาภาษาใหม่อย่างมีประสิทธิภาพ เนื่องจากเป็นภาษาภายในคุณจึงไม่จำเป็นต้องใช้ตัวแยกวิเคราะห์ภายนอก แต่ในแง่หนึ่งก็ให้ความรู้สึกเหมือนเป็นภาษาใหม่ ทีม Rails มีความสมดุลที่ดีกับ DSL โดยใช้ในจุดที่เหมาะสมและแทบจะไม่หักโหมจนเกินไปแสดงให้เห็นถึงการควบคุมตนเองที่ดีเยี่ยม ฉันคิดว่าโปรแกรมเมอร์ทุกคนโดยไม่คำนึงถึงประสบการณ์ Rails (และแม้แต่ผู้ที่ไม่ใช่โปรแกรมเมอร์บางคน) สามารถเข้าใจสิ่งนี้:
class User true acts_as_taggable acts_as_taggable_on :certificates, :expertise_kinds validates_presence_of :first_name, :last_name, :email has_many :translations has_attached_file :avatar, :styles => {:small => '240x240>'} has_attached_file :cv ...
อันที่จริงถ้าคุณไม่คุ้นเคยกับ Ruby มันอาจจะดูแปลก ๆ - เกือบจะเหมือนกับว่ามันไม่ใช่ภาษาโปรแกรม เมื่อคุณรู้ว่ามันเป็นเพียงวิธีการโทรโดยไม่ต้องมีวงเล็บคุณก็ไปได้ดี อย่างไรก็ตาม Rails DSL ให้ความรู้สึกเหมือนเป็นภาษาพิเศษสำหรับการอธิบายข้อกำหนดในความเป็นจริงแล้วมันเป็นเพียงการตั้งชื่อที่ชาญฉลาดและการใช้ไวยากรณ์ที่ยอดเยี่ยมของ Ruby โดยธรรมชาติ
Rails มีกองทัพของคอมมิทเตอร์ที่ทำให้แน่ใจว่ามันอยู่ในสภาพดีเยี่ยม หลายโครงการลดลงตามอายุ แต่ด้วย Rails ประกายไฟยังคงบินได้เมื่อต้องตัดสินใจ รู้สึกเหมือนว่าผู้ดูแล (ยังคง) เอาใจใส่และต้องการให้ผู้คนใช้ Ruby on Rails และเข้าใจถึงประโยชน์ของมันอย่างแท้จริง
หลายโครงการลดลงตามอายุ แต่ด้วย Rails ประกายไฟยังคงบินได้เมื่อต้องตัดสินใจ ทวีตภายใต้ Rails ตัวเองในฐานะเชอร์รี่ด้านบน Ruby ยืนอยู่พร้อมกับผู้จัดการแพ็คเกจที่น่าเกรงขาม RubyGems , เปรียบได้กับ CPAN ในแง่ของจำนวนแพ็กเกจ - และเมื่อพิจารณาถึงอายุของ CPAN แล้วการอ้างสิทธิ์นั้นน่าประทับใจมาก Rails ตกรางช่วงสั้น ๆ เมื่อพยายามสร้าง“ Rails plugins” ของตัวเอง โชคดีที่สิ่งนี้ไม่ติดดังนั้น RubyGems จึงยังคงเป็นแหล่งที่มาที่เป็นหนึ่งเดียวและยอดเยี่ยมสำหรับรหัสที่ตั้งโปรแกรมโดยบุคคลที่มีความสว่างสูง
การทำงานร่วมกันระหว่างภาษาที่ยอดเยี่ยมเฟรมเวิร์กเว็บที่ใช้งานได้จริงและชุมชนที่ยอดเยี่ยมทำให้ Rails ได้ผลลัพธ์ ดีกว่าผลรวมของชิ้นส่วนมาก
มีรางอยู่รอบ ๆ บล็อก ในแบบฮิปสเตอร์มันไม่เท่อีกต่อไป นี่เป็นสิ่งที่ดีในการเลือกกองเทคโนโลยี: คุณต้องการสิ่งที่พิสูจน์แล้ว และ Rails ก็แค่นั้น เมื่อเร็ว ๆ นี้เราได้เขียนบทความที่พูดถึงความหลากหลายของ ล่ามทับทิมและเวลาทำงาน ที่มีอยู่ในขณะนี้
เรียนรู้การเขียนโค้ดใน c++
ฉันรู้ว่าฉันรู้ว่า. ในฐานะผู้เชี่ยวชาญด้านไอทีฉันควรให้ความสำคัญอย่างยิ่ง 'จริงจัง' สิ่งต่างๆและละเว้น ‘แวว’ . อาจดูเหมือนตื้น แต่ให้เผชิญหน้า:
นี่ไม่ได้เกี่ยวกับความไร้สาระด้วยซ้ำ มันเกี่ยวกับการมีส่วนร่วมกับคนฉลาดให้มากที่สุดเท่าที่จะทำได้เพื่อเติมน้ำลงในโรงสี เมื่อมีการพิจารณาเฟรมเวิร์คสถานที่ที่ดีที่สุดที่จะอยู่ในฝูงชน การเลือกกรอบการทำงานที่คนฉลาดเหล่านี้มุ่งเน้นไปที่นั่นหมายความว่าคุณมีพื้นฐานมากขึ้นแล้ว และนี่นำฉันไปสู่จุดต่อไป
ฉันมีจุดอ่อนสำหรับเฟรมเวิร์กเล็ก ๆ ฉันชอบเวลาที่ฉันเข้าใจได้ว่าเฟรมเวิร์คนั้นกำลังทำอะไรและทำไม ในแง่นี้ Rails จะค่อนข้างป่องและบางครั้งก็ท่วมท้น
วิธีการเรียนรู้ c และ c ++
สถานการณ์ที่กลืนไม่เข้าคายไม่ออกที่นี่คุณต้องการเขียนสิ่งเดิมซ้ำแล้วซ้ำอีกกี่ครั้ง? บางส่วนสามารถเขียนใหม่ได้ดีกว่าฉันแน่ใจ แต่ต้องใช้เวลานานมาก ยิ่งคุณอนุญาตให้ Rails ทำเพื่อคุณมากเท่าไหร่คุณก็ยิ่งไม่ต้องกังวลเกี่ยวกับการเขียนซ้ำหรือนำฟังก์ชันไปใช้งานซ้ำ
Rails คือ (ตามที่บอก) 'รวมแบตเตอรี่' นี่ไม่ใช่สิ่งที่ดีหากคุณสนใจความเบาบางหรือถ้าคุณรู้สึกว่าจำเป็นต้องมีความรู้มากมายว่าทุกอย่างทำงานอย่างไร ในทางปฏิบัติหากคุณปล่อยวางความกลัวดูเหมือนจะได้ผล Rails มีค่าเริ่มต้นที่สมเหตุสมผลสำหรับเกือบทุกสิ่งที่คุณต้องการและเป็นแบบแยกส่วนเพียงพอที่จะหลีกเลี่ยงการเข้าโค้งของคุณในจุดที่คับขัน
ถามตัวเองอีกครั้งว่าทำไมถึงใช้ ทับทิมบนราง เหรอ? Rails เหมาะสำหรับทั้งเว็บไซต์สาธารณะที่ทันสมัยซึ่งแข่งขันกับแอปพลิเคชัน JavaScript หน้าเดียวและแอปพลิเคชันระบบหลักขององค์กรที่ซับซ้อนซึ่งมักจะดู 'น่าเกลียด' เล็กน้อย (ด้วย UI ทั่วไปที่มีความเที่ยงตรงต่ำกว่า) แต่จะชดเชยสิ่งนี้ ตำหนิด้วยกฎและตรรกะทางธุรกิจที่ซับซ้อนมากมาย ประโยชน์ของมันคือใช้งานได้หลากหลายและสามารถแข่งขันกับทั้งรูปทรงเพรียวบางและทรงพลัง
สำหรับปัญหาที่พบบ่อยส่วนใหญ่ Rails มีส่วนประกอบที่คุณสามารถกำจัดได้เกือบจะทันทีพร้อมเอกสารที่สูงกว่าค่าเฉลี่ยอย่างต่อเนื่อง (อย่างไรก็ตามทีมงานหลักของ Rails ได้ชักชวนผู้ร่วมให้ข้อมูลว่าการเขียนเอกสารนั้นยอดเยี่ยม (แม้ว่าเราทุกคนจะรู้ว่ามัน ไม่) นำไปสู่เอกสารที่เขียนได้ดีกระชับและประหยัดเวลา)
เมื่อคุณละทิ้งยูนิคอร์นและการกอดในวันศุกร์คุณจะได้รับกรอบอันทรงพลังที่คุณสามารถใช้ทั้งสำหรับตัวเปลี่ยนเกมในอนาคตและไซต์ธุรกิจกลางถนนถัดไปของคุณ และด้วยกลุ่มอัญมณีชั้นนำของคุณคุณจะมีคลังแสงที่ใช้ไอเดียที่แจ่มชัดที่สุดในการเขียนโปรแกรมคอมพิวเตอร์เพียงปลายนิ้วสัมผัส ด้วยความไม่ยุ่งยาก
ที่เกี่ยวข้อง: Timestamp Truncation: ทับทิมบน Rails ActiveRecord Tale