เหตุใด Rails เขียนใน Ruby [ปิด]


9

ฉันรู้ PHP และ Ruby

ใช้โคลน PHP Rails (ไม่เลือก) เรียกว่า Symfony (ซึ่งเห็นได้ชัดว่าเป็นกรอบ PHP ที่ดีที่สุด) ฉันสังเกตว่ามันเป็นโคลนของ Rails ฉันคิดว่า Symfony นั้นโง่และ (SensioLabs เป็นธุรกิจที่ฉลาด) เพราะ Rails มีอยู่แล้ว

นอกเหนือจากโครงการโอเพ่นซอร์สที่สร้างรายได้ฉันไม่เข้าใจว่าทำไมผู้คนถึงสร้าง Rails clones ใน PHP เมื่อ Rails มีอยู่แล้ว ทำไมไม่ใช้ Rails DHH เขียนโค้ด Rails กับ Ruby อย่างแน่นอน

เมื่อใช้ Symfony ฉันสังเกตว่ามีอะไรบางอย่างไม่ถูกต้อง แต่ฉันไม่รู้ว่ามันคืออะไร ฉันเรียนรู้ Rails ผ่าน eBook Sitepoint และลืมมันไปดังนั้นตอนนี้ฉันเรียนรู้ผ่าน Ebook ของ PragProg และฉันรัก ebook นั้น ฉันไม่รู้ Rails ทั้งหมด แต่ฉันเข้าใจว่ามันทำงานอย่างไร (ขอบคุณ Symfony) ฉันชอบที่จะอ่าน ebook ให้จบเพื่อที่ฉันจะได้สร้างแอพ 2 Rails ฉันจำได้ว่า Rails นั้นสนุกกว่า Symfony โดยใช้ Sitepoint ebook ที่ฉันทำไม่ได้และนั่นไม่เกี่ยวอะไรกับไวยากรณ์ที่น่าสนใจของรูบี้

  1. ทำไม Rails ถึงใช้รหัสใน Ruby
  2. PHP Rails clone เกี่ยวกับอะไร
  3. Rails กำลังทำอะไรอยู่โคลนที่ Rails ไม่ได้ทำ

4
Ruby เป็นซอสลับของ Rails
Chiron

4
ฉันไม่เห็นสิ่งที่เรียกว่าRuby on Railsถูกนำมาใช้ใน PHP
ทางเลือก

2
หากหน่วยความจำทำหน้าที่ฉันได้ยินพอดคาสต์หนึ่งครั้งที่ DHH อธิบายว่าเขาเลือกรูบี้ ฉันคิดว่ามันเป็นตอนของชีวิตนักพัฒนานี้
อดัมเลียร์

2
@Chris G - ฉันพบว่ามันยากที่จะเชื่ออย่างไม่น่าเชื่อ ช่องว่างระหว่างภาษาพื้นฐานมีขนาดใหญ่มาก - Ruby เป็นความคิดที่ชาญฉลาดและเข้าใจอย่างกว้างขวางผ่านภาษาการเขียนโปรแกรม PHP เป็นแฮ็คที่ซ้อนกันในแฮ็คอื่น ๆ ด้วยคุณสมบัติของ Ruby ที่แฮ็คในช่วงปลายเกม PHP นั้นง่ายต่อการโฮสต์และทำงานได้ดีขึ้น แต่ถ้าสิ่งเหล่านั้นเป็นเรื่องสำคัญของ DHH เขาอาจจะไม่ได้เลือก Ruby เมื่อเขาทำ PHP ไม่เคยถูกออกแบบมาให้เป็นภาษาการเขียนโปรแกรมและผู้ที่สนใจเกี่ยวกับทฤษฎีภาษา / CS มักจะไม่กระตือรือร้นกับมัน
glenatron

2
@Glenatron ไม่มีสิ่งใดที่จะหยุดยั้งผู้ใช้ PHP ที่ชาญฉลาดไม่ให้เขียนแอปพลิเคชั่นเว็บที่ทันสมัยและสวยงามโดยใช้คุณสมบัติ "Rails" ที่สำคัญเช่น ORM แนวคิดที่ว่าการปิดนั้นเพิ่งถูกเพิ่มลงใน PHP เมื่อเร็ว ๆ นี้จะไม่หยุดไม่ให้ใครใช้งาน!
Chris G.

คำตอบ:


26

1. ) เหตุใด Rails จึงใช้รหัสใน Ruby

Rails นั้นสกัดมาจากงานของDHHใน Basecamp ซึ่งเขียนใน Ruby เมื่อเวลาผ่านไปผู้พัฒนาหลักของ Rails ยังคงทำการแยกและพัฒนาฟีเจอร์เพิ่มเติมใน Rails และในที่สุดมันก็กลายเป็นเฟรมเวิร์กที่เต็มเปี่ยม

เนื่องจากทับทิมเติบโตในอำนาจและความหมายในช่วงหลายปีที่ผ่านมามันยังคงเป็นแบบที่ดีสำหรับกรอบดังนั้นมันก็ยังคงเป็นภาษาที่มันเขียนด้วย (บวก "C # on Rails" หรือ "Java on Rails" ไม่ ไม่มีการอ้างถึงที่ดี)

2. ) PHP Rails clone เกี่ยวกับอะไรที่รู้สึกไม่ถูกต้อง?

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

นอกเหนือจากโครงการโอเพ่นซอร์สที่สร้างรายได้ฉันไม่เข้าใจว่าทำไมผู้คนถึงสร้าง Rails clones ใน PHP เมื่อ Rails มีอยู่แล้ว ทำไมไม่ใช้ Rails DHH เขียนโค้ด Rails กับ Ruby อย่างแน่นอน

เพราะไม่ใช่ทุกคนที่มีเวลางบประมาณหรือความชอบในการเรียนรู้ภาษาใหม่เพื่อที่พวกเขาจะได้เรียนรู้กรอบใหม่

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

ฉันรู้ PHP และ Ruby

ข้อความเช่น "ฉันรู้ทั้ง PHP และ Ruby" แนะนำว่าคุณอาจไม่ได้ชื่นชมความลึกความร่ำรวยและสำนวนของทั้งสองอย่างเต็มที่


(ทำซ้ำจากstackoverflow.com/questions/6972992/…สำหรับคนรุ่นหลัง)
John Feminella

ฉันเชื่อว่าความพยายามเริ่มต้นที่ Basecamp ได้พยายามใน PHP และไม่ได้ผลตามที่ DHH พึงพอใจ ดังนั้น Rails จึงใช้รหัสใน Ruby
ไบรอันเอ็ม

3
+1 - มีสถานที่ที่จะเรียนรู้ภาษาใหม่ - โครงการที่มีความสำคัญไม่ได้เป็นหนึ่งในนั้น
JeffO

PHP ไม่มี metaclasses อยู่นอกกรอบคุณถูกต้อง อย่างไรก็ตามเนื่องจาก PHP 5.3 เป็นไปได้ที่จะใช้ฟังก์ชั่น metaclass
Chris G.

6

1. ทำไม Rails ถึงใช้รหัสใน Ruby

ครั้งหนึ่งมีการตัดสินใจที่จะเขียนโปรแกรมเป็นทับทิม การตัดสินใจออกแบบนี้ยังคงอยู่จนถึงปัจจุบัน

2. อะไรเกี่ยวกับ PHP Rails clones ที่รู้สึกไม่ถูกต้อง?

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

3. อะไรคือสิ่งที่ Rails กำลังทำอยู่โคลน Rails นั้นไม่ได้ทำอะไร?

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


6

ทำไม Rails ถึงใช้รหัสใน Ruby

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

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

ประการที่สอง ActiveRecord ช่วยให้คุณประกาศสมาคมกับวัตถุที่: ยุทธPerson has_many :bookshas_many ดูเหมือนประกาศ แต่จริงๆแล้วมันเป็นการเรียกเมธอด has_many(:books)(ทับทิมอ่านนี้เป็น

รูบี้ยังมีเป้าหมายที่จะทำให้ชีวิตโปรแกรมเมอร์ที่มีประสบการณ์ง่ายขึ้น

Ruby ทำให้สิ่งเหล่านี้ง่ายขึ้นดังนั้นผู้คนจึงทำ ภาษาอื่นทำให้สิ่งเหล่านี้ยากขึ้นหรือสิ่งมหัศจรรย์เช่นนี้ไม่ได้เป็นส่วนหนึ่งของวัฒนธรรมอย่างชัดเจน Django, Pega mega-framework มี meta magic น้อยกว่ามากเพราะมันไม่ใช่เรื่องง่ายใน Python และ Python เป็นภาษาที่โน้มตัวไปทาง "ชัดเจนดีกว่าโดยนัย" (ฉันไม่รู้มากเกี่ยวกับวัฒนธรรม PHP หรือเฟรมเวิร์คของเว็บในด้านนั้น)

ฉันคิดว่าสิ่งเหล่านี้เป็นเหตุผลบางส่วนที่ DHH ตกหลุมรัก Ruby และเขาใช้คุณสมบัติภาษาเหล่านี้พร้อมกับใช้พลังงานใน Rails


ทุกอย่างดีมากเมื่อใช้คอนโซลในการสร้างนั่งร้านใน Rails แต่มีคุณสมบัติดังกล่าวใน Symfony คุณช่วยชี้ให้ฉันดูที่ที่ฉันสามารถหาหลักฐานว่าภาษาของรูบี้มีความสำคัญต่อการเขียนโปรแกรมเมตาหรือไม่? ไม่ควรเรียนพอเพียง?
desbest

1
นักเขียนโปรแกรมในทางปฏิบัติมีหนังสือเล่มหนึ่ง: Metaprogramming in Ruby ซึ่งนอกเหนือจากการแนะนำ Metaprogramming ใน Ruby แล้วยังใช้เวลาประมาณ 50 หน้าในการพูดคุยเกี่ยวกับ metaprogramming ใน Rails ฉันไม่คิดว่าแค่คลาสก็เพียงพอแล้วตัวอย่างเช่นบางครั้งเมตาโพแกรมกำลังเกิดขึ้นผ่านเมธอดเชน ("เมื่อคุณเรียกใช้ฟังก์ชันนี้แทนที่จะเรียกใช้ฟังก์ชั่นเวอร์ชันของฉัน - ซึ่งอาจเรียกหรือไม่เรียกว่าต้นฉบับ") นี่เป็นรูปแบบการเขียนโปรแกรมเมโทรใน Ruby (ซึ่ง Rails ทำความสะอาดและทำให้ใช้งานได้ง่ายขึ้น)
RyanWilcox

ฉันจะต้องอ่านว่าเมื่อฉันเชี่ยวชาญ Rails แล้ว ทุกอย่างฟังดูสับสน
desbest

ฉันต้องการพูดถึงว่า PHP มีโซลูชัน ORM ด้วย ไม่ใช่สิ่งที่พิเศษสำหรับ Ruby
Chris G.

1
มีการใช้งาน PHP ของ ActiveRecord เรียกว่า phpActiveRecord มันใช้ทุกสิ่งเหล่านี้ อย่างไรก็ตามเมื่อ DHH สร้าง Rails ขึ้นมา PHP ก็ยังห่างไกลจากความสามารถในการทำเช่นนั้น
Jamon Holmgren

2

ทำไมไม่ใช้ราง

ฉันจะเสนอมุมมองบางอย่างในฐานะผู้ใช้ของทั้งสอง ฉันเป็นโปรแกรมอดิเรกใน Ruby / Rails และฉันใช้ PHP เฉพาะที่ทำงาน (หมายเหตุ: ฉันไม่ได้ห้าม Ruby / Rails เป็นสภาพแวดล้อมของผู้ทำงานอดิเรกนี่เป็นเพียงวิธีที่ฉันเลือกใช้)

หลายคนปฏิบัติต่อ Ruby / Rails เป็นจอกศักดิ์สิทธิ์ของการพัฒนาเว็บไซต์เพราะ bandwagon ความนิยมและเพราะ 'ต่างกัน' มีหลายวิธีที่แน่นอน แต่ไม่เพียงพอที่จะยกเลิก PHP เป็นสิ่งที่เก่าแก่

Symfony ไม่รู้สึกเหมือน Rails เพราะ PHP ขาดน้ำตาล syntactic ที่ทางรถไฟมอบให้ PHP มีการปรับปรุงในเรื่องนี้และการปิดเพิ่มอีก 5.3 ครั้งทำให้เกิดความแตกต่างในการเขียนโค้ดของเรา

อย่าเข้าใจฉันผิดฉันรัก Ruby และฉันรัก Rails แต่เมื่อคุณไม่ต้องการจัดการกับเว็บไซต์ที่ซับซ้อนหรือมีราคาแพงหรือกังวลเกี่ยวกับประสิทธิภาพหรือ 'ตกเลือด' PHP ยังคงมีความเกี่ยวข้องอย่างยิ่งในปัจจุบันและเฟรมเวิร์กก็ดีเช่นกัน

  • Redbean นำเสนอฟังก์ชัน ORM ที่ยอดเยี่ยมด้วย PHP Doctrine, Idiorm / Paris และ Propel ก็เช่นกัน
  • Symfony2 และ CakePHP เสนอกรอบการพัฒนาเว็บที่มีความคล้ายคลึงกันกับ Rails
  • CodeIgniter นำเสนอวิธีการแก้ปัญหากรอบเต็มรูปแบบโดยไม่ต้องขยายตัว
  • Slim เสนอโครงร่างคล้ายซินาตร้า

ความไม่แน่ใจของคุณที่ PHP Rails clones ไม่ 'ถูกต้อง' เข้าใจผิดฉันคิดว่าเพราะพวกเขาไม่ใช่โคลนและพวกเขาจะไม่เหมือนกับ Rails เรียนรู้วิธีที่จะเข้าใจความเรียบง่ายและความคุ้นเคยของโซลูชัน PHP

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.