Чому Рейлс був написаний на Рубі? [зачинено]


9

Я знаю PHP та Ruby.

Використовуючи клон PHP Rails (не за вибором), який називається Symfony, (що, мабуть, найкраща рамка PHP), я помічаю, що це клон Rails. Я думаю, що Symfony дурний і це (SensioLabs - розумний бізнес), тому що Rails вже існує.

Крім проектів з відкритим кодом, які заробляють гроші, я не розумію, чому люди роблять Rails-клони в PHP, коли Rails вже існує. Чому б не використовувати Rails? Напевно DHH закодовано Рейки з Рубі чомусь.

Використовуючи Symfony, я помічаю, що щось не зовсім добре, але я не знаю, що це. Я дізнався Rails через електронну книгу Sitepoint і забув її, тому тепер я вивчаю це через електронну книгу PragProg, і я люблю цю книгу. Я не знаю повністю Rails, але я розумію, як це працює (завдяки Symfony). Я хотів би закінчити проходження цілої книги, тому я можу зробити 2 програми Rails. Я пам’ятаю, що Rails був веселіше, ніж Symfony, використовуючи книгу Sitepoint, яку я не зміг закінчити, і це не мало нічого спільного з гарним синтаксисом Ruby.

  1. Чому Rails закодований в Ruby?
  2. Що це за клони PHP Rails, які не відчувають себе правильно?
  3. Що таке Rails робить, що клони Rails не роблять?

4
Рубі - секретний соус Рейлів.
Хірон

4
Мех, я не бачу, щоб щось було названо Ruby on Railsреалізованим у PHP.
альтернатива

2
Якщо пам'ять служить, я одного разу почув подкаст, де DHH описав, що він вибрав Рубі. Я думаю, що це був цей епізод з життя цього розробника.
Адам Лір

2
@Chris G - мені в це надзвичайно важко повірити. Прогалина між основними мовами є величезною - Ruby - це розумна і всебічно продумана мова програмування, PHP - це хакер, нагромаджений на інших хаках, з купою функцій Ruby, зламаних наприкінці гри. PHP легко влаштовувати і виконує кращі результати, але якби це були пріоритети DHH, він, мабуть, не обрав би Рубі назад, як це зробив. PHP ніколи насправді не був розроблений як мова програмування, і люди, які переймаються теорією мови / CS, як правило, не захоплюються цим.
гленатрон

2
@Glenatron Ніщо це не заважає будь-якому інтелектуальному користувачеві PHP писати красиві, виразні, сучасні веб-програми, використовуючи ключові функції "Rails", такі як ORM. Ідея про те, що закриття були нещодавно додані до PHP, не забороняє нікому користуватися ними!
Кріс Г.

Відповіді:


26

1.) Чому Rails кодується в Ruby?

Рейки спочатку був витягнутий з Dhh роботи «S на Basecamp, яка була написана в Ruby. З часом основні розробники Rails продовжували видобувати та розробляти більше функцій у Rails, і з часом вона стала повноцінною основою.

Оскільки Рубі з роками зростала в силі та виразності, вона продовжувала добре підходити до рамки, тому вона також продовжує залишатися мовою, на якій написано. (Плюс, "C # на рейках" або "Java на рейках" не відповідає не маю такої приємної алітерації.)

2.) Що стосується клонів PHP Rails, які не відчувають себе правильно?

На це реально не можна відповісти об'єктивно, але це, мабуть, через №1. Поведінка та внутрішність Rails користуються багатьма особливостями, які існують у Ruby, і їх важко було б повторити саме деінде. Наприклад, PHP не має метакласів, від яких Rails сильно залежить.

Крім проектів з відкритим кодом, які заробляють гроші, я не розумію, чому люди роблять Rails-клони в PHP, коли Rails вже існує. Чому б не використовувати Rails? Напевно DHH закодовано Рейки з Рубі чомусь.

Тому що не кожен має час, бюджет чи схильність до вивчення нової мови, щоб вони могли навчитися новій основі.

За аналогією, якщо виявилося, що у Brainfuck була дуже популярна веб-основа, чи це означає, що вам слід відмовитися від своїх клієнтів, які не написали своїх заяв у Brainfuck? Це не спосіб вести бізнес.

Я знаю PHP та Ruby.

Висловлювання на кшталт "Я знаю і PHP, і Ruby" говорять про те, що ви, можливо, ще не повністю оціните глибину, багатство та ідіосинкратію будь-якої.


(Відтворено з stackoverflow.com/questions/6972992/… для нащадків.)
John Feminella

Я вважаю, що перша спроба Basecamp була зроблена в PHP, і це не спрацювало на задоволення DHH. Отже, Рейлс був закодований в Рубі.
Брайан М.

3
+1 - є час, коли можна вивчити нову мову - безпосередній проект будь-якого значення не є одним із.
JeffO

PHP не має метакласів поза вікном, ви праві. Однак, оскільки PHP 5.3 можливо реалізувати функцію метакласу.
Кріс Г.

6

1. Чому Rails закодований в Ruby?

Колись було прийнято рішення програмувати його в рубіні. Це дизайнерське рішення триває до сьогодні.

2. Що стосується клонів PHP Rails, які не відчувають себе правильно?

У вас таке відчуття, важко сказати на такому убогості. Можливо, ви захочете запитати людину, яка з вами є більш близькою і яка більше знає про ваші почуття або навіть ділиться ними.

3. Що Rails робить, що клони Rails не роблять?

Точний клон Rails робить за визначенням все, що робить Rails. Тож це, швидше за все, буде залежати від того, як саме був зроблений клон. Різні частини призведуть до різної поведінки. Наприклад, для перекладу на іншу мову, інша мова може не мати мовних особливостей, яку використовує Rails on Ruby, що, швидше за все, призведе до відмінностей між дизайном та поведінкою.


6

Чому Rails закодований в Ruby?

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

Наприклад, ActiveRecord, реляційний репертуар для об'єктів Rail, робить обидва ці речі добре. По-перше, він використовує метапрограмування Ruby для створення методів на ходу, що відповідають іменам полів у базі даних.

По-друге, ActiveRecord дозволяє вам оголошувати асоціації з об'єктами: Personмогутнє has_many :books. Це has_many виглядає як декларація, але насправді це виклик методу. (Рубі читає це як has_many(:books).

У Рубі також є мета полегшити життя досвідченого програміста.

Рубі робить це легко, тому люди роблять їх. Інші мови роблять це складніше, або такі магічні речі явно не є частиною культури. У Django, мега-рамці Python, є набагато менше мета магії, оскільки це не так просто в Python, а Python як мова схиляється до "явного краще, ніж неявного". (Я мало знаю про культуру PHP або веб-рамки на цій стороні.)

Я думаю, що це деякі з причин, що DHH закохався в Рубі, і він використовує ці мовні функції з силою в Rails.


Все це дуже добре, використовуючи консоль, щоб зробити кілька лісів у Rails, але такі функції існують у Symfony. Чи можете ви вказати мені, де я можу знайти докази того, як мова Рубі забезпечує метапрограмування? Чи не повинно вистачити занять?
дебют

1
Прагматичні програмісти мають книгу: Метапрограмування в Ruby, яка - крім того, що є вступом до метапрограмування в Ruby - також витрачає близько 50 сторінок, розмовляючи про метапрограмування в Rails. Я не думаю, що просто занять недостатньо: наприклад, іноді метапрограмування відбувається за допомогою ланцюга методів ("коли ви викликаєте цю функцію, замість цього викличте мою версію функції - яка може або не може викликати оригінал"). Це шаблон метапрограмування в Ruby (який Rails очищає та полегшує використання)
RyanWilcox

Мені доведеться прочитати, що раз освоїв Рейки. Це все звучить заплутано.
дебют

Я просто хотів би зазначити, що PHP також має рішення ORM. Це не є винятковою для Рубі.
Кріс Г.

1
Існує реалізація PHP ActiveRecord під назвою phpActiveRecord. Він використовує всі ці речі. Однак, коли DHH побудував Rails, PHP був далеко не в змозі зробити це.
Джеймон Холмгрен

2

Чому б не використовувати рейки?

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

Багато людей трактують Ruby / Rails як святий грааль розробки веб-сайтів через популярність тарілки та через те, що вона "інша". Багато в чому це, безумовно, але недостатньо, щоб відхилити PHP як щось древнє.

Symfony не відчуває себе Rails, тому що PHP не вистачає частини синтаксичного цукру, який надає рейл. PHP в цьому плані покращується, і додавання 5.3 закриття змінило значення в тому, скільки хто з нас пише код.

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.