Ruby

индекс
129,59

Фанаты Ruby on Rails



Внутри перевод статьи из персонального блога Криса Шифлетта (Chris Shiflett).

Крисс Шифлетт – PHP-разработчик. В своей статье он рассуждает на тему того, что Ruby On Rails является конкурентом не PHP, а скорее ASP.NET и J2EE, так как играет с ними на одном поле.


Обновление: Jeff Moore написал неопровержимый аргумент, предполагающий, что Ruby On Rails специально для flexies.

Я рад слышать весь этот шум вокруг Ruby on Rails. Я всегда был сторонником открытого программного обеспечения, и Ruby (особенно Ruby on Rails) - это ещё одно перо в кепке. Не побоюсь сказать - Я доволен, что Ruby on Rails, существует.

Я думаю, что хорошо поддерживать некоторую перспективную технологию и многие фаны Ruby более чем просто фанаты. Ruby on Rails - нишевый продукт, и хотя все признаки указывают на то, что его популярность быстро растёт, несколько преждевременно думать о замене существующих инструментов на Ruby on Rails. Фактически, история показала, что технологии могут успешно сосуществовать, даже если они предназначены для решения одних и тех же задач. Успех Рельсов не зависит от проблем других технологий.

Как и Andi, я не вижу Рельсы в качестве прямого конкурента PHP, но мои рассуждения на этот счёт несколько иные. Обе технологии направлены на решение сходных задач, тем не менее их идеологические основы сильно отличаются. Рельсы более похожи на J2EE, чем на PHP. Те кто предпочитает одно другому, просто думают иначе.

Это довольно сложно, но я всё же постараюсь объяснить свою мысль. Для этого мне потребуется привести некоторые обобщения, которые не всегда точны и полезны. Тем не менее, я думаю определение трендов может помочь нам понять направленность групп людей. Скажем интернет-разработчики разношёрстная группа, но я считаю, что вполне осуществимо их разделение на основе пристрастия к разным технологиям:

  • гибкие и мощные
  • структурированные и организованные

Безусловно эти признаки не являются абсолютно полными, но в них присутствует некий баланс. Итак, тех кто предпочитает "гибкие и мощные" технологии назовём - flexies. Их основные языки программирования: C, C++, Perl и PHP. Тех же кто предпочитает "структурированные и организованные", назовём - stiffies. Их любимые инструменты: Java, ASP.NET и Rails. Flexies видят stiffies программистами тратящими больше времени на обдумывание планов нежели на непосредственное решение проблемы в коде. Stiffies же не в состоянии понять как flexies справляются с промышленными разработками. (Некоторые flexies понимают ценность структурирования и организации, но больше предпочитают свободный стиль).

Я думаю, что Java была бременем сетевой индустрии в течение многих лет. Апологеты Java пробовали объяснить мне, почему это - лучший выбор для сетевых разработок, но по правде говоря я так и не понял их позиции. Сетевое приложение, построенное прежде всего на Java технологии имеет тенденцию требовать большего количества разработчиков, большего количества денег, и большего количества времени. Готовый продукт (если есть готовое изделие) имеет тенденцию быть нестандартным. Несомненно, некоторые разработчики могут делать великолепные сетевые продукты на Java, и MacGyver способен сделать бомбу из пластинки жевательной резинки. Я же способен лишь на жевачку.

Rails позволяют смешивать функции предлагая stiffies превосходный инструмент для интернет-разработок. Это так же снижает входную планку для тех кому PHP кажется сложным. Те кто предпочитает (или предпочтёт) Rails, а не PHP наверняка не использовали это язык или не были счастливы с ним. Думаю в ближайшем будущем мы увидим много новых и весьма совершенных интернет-приложений.

Тем не менее пока ещё рано говорить о том что Rails заменит Java. Он пока не готов. PHP сейчас намного более востребованный и используемый язык в бизнес сообществе, тем не менее многие организации уже видят чёткие недостатки этого инструмента. Эта технология разрабатывается уже больше десяти лет и тем не менее продолжает оставаться несовершенной.

Так же необходимо понимать что шумиха окружающая Ruby это ещё не популярность. Шумиха не постоянна. Ruby всё ещё не попал в TIOBE Top 20 — его популярность по прежнему ниже таких языков как Java, C, C++, PHP и Perl. Сейчас даже Ada и Fortran популярнее нежели Ruby.

Наверняка вы ожидаете узнать, что Rails используется во многих сайтах Web 2.0, ну тех про которые вы знаете что они проданы Yahoo за миллионы:

Сейчас всё ещё время flexies. Давайте посмотрим какие сайты ещё используют PHP:

Это только те Web 2.0 сайты которые мне известны своей популярностью. Я действительно ожидал увидеть множество ресурсов сделанных на Rails и вот вооружившись списком ресурсов написанных с применением Ruby (list of Rails applications) представляю вам список самых популярных их них:

Думаю из этих списков становится понятно, что хорошие сайты делают отличные разработчики, а не технологии. Вы знали на чём написаны все эти великолепные сайты? Правда? Не думаю.

Закончить свою статью я хочу там же где и начал — рассказывая про фанатов Rails. Я говорил с одним из них на днях и вот что он мне сказал:
Тебе необходимо быть больше чем просто опытный программист, что бы вникнуть в Rails.

Подобные аргументы всегда удивляли меня. Эта фраза может быть пересказана как "Эта технология лучше и если вы достаточно умны то поймёте это". В книге "Ruby on Rails site" Tim O'Reilly сказал по этому поводу:
Ruby on Rails превосходный язык снижающий порог вхождения в программирование.

Слова Тима позволяют лучше понять Rails. Лёгкость это хорошо.
Let's roll with that.

Над переводом трудились посмотреть профиль Vox, посмотреть профиль korowkin и посмотреть профиль korovkin
+14
25 июня 2007, 12:28
11

комментарии (95)

+5
kuk #
Я вообще считаю что нельзя сравнивать RoR с PHP. Ведь php - язык программирования, а RoR - framework.
+2
korovkin #
Процитирую:
Те кто предпочитает одно другому, просто думают иначе.
0
Biollante #
В PHP столько функционала, что он "сам себе фреймворк" :)
+1
timurv #
> Ruby всё ещё не попал в TIOBE Top 20
Автор лукавит что то. На данный момент на 10-ом месте.
0
vision #
статья не свежая, видимо.
0
Red_Hedgehog #
Глядя по ссылке - 1 февраля 2006 года, больше года назад.
+3
nini #
Ну да, оригинально приводить примеры приложений на RoR, сделанные раздработчиками самого RoR.
0
Nieri #
В принципе, согласен с тем что Рубин-на-Рельсах и РНР сревнивать не "кошерно".
Но все таки! С точки зрения agile dev'a руби "делает" РНР по многим статьям.
Писать на Руби для Вэба эффективно (быстро!) и экономически целесообразно!
В целом, даже дешевле чем на ПХП!

Ну, а качество готовых продуктов зачастую выше...
0
Spy #
довольно общие фразы...
0
rurumo #
Писать на Ruby? Или использовать фреймворки? Это разные вещи...
Для PHP есть также неплохие фреймворки, которые позволяют разработать несложный проект за 2 часа
0
Nieri #
Антон, ты под "неплохими фреймворками" зэнд имел ввиду?
Ну-ну. "Пром стандарт" ))
0
rurumo #
Неа, я имел в виду Symfony и Сake :)
0
kuk #
ну как минимум есть один яркий минус использования фреймворка - производительность и ресурсозатраность готового проекта, но в сочетании со скоростью разработки разработку типичных проектов использование RoR вполне обосновано
+1
Nieri #
С точки зрения менеджмента проекта - 100%
НЛО прилетело и опубликовало эту надпись здесь
0
kronos #
Во всяком случае пока у PHP нет фреймворка способного конкурировать с Ruby On Rails.
+1
avenu #
А Symphony и CakePHP.
0
c0r0ner #
Боюсь они не конкуренты. Отсают по функционалу. Нет нормальной ORM. Уступают в скорости
0
Biollante #
В каком месте Symfony отстает по функционалу от рельсов?
Про скорость - вообще несерьезно. Смотря как написать.
0
c0r0ner #
Посмотрите бенчмарки, Symfony+PHP ВСЕГДА медленней чем RoR в приблизительно одинаковых проектах. А недостаток Symfony является прямой причиной некой "корявости" PHP. Люди хотят скопировать RoR но язык не позволяет многое
0
Biollante #
Покажите бенчмарки, я вам расскажу почему они неправильные.
Symfony как раз не является попыткой склонировать Rails, это вы с другим перепутали.
0
avenu #
Хм, это такой юмор, когда сравниваются монстры Веб 2.0 и сайты от 37signals, которая и стоит за RoR. Собственно, естественно, 37 должны были сделать крутые сайты для хорошего примера =)
0
sotakone #
для какого примера? всем бы разработчикам фреймворков делать такие примеры для своих детищ.
RoR был "отжат" из Basecamp, т.е. по сути стал побочным продуктом разработки.
0
avenu #
Имхо, автор таким образом, намекнул на то, что на Ruby никакого разнообразия сайтов, кроме как сайта разработчиков RoR, и нету. А в противовес им поставлены крупнейшие сайты индустрии.
0
sotakone #
Ну, крупнейшие сайты индустрии разрабатывались тогда, когда RoRа еще даже в планах не было :). А список наиболее известных проектов на RoR всегда можно посмотреть тут.
0
Biollante #
Руби снижает порог вхождения? Уж явно не для начинающих с нуля программировать. PHP гораздо проще.
0
roTuKa #

никак не могу с вами согласиться. Руби понятнее. В PHP гораздо сложнее запомнить порядок аргументов.

К примеру, чтобы поменять «шило» на «мыло» в фразе, к примеру, «Мама ела шило» можно использовать две функции: str_replace и strtr (умалчиваем про preg_replace и его POSIX-собрата).

Вы, не глядя в справочник, сможете сказать, в каком порядке должны быть употреблены эти три строки?

0
avenu #
Хм, ну это уже вопрос того, пользоваться мануалом или нет. Имхо, важнее вообще вспомнить, как называется необходимая функция. Ну а за порядком аргументов дело не встанет. Более того, IDE вовсем решит этот вопрос всплывающими подсказками.
0
roTuKa #

А слабо вспомнить, чем разлицаются две эти функции, и какая конкретно наиболее подходит для поставленной задачи, и нужна ли вообще вторая? (-;

Не продуман PHP. Следующий проект на Ruby писать буду. На рельсах. Удобнее гораздо.

0
avenu #
Хм, но теже 37signals рекомендуют не париться над такими вопросами :) бери, что понравилось.
0
Biollante #
Дайте ссылку плиз, я ее всем показывать буду :)
0
Biollante #
А зачем его запоминать? Есть мануал и IDE с автокомплитом и подсказками синтаксиса.
0
rouss #
а если нет под рукой вашего IDE ? я вот помню, как это сделать на руби и без оного.
0
dbf #
"PHP string replace" в поисковик и ничего помнить не надо, если уж на то пошло.
НЛО прилетело и опубликовало эту надпись здесь
0
dbf #
Я не защищаю PHP, но вот в программирование "вообще без поисковика" не верю, уж простите.
0
Biollante #
Давайте еще возьмем вариант "нет интернета, пишем в нотепаде".
При нормальных рабочих условиях есть IDE, маны и доступ в интернет.
НЛО прилетело и опубликовало эту надпись здесь
0
Biollante #
А я могу PHP код читать проблем, и что дальше?
Статейки про убогость PHP пишутся убогими людьми, которые считают своим долгом обгавкать всё, что не устраивает лично их.
НЛО прилетело и опубликовало эту надпись здесь
0
Biollante #
Конкретика - это хорошо и интересно.
Какая конкретно функция в чистом руби выполняет работу 10 пхпшных?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
+1
Biollante #
$cities = array(
'spb'=>array('year'=>1703,'pop'=>'6m'),
'msk'=>array('year'=>1143,'pop'=>'10m'),
'bbrsk'=>array('year'=>1643,'pop'=>'1m'),
);

uasort($cities,create_function('$a,$b','return $a[\'year\'] - $b[\'year\'];'));
foreach($cities as $name=>$data) echo "$name\n";

Юзерфункцию можно и отдельно описать, здесь так написал чисто для компактности. В одну строчку уж не стал все совать, хотя и можно.
В мане глянул одну страницу, по описанию анонимных функций.
НЛО прилетело и опубликовало эту надпись здесь
–1
kronos #
Плохой пример) Вот лучше
def f
[2,3,4]
end
p f[1]
0
Biollante #
И что данный код делает?
0
kronos #
ну примерно следующее:
function f()
{
return array(2,3,4);
}
$f = f();
echo $f[1];
Только вот f()[1] PHP не по зубам :]
0
Biollante #
И что, данную разницу в синтаксисе можно назвать конкретным недостатком? Если соревноваться в краткости - так Perl вообще у всех выигрывает :)

Вот Chapaev привел вполне жизненный пример, оказалось что объем и читаемость кода на Руби и пхп в данном примере примерно одинаковы.
НЛО прилетело и опубликовало эту надпись здесь
0
Biollante #
Красиво, но по моему не из тех вещей, которые заставляют все бросать и бежать учить язык.

Если я правильно понял о чём там речь (некогда особо вчитываться) - на PHP тоже самое реализуется. Ну запись разве что подлинее будет.
0
Biollante #
И кстати
strtotime("+1 week 2 days 4 hours 2 seconds"); и так далее. И без классов можно :)
0
Fally #
Ррр.. В конце-концов, если человек умеет составлять алгоритмы, то забыв имя функции самому сортировку (_любую_) написать - минутное дело, а как возможность будет, то в доках взять норм. функцию и заменить ей своё творение (оригинальные функции быстрее работают чем самописные)
+1
rouss #
нет уж, Textmate хотя и не IDE, но все-таки мощный редактор. чего только стоят бандлы и автодополнение для синтаксических конструкций
0
sotakone #
чушь. незасранно... простите, чистому детскому мышлению подход Ruby гораздо более понятен, нежели PHP, бейсика и других процедурных языков.
0
Biollante #
К сожалению проверить не на ком, где ж сейчас незасра... с детским мышлением людей взять :)
0
shaliko #
Спасибо за перевод!
+1
bubuq #
Старая статья, небрежный перевод.
0
Vox #
Полностью согласен.
+1
Bright #
>Rails, а не PHP
>Rails заменит Java
Опять о фреймворке говорят как о языке... А ведь даже интерпретатор Ruby вам скажет:
"Ruby" != "RoR" # => true

:)
0
baranov #
"Вы знали на чём написаны все эти великолепные сайты? Правда? Не думаю."
Я знал, я знал!
+1
rouss #
А вообще, Автор, учите русский ! Меня просто потрясает, что человек, создавая текст, которое будет читать коммьюнити, даже не может проверить его на наличие нужных и ненужных запятых. Да и стилистика и согласование хромает.
+1
rouss #
блин, вот писал, и сам ошибся: не хромает, а хромают.
0
Vox #
Мы исправимся, правда ;)
0
MTonly #
и заодно к вопросу о. ;-)
0
Vox #
лучший выбор для сетевых разработок
Разве нужен дефис?
Посмотрите, я вроде везде поправил.
0
MTonly #

Нет, конечно, «сетевых» — обычное прилагательное. Дефис ставится в сложных словах между существительными:

  • PHP разработчик → PHP-разработчик;
  • Web 2.0 сайтах → Web-2.0-сайтах или сайтах Web 2.0.

Например, «интернет-разработчики» теперь написано верно.

0
Vox #
Спасибо. Исправил.
–2
antono #
К вопросу о свежих проектах on Rails: можете посмотреть http://formulamag.com

Боян, конечно, но статья протухла :)
НЛО прилетело и опубликовало эту надпись здесь
+2
lizendir #

Несомненно, некоторые разработчики могут делать великолепные сетевые продукты на Java, и MacGyver способен сделать бомбу из пластинки жевательной резинки. Я же способен лишь на жевачку.

Собственно, всю статью можно свести к этому фрагменту ) Фанаты Java написали бы, что рулит Java и привели бы кучу причин.

В 99% дискуссиях о PHP и рельсах, сравнивают язык и фреймворк. Не считаю такие сравнения корректными. Или сравнивайте два фреймворка или два языка. В любом случае абсолютного победителя не будет.

Мне же, как питоноводу, обидно, что в статье не упомянули Python. Про перл написали, а про питон нет. Это форменное безобразие! На питоне тоже есть несколько (именно несколько, а не один, как в руби) неплохих фреймворков (TurboGears,Pylons,Django), которые могут составить - и составляют - конкуренцию рельсам.
0
rouss #
почему бы вам самим не написать ? :)
я бы с удовольствием прочитал личные впечатления от сведущего человека, тем более ни о Джанго, ни о Пилонс ничего не знаю :-)
0
lizendir #
Если вам интересно, то смотрите ссылки на блоги русских питоноджанговодов в моём посте чуть ниже. Может быть и на хабре как-нить отпишусь, если будет настроение - я здесь не частый гость.
0
Martynovs #
Очень хочется узнать о фреймворках для питона, поскольку питон находится среди языков которых я не знаю, очень интересно поближе познакомиться с ним на примере веб приложений.
К тому же хочется написать полезняшку к trac'у, а как пока не знаю.
0
lizendir #
Пара полезнопросветительских ссылок в рунете:
http://softwaremaniacs.org - пожалуй, самый известный блог в рунете по тематике python, django. Очень качественный материал.
http://www.pyobject.ru/blog/tag/reviews - тут есть обзоры нескольких веб-фреймворков на python: TurboGears, Nevow, Django, Pylons
http://pydev.ru/community/ - агрегатор сообщений с русскоязычных блогов на тему django
0
dime #
А который из них язык? Вот JSP - это язык или фреймворк? :) Вот то-то и оно!
Personal Home Pages - вполне себе фреймворк. Только убогенький. А то, что на нём можно ещё и отдельно-стоящие скрипты писать... Ну можно. Но кто ж в здравом уме будет этим заниматься?
// Хотел написать, что нельзя воспользоваться стандартным способом с #!/usr/bin/php в начале файла, пошёл проверять, оказалось, что можно. :)
Но результаты получаюстя слегка удивительными
-------8
0
lizendir #
Пусть так - в любом случае, сравнивать PHP и рельсы это лукавство. Охото людям сравнивать, вот, пожалуйста: CakePHP (вроде бы по мотивам рельсов писался), симфония и т.д. Вот их и надо с рельсами сравнивать.
Насчёт невебовости PHP. Вроде как существует linux, где все скрипты решили на PHP писать. Есть ещё ряд областей, где PHP широко задействован. Например, в SEO: различные спамилки, грабилки, парсилки. Дорвеестроительство живёт и здравствует и PHP там юзают на ура ) А всё почему, потому что PHP-ков развелось как собак нерезаных. А неPHP-ки за еду работать не согласны.
0
dime #
Ну, лукавство :), ну так, назвался груздем, как говориться :).
Про линкус с php скриптами - да, это сильно. Только непонятно зачем. Да и... мой пример в предыдущем комментарии обрезался, попробую повторить:
=== файл test.php ===
#!/usr/bin/php
echo 'Hello all!';
echo "Hello all!\n";
=== конец файла test.php ===
sh test.php

попробуйте запустить и подивитесь результату. ;)
0
lizendir #
Ну, решили чуваки замутить язык для создания сайтов. Неплохая идея. Всё равно, я считаю, что PHP - это язык и ничего больше. Он и не должен быть чем-то больше, ибо он должен давать свободу для выражения своих желаний. Вот если бы пыховцы замутили в стандартной поставке модули типа ORM, шаблонизатора, контроллера запросов - вот тогда бы и можно было сравнивать PHP с рельсами )

Запустил пример:

[root@lorien /tmp]# sh test.sh
Hello all!
Hello all!\n

Результату подивился. Интересно, почему его так крючит )

Кстати, если вернуться к эхотагу, то, например, во FreeBSD набор утилит из порта portupgrade написан на ruby )
0
Martynovs #
Есть мнение что сайты написанные на PHP работают, разрабатываются быстро, просто (нужное подчеркуть).
Мне хочется узнать больше о фреймворках для PHP, о том как они устроены, и как их эффективно использовать, чтобы почерпнуть идей и опыт PHP сообщества.

Если ли среди хабралюдей способные написать статью (а может несколько) о том, какие фреймворки существуют для PHP, что они из себя представляют и как с ними работать?

Я сейчас разрабатываю проект на Ruby on Rails и в свою очередь готов писать о том, как устроены рельсы, как с их помощью решаются задачи, встающие перед разработчиком при написании сайта.
Чтобы сравнить Rails с фреймворками PHP и взглянуть на разные решения задач.
0
rouss #
напишите :-)
можно даже туториал )
ведь их мало, тем более на русском.
0
kuk #
могу тоже решение нескольких интересных задач подсказать по RoR
0
rouss #
если можете — делайте. почему вы только хвалитесь этим ?) Есть же специальный блог в конце концов, Ruby :-)
пишите !
0
kuk #
просто карма пока не позволяет, а так бы с удовольствием, заминусили меня, видно новых людей здесь не особо любят
0
rouss #
теперь позволяет
0
kuk #
спасибо, завтра обязательно напишу что-нибудь интересное
0
rouss #
отлично, обязательно прочитаю
0
Biollante #
Решения одинаковые - синтаксис разный.
НЛО прилетело и опубликовало эту надпись здесь
0
korovkin #
Я перевожу те статьи, которые считаю интересными и то, что она старая, не значит, что в ней нету смысла, друг мой.
0
melzpam #
kinokopilka.ru на нём пишется... довольно удобно
–1
symbix #
http://www.basecamphq.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.backpackit.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.writeboard.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.tadalist.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42

:)

да, я знаю, что на php только [псевдо]статическая морда. все равно забавно
0
rouss #
это откуда вообще ? :-)
0
symbix #
в phpinfo() [при включенной ini-настройке expose_php] отдаются две вшитые в php картинки, как раз по любому урлу с таким query_string. известный способ определить, что запрос обрабатыватся php :)

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