Почему в Ruby есть Rails, а в Python нет центральной платформы? - PullRequest
8 голосов
/ 02 января 2009

Это (n) исторический вопрос, а не вопрос сравнения языков:

В этой статье за ​​2005 год говорится об отсутствии единой центральной платформы для Python. Для Ruby этот фреймворк явно Rails. Почему, с исторической точки зрения, это произошло для Ruby, но не для Python? (или это произошло, и этот фреймворк - Django?)

Кроме того, гипотетические вопросы: был бы Python более популярным, если бы у него был один, хороший фреймворк? Будет ли Ruby менее популярным, если у него нет центральной структуры?

[Пожалуйста, избегайте дискуссий о том, лучше ли Ruby или Python, но он слишком открыт, чтобы отвечать.]

Редактировать: Хотя я думал, что это очевидно, я не говорю, что другие платформы не существуют для Ruby, а скорее, что большая с точки зрения популярности - это Rails , Кроме того, я должен отметить, что я не говорю, что фреймворки для Python не так хороши (или лучше, чем) Rails. У каждого фреймворка есть свои плюсы и минусы, но, похоже, Rails, как говорит Бен Бланк в одном из комментариев ниже, превзошел Ruby по популярности. Там нет примеров этого на стороне Python. ЗАЧЕМ? Вот в чем вопрос.

Ответы [ 11 ]

35 голосов
/ 02 января 2009

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

У Python, с другой стороны, была совсем другая кривая принятия. До Rails Python использовался гораздо шире, чем Ruby, и поэтому имел множество конкурирующих веб-фреймворков, каждая из которых медленно создавала свои группы интересов. Django проделал хорошую работу по консолидации поддержки и стал лидером в мире веб-фреймворков Python, но он никогда не будет One True Framework просто из-за того, как развивалось сообщество.

7 голосов
/ 03 января 2009

Реальный технический ответ заключается в том, что в Python есть три основных подхода к веб-разработке: один - на основе CGI, где приложение создается как старое одноразовое приложение Perl для запуска через CGI или FastCGI, например, Trac ; затем есть Zope , который представляет собой причудливую инфраструктуру с собственной концепцией БД, странной ошибочной концепцией разработки программного обеспечения через Интернет и т. д. (но Plone все еще довольно популярен ); и затем есть Django (и Turbogears , и т. д.), который руководствуется той же философией, которая необходима только для инструментов, что и Rails (можно утверждать, кто пришел первым или кто сделал это лучше) , Многие люди, вероятно, согласятся с тем, что подход Django / Rails / CakePHP лучше, чем более старые подходы, но в более старом языке Python имеет гораздо больше устаревших фреймворков, которые все еще пытаются развиваться и оставаться актуальными. Эти фреймворки будут зависеть, потому что для них уже есть вклад разработчика. Например, в ретроспективе многие люди, вероятно, скажут, что Zope (особенно ZODB) был ужасной ошибкой, но Zope 3 намного лучше, чем Zope 2, и уже есть целые компании, построенные на технологиях Zope.

7 голосов
/ 02 января 2009

Я не думаю, что было бы правильно характеризовать Rails как "единую" центральную "среду Ruby.

Другие платформы для Ruby включают в себя Merb, Camping и Ramaze.

... что делает вопрос недействительным.

5 голосов
/ 02 января 2009

Я согласен с Недом. Могу поспорить, что более 90% установок Ruby предназначены не для каких-либо других целей, кроме запуска Rails. Rails доминирует в Ruby - нет ни одного приложения, которое доминирует над Python, главным образом потому, что сообщество Python несколько больше, чем сообщество Ruby.

5 голосов
/ 02 января 2009

Помните, что Ruby существовал долгое время до того, как был создан Rails. Согласно Википедии, Ruby был создан в середине 90-х годов; Rails появился только в 2004 году. Ruby - это просто язык, который Дэвид Ханссон выбрал для Rails.

И да, я бы сказал Ruby для Rails, как Python для Django .

5 голосов
/ 02 января 2009

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

Итак, вопрос на самом деле: «Почему Дэвид Ханссон решил написать Rails на Ruby, а не на Python?»

2 голосов
/ 03 января 2009

Я должен согласиться с тем, что Django по сути является эквивалентом Rails для Python. Почему это заняло так много времени? Простой ответ - слишком много вариантов.

В Python существует множество систем запросов / ответов, переписывателей URL-адресов, ORM, языков шаблонов и т. Д., В которых можно создать веб-стек в десятках различных конфигураций. Фактически, именно это и делают Pylons и TurboGears, обеспечивая надежный, предсказуемый стек для создания веб-приложений MVC.

То, что Django сделал по-другому, они заключили в капсулу все. Вместо того, чтобы идти по пути компонентов, они построили одну смежную систему. Они создали свой собственный ORM, свой собственный язык шаблонов, свою собственную систему промежуточного программного обеспечения и т. Д. Они пришли к выводу, что такой единой системы для Python не было.

2 голосов
/ 02 января 2009

Будет ли ruby ​​менее популярным без Rails? совершенно.

Будет ли Python более популярным с одним настоящим фреймворком? Вы имеете ввиду в отличие от нескольких? Может быть, кто знает. В любом случае большинство согласны с тем, что Django - это очень хорошая основа.

Почему исторически это случилось с Руби? Потому что DHH выбрал Ruby после проведения собственных исследований.

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

1 голос
/ 02 января 2009

Питон - не пони с одним трюком. Поэтому для него нет единой «центральной структуры». Многие люди впервые услышали о Python как о «другом хорошем языке OO» или об одном из многочисленных применений, к которым он был применен.

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

0 голосов
/ 19 мая 2010

Ознакомьтесь с этой статьей на , почему мы никогда не увидим Python-on-Rails . Автор приводит некоторые основные причины, по которым Python никогда не имел и никогда не будет центральной платформы. Я мог бы добавить, что в Java его тоже нет, и по тем же причинам.

По словам автора, Rails строго привязан к своей "реализации", которой является Ruby. Rails был принят многими разработчиками, и Ruby был только частью этого. Rails отлично работает на Ruby (или Ruby, как Groovy), но, что более важно, как говорят многие другие ответы, Rails проложил путь к принятию Ruby.

Вот почему Rails-for-Python не будет работа, или, по крайней мере, что люди имеют был сосредоточен на Rails не правильный. Это не о реализация или качество рамки, это о структуре принятие. Речь идет о сдаче рамки впереди, и реализация в спину - даже если это не разработчики Rails намерения (хотя, возможно, они умный и это было их намерение).

По сути, вы не можете собрать кучку любящих язык людей, собравшихся вокруг одной рамки. Что касается Java, то, хотя Spring очень популярен, он не является Rails с точки зрения популярности в сообществе Java. В зрелом сообществе разработчики имеют свои собственные представления о том, какие метафоры работают, а какие нет. Это , поэтому Rails ведет к Ruby, а не наоборот (как правило, в основном, не во всех случаях).

...