Tại sao Rails được viết bằng Ruby? [đóng cửa]


9

Tôi biết PHP và Ruby.

Sử dụng bản sao PHP Rails (không nằm ngoài sự lựa chọn), được gọi là Symfony, (rõ ràng là khung PHP tốt nhất), tôi nhận thấy rằng đó là bản sao của Rails. Tôi nghĩ Symfony là ngu ngốc và điều đó (SensioLabs là một doanh nghiệp thông minh) bởi vì Rails đã tồn tại.

Ngoài các dự án nguồn mở kiếm được tiền, tôi không hiểu tại sao mọi người tạo Rails nhân bản trong PHP, khi Rails đã tồn tại. Tại sao không sử dụng Rails? Chắc chắn DHH đã mã hóa Rails với Ruby vì một lý do.

Sử dụng Symfony, tôi nhận thấy rằng một cái gì đó không hoàn toàn đúng nhưng tôi không biết nó là gì. Tôi đã học Rails thông qua một cuốn sách điện tử Sitepoint tào lao và quên nó đi, vì vậy bây giờ tôi đang học nó thông qua ebook của PragProg và tôi thích cuốn ebook đó. Tôi hoàn toàn không biết Rails, nhưng tôi hiểu cách thức hoạt động của nó (nhờ Symfony). Tôi rất thích hoàn thành việc thông qua toàn bộ ebook để tôi có thể tạo 2 ứng dụng Rails. Tôi nhớ Rails thú vị hơn Symfony khi sử dụng ebook Sitepoint mà tôi không thể hoàn thành và điều đó không liên quan gì đến cú pháp đẹp của Ruby.

  1. Tại sao Rails được mã hóa trong Ruby?
  2. Điều gì về bản sao PHP Rails, không cảm thấy đúng?
  3. Rails đang làm gì vậy, Rails nhân bản không làm gì?

4
Ruby là nước sốt bí mật của Rails.
Chiron

4
Meh, tôi không thể thấy một cái gì đó được gọi là Ruby on Railsđang được triển khai trong PHP.
thay thế

2
Nếu bộ nhớ phục vụ, tôi đã nghe một podcast một lần trong đó DHH mô tả anh ấy đã chọn Ruby. Tôi nghĩ đó là tập phim Cuộc sống của nhà phát triển này.
Adam Lear

2
@Chris G - Tôi thấy điều đó thật khó tin. Khoảng cách giữa các ngôn ngữ cơ bản là rất lớn - Ruby là một người thông minh và suy nghĩ toàn diện thông qua ngôn ngữ lập trình, PHP là một bản hack chồng chất lên các bản hack khác với một loạt các tính năng của Ruby bị hack vào cuối game. PHP rất dễ lưu trữ và hoạt động tốt hơn, nhưng nếu đó là những ưu tiên của DHH thì có lẽ anh ta đã không chọn Ruby trở lại khi anh ta làm vậy. PHP chưa bao giờ thực sự được thiết kế để trở thành một ngôn ngữ lập trình và những người quan tâm đến lý thuyết ngôn ngữ / CS có xu hướng không quan tâm đến nó.
glenatron

2
@Glenatron Không ai trong số đó ngăn bất kỳ người dùng PHP thông minh nào viết các ứng dụng web đẹp, biểu cảm, hiện đại sử dụng các tính năng "Rails" chính như ORM. Ý tưởng đóng cửa chỉ được thêm vào PHP gần đây sẽ không ngăn cản bất cứ ai sử dụng chúng!
Chris G.

Câu trả lời:


26

1.) Tại sao Rails được mã hóa trong Ruby?

Rails ban đầu được trích từ công trình của DHH trên Basecamp, được viết bằng Ruby. Theo thời gian, các nhà phát triển cốt lõi của Rails tiếp tục trích xuất và phát triển nhiều tính năng hơn vào Rails, và cuối cùng nó đã trở thành một khuôn khổ chính thức.

Vì Ruby đã phát triển về sức mạnh và tính biểu cảm trong những năm qua, nó tiếp tục phù hợp với khung công tác, do đó, nó cũng tiếp tục là ngôn ngữ được viết bằng. (Plus, "C # on Rails" hoặc "Java on Rails" không 't có sự ám chỉ tốt đẹp đó.)

2.) Điều gì về bản sao PHP Rails, điều đó không đúng?

Điều này thực sự không thể được trả lời một cách khách quan, nhưng có lẽ là vì # 1. Hành vi và nội bộ của Rails tận dụng nhiều tính năng tồn tại trong Ruby và khó có thể sao chép chính xác ở nơi khác. Ví dụ, PHP không có siêu dữ liệu, mà Rails phụ thuộc nhiều vào.

Ngoài các dự án nguồn mở kiếm được tiền, tôi không hiểu tại sao mọi người tạo Rails nhân bản trong PHP, khi Rails đã tồn tại. Tại sao không sử dụng Rails? Chắc chắn DHH đã mã hóa Rails với Ruby vì một lý do.

Bởi vì không phải ai cũng có thời gian, ngân sách hoặc thiên hướng để học một ngôn ngữ mới chỉ để họ có thể học một khuôn khổ mới.

Theo cách tương tự, nếu hóa ra Brainfuck có khung web rất phổ biến, điều đó có nghĩa là bạn nên từ bỏ các khách hàng chưa viết ứng dụng của họ trong Brainfuck? Đó không phải là cách để điều hành một doanh nghiệp.

Tôi biết PHP và Ruby.

Các câu như "Tôi biết cả PHP và Ruby" cho thấy rằng bạn có thể chưa hoàn toàn đánh giá cao độ sâu, sự phong phú và tính cách riêng của một trong hai.


(Được sao chép từ stackoverflow.com/questions/6972992/ cho hậu thế.)
John Women'sella

Tôi tin rằng một nỗ lực ban đầu tại Basecamp đã được thử trong PHP và đã không đạt được sự hài lòng của DHH. Do đó, Rails được mã hóa trong Ruby.
Bryan M.

3
+1 - có một thời gian để học một ngôn ngữ mới - một dự án ngay lập tức có tầm quan trọng không phải là một trong những.
JeffO

PHP không có siêu dữ liệu ngoài hộp, bạn đã đúng. Tuy nhiên, vì PHP 5.3 có thể thực hiện chức năng siêu dữ liệu.
Chris G.

6

1. Tại sao Rails được mã hóa trong Ruby?

Có một lần quyết định lập trình nó trong ruby. Quyết định thiết kế này kéo dài cho đến ngày hôm nay.

2. Điều gì về bản sao PHP Rails, điều đó không đúng?

Đó là một cảm giác mà bạn có, thật khó để nói về một wesbite như thế này. Bạn có thể muốn hỏi một người thân mật hơn với bạn và biết nhiều hơn về cảm xúc của bạn hoặc thậm chí chia sẻ chúng.

3. Rails đang làm gì, Rails nhân bản không làm gì?

Một bản sao chính xác của Rails thực hiện theo định nghĩa mọi thứ mà Rails làm. Vì vậy, điều này rất có thể sẽ phụ thuộc vào cách chính xác một bản sao đã được thực hiện. Các phần khác nhau sẽ dẫn đến hành vi khác nhau. Ví dụ: để dịch sang ngôn ngữ khác, ngôn ngữ kia có thể không có tính năng ngôn ngữ Rails on Ruby đang sử dụng, điều này rất có thể sẽ dẫn đến sự khác biệt trong thiết kế và sau đó là về hành vi.


6

Tại sao Rails được mã hóa trong Ruby?

Ruby cho phép lập trình meta rất nhiều và cú pháp cho phép của nó cho phép bạn tạo các API đẹp, trông không giống như các cuộc gọi phương thức.

Ví dụ, ActiveRecord, Bản đồ quan hệ đối tượng của Rail, thực hiện tốt cả hai điều này. Đầu tiên, nó sử dụng khả năng lập trình meta của Ruby để tạo các phương thức nhanh tương ứng với tên trường trong cơ sở dữ liệu.

Thứ hai, ActiveRecord cho phép bạn khai báo các liên kết đến các đối tượng: Personcó thể has_many :books. Điều đó has_many trông giống như một tuyên bố, nhưng nó thực sự là một cuộc gọi phương thức. (Ruby đọc cái này như has_many(:books).

Ruby cũng có một mục tiêu để làm cho cuộc sống lập trình viên có kinh nghiệm dễ dàng hơn.

Ruby làm cho những điều này dễ dàng, vì vậy mọi người làm chúng. Các ngôn ngữ khác làm cho những thứ này khó hơn, hoặc những thứ ma thuật như thế này rõ ràng không phải là một phần của văn hóa. Django, khung công tác lớn của Python, có ma thuật meta ít hơn nhiều vì Python không dễ dàng và Python là ngôn ngữ dựa vào "rõ ràng là tốt hơn ngầm". (Tôi không biết nhiều về văn hóa PHP hoặc các khung web ở bên đó.)

Tôi nghĩ đây là một số lý do khiến DHH yêu Ruby và anh ấy sử dụng các tính năng ngôn ngữ này với sức mạnh trong Rails.


Tất cả đều rất tốt khi sử dụng bảng điều khiển để thực hiện một số giàn giáo trong Rails, nhưng các tính năng như vậy tồn tại trong Symfony. Bạn có thể chỉ cho tôi nơi tôi có thể tìm thấy bằng chứng về cách ngôn ngữ của Ruby phục vụ cho lập trình meta không? Lớp học không nên đủ?
desbest

1
Các lập trình viên thực dụng có một cuốn sách: Metaprogramming in Ruby, ngoài việc giới thiệu về Metaprogramming trong Ruby - còn dành khoảng 50 trang nói về siêu lập trình trong Rails. Tôi không nghĩ đơn giản là các lớp là đủ: ví dụ, đôi khi siêu lập trình xảy ra thông qua chuỗi phương thức ("khi bạn gọi hàm này, thay vào đó hãy gọi phiên bản hàm của tôi - có thể gọi hoặc không gọi gốc"). Đây là mẫu siêu lập trình trong Ruby (giúp Rails dọn dẹp và dễ sử dụng hơn)
RyanWilcox

Tôi sẽ phải đọc rằng một khi tôi đã thành thạo Rails. Tất cả nghe có vẻ khó hiểu.
desbest

Tôi chỉ muốn đề cập rằng PHP cũng có các giải pháp ORM. Nó không phải là thứ dành riêng cho Ruby.
Chris G.

1
Có một triển khai PHP của ActiveRecord được gọi là phpActiveRecord. Nó sử dụng tất cả những điều này. Tuy nhiên, trở lại khi DHH xây dựng Rails, PHP là một chặng đường dài để có thể làm điều đó.
Jamon Holmgren

2

Tại sao không sử dụng đường ray?

Tôi sẽ cung cấp một số quan điểm như là một người dùng của cả hai. Tôi có chương trình sở thích trong Ruby / Rails và tôi chỉ sử dụng PHP trong công việc. (Lưu ý: Tôi không loại bỏ Ruby / Rails như một môi trường sở thích, đây chỉ là cách tôi chọn sử dụng nó.)

Nhiều người coi Ruby / Rails là chén thánh của sự phát triển trang web vì bandwagon nổi tiếng và vì nó 'khác biệt'. Theo nhiều cách, nó chắc chắn là không đủ để loại bỏ PHP như một thứ gì đó cổ xưa.

Symfony không cảm thấy giống như Rails vì PHP không thiếu một số đường cú pháp mà rails cung cấp. PHP đang cải thiện về vấn đề này và việc bổ sung các lần đóng cửa của 5.3 đã tạo ra sự khác biệt trong số nhiều người trong chúng ta viết mã.

Đừng hiểu lầm tôi, tôi yêu Ruby và tôi yêu Rails. Nhưng khi bạn không muốn đối phó với việc lưu trữ trang web phức tạp hoặc đắt tiền hoặc lo lắng về hiệu suất hoặc bị 'chảy máu', thì ngày nay PHP vẫn cực kỳ phù hợp và các khung công tác cũng rất tốt.

  • Redbean cung cấp chức năng ORM tuyệt vời với PHP. Học thuyết, Idiorm / Paris và Propel cũng vậy.
  • Symfony2 và CakePHP cung cấp một khung phát triển web cồng kềnh tương tự như Rails.
  • CodeIgniter cung cấp một giải pháp khung đầy đủ mà không cần phình.
  • Slim cung cấp một khung giống như sinatra.

Tôi nghĩ rằng việc sử dụng các bản sao của PHP không được 'cảm thấy đúng' là sai lầm bởi vì chúng không phải là bản sao và chúng sẽ không giống như Rails. Tìm hiểu để đắm chìm trong sự đơn giản và quen thuộc của một giải pháp PHP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.