Почему Rails был написан на Ruby? [закрыто]

9

Я знаю PHP и Ruby.

Используя клон PHP Rails (не исключено), называемый Symfony (который, очевидно, является лучшим фреймворком PHP), я заметил, что это клон Rails. Я думаю, что Symfony глуп и так (SensioLabs - умный бизнес), потому что Rails уже существует.

Помимо проектов с открытым исходным кодом, которые приносят деньги, я не понимаю, почему люди делают клоны Rails в PHP, когда Rails уже существует. Почему бы не использовать Rails? Конечно, DHH кодировала Rails с Ruby по какой-то причине.

Используя Symfony, я замечаю, что что-то не совсем правильно, но я не знаю, что это такое. Я изучил Rails через дерьмовую электронную книгу Sitepoint и забыл ее, так что теперь я изучаю ее через электронную книгу PragProg, и я люблю эту книгу. Я не полностью знаю Rails, но я понимаю, как это работает (спасибо Symfony). Я хотел бы закончить через всю книгу, чтобы я мог сделать 2 приложения Rails. Я помню, что Rails был более забавным, чем Symfony, используя электронную книгу Sitepoint, которую я не смог закончить, и это не имело ничего общего с красивым синтаксисом Ruby.

  1. Почему Rails написан на Ruby?
  2. Что такого в PHP-клонах Rails, которые не кажутся правильными?
  3. Что делает Rails, чего не делают клоны Rails?
desbest
источник
4
Рубин - это секретный соус Rails.
Хирон
4
Мех, я не вижу, чтобы что-то называлось Ruby on Railsреализованным в PHP.
альтернатива
2
Если память не изменяет, я однажды услышал подкаст, где, как описал DHH, он выбрал Ruby. Я думаю, что это был эпизод из жизни этого разработчика.
Адам Лир
2
@Chris G - в это невероятно трудно поверить. Разрыв между базовыми языками огромен: Ruby - это умный и всесторонне продуманный язык программирования, PHP - это взлом, взломанный другими хакерами, с кучей функций Ruby, которые были взломаны в конце игры. PHP прост в размещении и работает лучше, но если бы это были приоритеты DHH, он, вероятно, не выбрал бы Ruby обратно, когда сделал это. PHP никогда не был предназначен для того, чтобы быть языком программирования, и люди, которые заботятся о теории языка / CS, как правило, не заинтересованы в этом в результате.
Гленатрон
2
@Glenatron Ничто из этого не мешает любому интеллектуальному пользователю PHP писать красивые, выразительные, современные веб-приложения, использующие ключевые функции Rails, такие как ORM. Идея, что замыкания были добавлены в PHP только недавно, не остановит их использование!
Крис Г.

Ответы:

26

1.) Почему Rails написан на Ruby?

Rails был первоначально извлечен из работы DHH над Basecamp, которая была написана на Ruby. Со временем разработчики ядра Rails продолжили извлекать и развивать больше функций в Rails, и в конечном итоге он стал полноценной средой.

С тех пор, как Ruby приобрел силу и выразительность за эти годы, он по-прежнему хорошо подходил для фреймворка, поэтому он также продолжает оставаться языком, на котором он написан. (Плюс, "C # on Rails" или "Java on Rails" не У меня будет хорошая аллитерация.)

2.) Что такое клоны PHP Rails, которые не чувствуются правильно?

На это нельзя реально ответить объективно, но это, вероятно, из-за # 1. Поведение и внутренности Rails используют многие функции, которые существуют в Ruby, и их было бы сложно воспроизвести точно в другом месте. Например, в PHP нет метаклассов, от которых сильно зависит Rails.

Помимо проектов с открытым исходным кодом, которые приносят деньги, я не понимаю, почему люди делают клоны Rails в PHP, когда Rails уже существует. Почему бы не использовать Rails? Конечно, DHH кодировала Rails с Ruby по какой-то причине.

Потому что не у всех есть время, бюджет или желание изучать новый язык только для того, чтобы они могли выучить новую структуру.

По аналогии, если выяснилось, что у Brainfuck есть очень популярный веб-фреймворк, означает ли это, что вы должны отказаться от своих клиентов, которые не написали свои приложения в Brainfuck? Это не способ вести бизнес.

Я знаю PHP и Ruby.

Такие выражения, как «Я знаю как PHP, так и Ruby», предполагают, что вы, возможно, еще не в полной мере оценили глубину, богатство и специфические особенности обоих.

Джон Феминелла
источник
(Воспроизводится с stackoverflow.com/questions/6972992/… для потомков.)
Джон Феминелла,
Я полагаю, что первоначальная попытка Basecamp была предпринята в PHP, но не принесла удовлетворения DHH. Следовательно, Rails был закодирован в Ruby.
Брайан М.
3
+1 - есть время, чтобы выучить новый язык - немедленный проект любой важности не является одним из.
JeffO
PHP не имеет метаклассов из коробки, вы правы. Однако начиная с PHP 5.3 можно реализовать функциональность метакласса.
Крис Г.
6

1. Почему Rails написан на Ruby?

Когда-то было решение запрограммировать его на ruby. Это дизайнерское решение длится до сегодняшнего дня.

2. Что такого в клонах PHP Rails, которые не кажутся правильными?

У тебя такое чувство, что трудно сказать о таком укусе, как этот. Возможно, вы захотите спросить человека, который более близок с вами и знает больше о ваших чувствах или даже делится ими.

3. Что делает Rails, чего не делают клоны Rails?

Точный клон Rails делает по определению все, что делает Rails. Так что это, скорее всего, будет зависеть от того, как именно был сделан клон. Различные части приведут к разному поведению. Например, для перевода на другой язык другой язык может не иметь языковых возможностей, которые использует Rails на Ruby, что, скорее всего, приведет к различиям в дизайне, а затем и в поведении.

hakre
источник
6

Почему Rails написан на Ruby?

Ruby позволяет много метапрограммировать, и его допустимый синтаксис позволяет вам создавать хорошие API, которые совсем не похожи на вызовы методов.

Например, ActiveRecord, Object Relational Mapper Rail, хорошо выполняет обе эти функции. Во-первых, он использует метапрограммирующую способность Ruby для создания методов на лету, соответствующих именам полей в базе данных.

Во-вторых, ActiveRecord позволяет вам объявлять ассоциации с объектами: Personмощь has_many :books. Это has_many выглядит как объявление, но на самом деле это вызов метода. (Руби читает это как has_many(:books).

У Ruby также есть цель облегчить жизнь опытного программиста.

Ruby облегчает эту задачу, поэтому люди делают это. Другие языки усложняют это, или подобные магические вещи явно не являются частью культуры. Django, мега-фреймворк Python, имеет гораздо меньше мета-магии, потому что это не так просто в Python, и Python, поскольку язык склоняется к «явное лучше, чем неявное». (Я не знаю много о культуре PHP или веб-фреймворках на этой стороне.)

Я думаю, что это некоторые из причин, по которым DHH влюбился в Ruby, и он мощно использует эти языковые возможности в Rails.

RyanWilcox
источник
Все хорошо использовать консоль для создания некоторых лесов в Rails, но такие функции существуют в Symfony. Можете ли вы указать мне, где я могу найти доказательства того, как язык Руби обслуживает метапрограммирование? Разве не должно быть достаточно классов?
desbest
1
У прагматичных программистов есть книга «Метапрограммирование на Ruby», в которой, помимо того, что она представляет собой введение в метапрограммирование на Ruby, также посвящено около 50 страниц, посвященных метапрограммированию в Rails. Я не думаю, что просто классов достаточно: например, иногда метапрограммирование происходит через цепочку методов («когда вы вызываете эту функцию, вместо этого вызывайте мою версию функции - которая может вызывать или не вызывать оригинал»). Это шаблон метапрограммирования в Ruby (который Rails очищает и упрощает использование)
RyanWilcox
Я должен прочитать это, как только я освоил Rails. Все это звучит запутанно.
desbest
Я просто хотел бы отметить, что PHP также имеет решения ORM. Это не то, что является эксклюзивным для Ruby.
Крис Г.
1
Существует PHP-реализация ActiveRecord, которая называется phpActiveRecord. Он использует все эти вещи. Однако, когда DHH создавал Rails, PHP был далек от того, чтобы сделать это.
Хамон Холмгрен,
2

Почему бы не использовать рельсы?

Я предложу некоторую перспективу как пользователь обоих. Я увлекаюсь программированием на Ruby / Rails и использую PHP исключительно на работе. (Примечание: я не считаю Ruby / Rails средой для хобби, я просто использую ее.)

Многие люди рассматривают Ruby / Rails как святой Грааль разработки веб-сайтов из-за популярности платформы и потому, что она «другая». Во многих отношениях, конечно, этого недостаточно, чтобы отклонить PHP как нечто древнее.

Symfony не похож на Rails, потому что PHP не хватает синтаксического сахара, который предоставляет rails. PHP улучшается в этом отношении, и добавление замыканий в 5.3 привело к тому, что многие из нас пишут код.

Не поймите меня неправильно, я люблю Ruby и я люблю Rails. Но когда вы не хотите иметь дело со сложным или дорогостоящим хостингом веб-сайтов или беспокоиться о производительности или о «непревзойденном качестве», PHP по-прежнему чрезвычайно актуален сегодня, и его фреймворки также очень хороши.

  • Redbean предлагает отличную функциональность ORM с PHP. То же самое касается Доктрины, Идиорма / Парижа и Пропеля.
  • Symfony2 и CakePHP предлагают раздутую среду веб-разработки, похожую по духу на Rails.
  • CodeIgniter предлагает полное каркасное решение без раздувания.
  • Slim предлагает синатра-подобные рамки.

Я думаю, что ваша намека на то, что клоны PHP rails не «чувствуют себя хорошо», ошибочна, потому что они не клоны и не будут такими же, как Rails. Научитесь греться на простоте и привычности решения PHP.

Крис Г.
источник