avva: (Default)
[personal profile] avva
Запись будет интересна только программистам :-)

Я не понимаю прикола технологии Ruby on Rails. Объясните мне, пожалуйста, в чём тут дело?

  • Почему так много шума?
  • В чём состоит её новизна? Что вообще это такое, в двух словах и без buzzwords?
  • Действительно ли оно такое замечательное и для чего оно реально удобней и лучше альтернатив?
  • Почему так много шума?
Спасибо.

(я в общих чертах представляю себе, что такое Ruby, но никогда на нём не писал)

Date: 2005-12-05 12:44 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
Это очень качественный фреймворк с готовым ORM и кучей готовых удобных вещей. Не нужно писать самому систему пользователей. Не нужно писать самому обработку форм и тому подобное. Но главное, конечно ORM.

Плюс - очень удобно и качественно реализован MVC. Не нужно заморачиваться на парсинг request.

Собственно, дело не в языке Ruby. Для python существует Django с похожим подходом. Для PHP5 пишется много чего, но ограничения самого языка все-таки мешают.

Date: 2005-12-05 12:57 pm (UTC)
From: [identity profile] bobuk.livejournal.com
С похожим - это скорее не django а turbogears.

Date: 2005-12-05 12:59 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
О. Спасибо. Не видел такую. Обязательно посмотрю.

Но все же - почему django "не похожа"? :)

Date: 2005-12-05 12:59 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Более того, для python можно собрать несколько таких наборов из ORM + MVC; у меня сейчас используется PyDO2 + CherryPy + Cheetah, например. Есть ещё TurboGears, но он сырой очень.

Насколько я понял, ruby (которого я не знаю) позволяет и чуть ли не синтаксические конструкции задавать под предметную область (т.е. работать мета-языком), и как раз оттого ruby on rails позволяет писать крайне компактный и прозрачный в смысле предметной области код. Но сам не пробовал.

Date: 2005-12-05 05:22 pm (UTC)
From: [identity profile] olegs.livejournal.com
под предметную область - это интересно, потому что ничего подобного Magic я под Веб не видел, а надо бы.

Date: 2005-12-05 04:01 pm (UTC)
From: [identity profile] avva.livejournal.com
Большое спасибо. Правда, я очень слабо представляю себе, что такое ORM. Когда-то что-то читал и осталось впечатление нагромождения buzzwords. Сейчас зашёл на сайт, ему посвящённый, и увидел ещё больше buzzwords. Не могли бы вы объяснить в двух словах, используя конкретные термины?

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 04:06 pm (UTC) - Expand

(no subject)

From: [identity profile] neoromantic.livejournal.com - Date: 2005-12-05 04:06 pm (UTC) - Expand

(no subject)

From: [identity profile] raa.livejournal.com - Date: 2005-12-13 07:37 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-12-13 11:35 pm (UTC) - Expand

Date: 2005-12-11 06:02 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Остаётся, тем не менее, вопрос, какой прок применять ORM.

(no subject)

From: [identity profile] neoromantic.livejournal.com - Date: 2005-12-11 06:21 pm (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-11 06:27 pm (UTC) - Expand

(no subject)

From: [identity profile] neoromantic.livejournal.com - Date: 2005-12-11 06:30 pm (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-11 07:58 pm (UTC) - Expand

(no subject)

From: [identity profile] neoromantic.livejournal.com - Date: 2005-12-11 09:14 pm (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-11 10:00 pm (UTC) - Expand

Date: 2005-12-05 01:32 pm (UTC)
From: [identity profile] thornik.livejournal.com
Я могу ответить только на главный вопрос:

> Почему так много шума?

Из-за денек. :)

Как я понял с http://www.rubyonrails.org/ , новизны ТЕХНОЛОГИЧЕСКОЙ там нет никакой - тот же ASP, только с другим языком. А как пример частной реализации, ВОЗМОЖНО имеет хорошую среду с удобными вспомогательными функциями.

Авва, а вы программист или так, эрудит? :)

Date: 2005-12-05 01:50 pm (UTC)
From: [identity profile] avva.livejournal.com
Я, наверное, немножко эрудит, но деньги зарабатываю именно как программист.

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-05 02:19 pm (UTC) - Expand

Date: 2005-12-05 02:03 pm (UTC)
From: [identity profile] cmm.livejournal.com
> тот же ASP, только с другим языком.

я не великий спец в уеб-программизме, но для моего уха это звучит примерно как "Мерседес — это та же Волга, только с другим мотором". :)

я так себе понимаю, что ваятели сайтов — люди, вменяемыми "динамическими" языками неизбалованные ("Бейсик, PHP и Пёрл — вот мои инструменты!").

а тут вдруг симпатишный framework на вполне себе неидиоцком языке.  почему какой-нибудь питоновый framework не был распиарен раньше — вопрос интересный.  а Лисп со Смолтоком типа эзотерические слишком и мало кому интересны.  отсюда и шум.

(no subject)

From: [identity profile] polter.livejournal.com - Date: 2005-12-05 02:13 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 02:23 pm (UTC) - Expand

(no subject)

From: [identity profile] sobaker.livejournal.com - Date: 2005-12-05 04:23 pm (UTC) - Expand

(no subject)

From: [identity profile] skyer.livejournal.com - Date: 2005-12-13 07:07 pm (UTC) - Expand

(no subject)

From: [identity profile] polter.livejournal.com - Date: 2005-12-14 07:47 am (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-05 02:23 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 02:28 pm (UTC) - Expand

(no subject)

From: [identity profile] a-konst.livejournal.com - Date: 2005-12-05 02:51 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 02:58 pm (UTC) - Expand

(no subject)

From: [identity profile] polter.livejournal.com - Date: 2005-12-05 03:36 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 03:52 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-12-05 03:54 pm (UTC) - Expand

(no subject)

From: [identity profile] polter.livejournal.com - Date: 2005-12-05 04:06 pm (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-05 03:05 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 03:10 pm (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-07 05:07 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-09 06:37 am (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-09 07:20 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-09 08:13 am (UTC) - Expand

(no subject)

From: [identity profile] sobaker.livejournal.com - Date: 2005-12-05 04:04 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-05 04:08 pm (UTC) - Expand

(no subject)

From: [identity profile] sobaker.livejournal.com - Date: 2005-12-05 04:40 pm (UTC) - Expand

Date: 2005-12-05 01:57 pm (UTC)
From: [identity profile] polter.livejournal.com
просто у руби хорошие продавцы. умеют подавать красиво, как например:
http://tryruby.hobix.com/
а так есть огромное количество технологий в сто раз лучше, но неизвестных вообще.
на других языках :)

Date: 2005-12-05 02:19 pm (UTC)
From: [identity profile] ex-alexkon.livejournal.com
можно несколько примеров самых выдающихся, на Ваш взгляд, технологий, которые в сто раз лучше?

(no subject)

From: [identity profile] polter.livejournal.com - Date: 2005-12-05 02:24 pm (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-05 02:28 pm (UTC) - Expand

(no subject)

From: [identity profile] gone-gone.livejournal.com - Date: 2005-12-06 06:24 am (UTC) - Expand

Date: 2005-12-05 04:11 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Я последние три недели штудирую Руби и балуюсь с Рельсами. Руби - невероятно прекрасен - что-то вроде ML, с прагматичностью Форта. И он развивается, как я понимаю; есть очевидные конструкции из Хаскела, которые нехило бы вмазать и в Руби. Правда, он и так хорош.

def quicksort(a)
  return a if a.size <= 1
  quicksort(a.select {|i| i <  a[0] }) +
            a.select {|i| i == a[0] }  +
  quicksort(a.select {|i| i >  a[0] })
end


Rails - вызывают даже подозрение, всё как-то слишком элементарно в них делается. На что потрачено столько времени, конфигурируя всякие эксэмэли и т.д.

Есть ли у этого будущее? Неочевидно; слишком много на свете идиотов.
From: [identity profile] polter.livejournal.com
Руби никак не может быть что-то типа ML и тем более Haskell
в силу причин фундаментальных

скорее типа там наверху верно заметили - смоллтолка для бедных

про вмазывание "конструкций" из хаскеля - смешно :)

instance Monad (->)

From: [identity profile] polter.livejournal.com - Date: 2006-05-03 10:05 am (UTC) - Expand

Date: 2005-12-05 06:59 pm (UTC)
From: [identity profile] vladson.livejournal.com
А не кажется ли Вам, что вся эта чудная простота - до первого сложного нестандартного случая? Ибо сложные Java и XML технологии (Hibernate, к примеру, или Spring) имеют одно очень важное преимущество: гибкость. Гибкость, в том числе, достигается огромным числом внедрений. Когда все просто и стандратно - можно создать очень лаконичные решения. Но когда нужно ступить шаг вправо-влева от проторенной дороги, а технология этого сделать не дает - приходится ставить крест на такой технологии.

Ruby - не такой? Там помимо простоты есть гибкость? Разубедите меня, вообще мне эта штука очень понравилась :)

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-05 09:17 pm (UTC) - Expand

(no subject)

From: [identity profile] klopua.livejournal.com - Date: 2005-12-06 05:40 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-12-06 06:19 pm (UTC) - Expand

(no subject)

From: [identity profile] xfyre.livejournal.com - Date: 2005-12-12 12:37 pm (UTC) - Expand

(no subject)

From: [identity profile] egorfine.livejournal.com - Date: 2005-12-30 06:31 pm (UTC) - Expand

Date: 2005-12-06 05:38 pm (UTC)
From: (Anonymous)
Ну красота кода на любителя... :)

Date: 2005-12-05 04:30 pm (UTC)
From: [identity profile] and2u.livejournal.com
По-моему, весь цимес в том, что в Ruby on Rails "встроена" фича под названием AJAX (т.е. не надо заморачиватсья с обработкой XMLHttpRequest) - содержимое можно обновлять без явных запросов со стороны пользователя, а это скорость и юзабельность!

Date: 2005-12-05 05:07 pm (UTC)
From: [identity profile] svv.livejournal.com

Думаю, шум вокруг RoR многим обязан шуму вокруг компании 37signals (http://37signals.com/), в которой она была создана. Это очень buzzword-compliant компания — web2.0, ajax, GTD etc. И делает интересные продукты, привлекающие шумных поклонников.

Техническую сторону [livejournal.com profile] neoromantic уже обрисовал: вкусный web framework с ORM и прочими примочками, на ruby. Мне сложно говорить о том, как её восприняли веб-девелоперы из мира php/perl/python. А в Javaйских кругах RoR привлекла внимание обещаниями о простоте разработки: что на RoR получаются хорошие MVC/ORM веб-приложения, но легковесные, и в которых-де надо писать очень мало кода.

Date: 2005-12-05 06:24 pm (UTC)
From: [identity profile] cousin-it.livejournal.com
Что вообще это такое, в двух словах и без buzzwords?

Библиотека для разработки Web-приложений на языке Ruby. Широко использует разнообразные приемы метапрограммирования, накопленные Ruby-сообществом за последние 10 лет. (Язык Ruby старше, чем, например, PHP: 1993 vs 1995.)

Почему так много шума?

Потому что тот факт, что на Java неудобно писать Web-приложения, долго был непроизносимым. Когда запреты падают, они примерно такой звук обычно и издают :-) Теперь вся толпа ринулась в сторону Rails.

В чём состоит её новизна?

Практически ни в чем. Фишка Rails - не в новизне, а в usability и эргономике (объем и читаемость кода). На удивление много хорошо продуманных мелочей.

Действительно ли оно такое замечательное и для чего оно реально удобней и лучше альтернатив?

По сравнению с Java (именно такое сравнение чаще всего звучит) - Rails действительно выигрывает. Код и время разработки действительно уменьшаются в 10 раз. По сравнению со скриптовыми языками - споры пока идут, но похоже, что Rails чаще выигрывает, чем проигрывает.

Основной актив - синтаксическая легкость Ruby; например, в Rails широко используются higher-order functions и metaclass hacks - за подобные приемы Ruby не взимает никакого "синтаксического налога на уродливость", и это очень помогает.

Нужно иметь в виду, что Ruby - очень объектно-ориентированный язык, от этого никуда не деться. Соответственно, GUI они представляют себе как MVC и только MVC. Работу с базами данных - только через object-relational mappings. И так далее.

Date: 2005-12-05 06:53 pm (UTC)
From: [identity profile] 109.livejournal.com
а что такое "higher-order functions"?

я вообще-то не доверяю ORM. обычно его реализации дают сделать только select from
[Error: Irreparable invalid markup ('<table/view>') in entry. Owner must fix manually. Raw contents below.]

а что такое "higher-order functions"?

я вообще-то не доверяю ORM. обычно его реализации дают сделать только select <field list> from <table/view> where pk = <value>, так что весь датабазный цимус остаётся недоступен.

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2005-12-05 06:55 pm (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-05 08:50 pm (UTC) - Expand

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2005-12-05 09:33 pm (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-05 09:51 pm (UTC) - Expand

(no subject)

From: [identity profile] sobaker.livejournal.com - Date: 2005-12-06 01:32 pm (UTC) - Expand

Date: 2005-12-05 08:30 pm (UTC)
From: [identity profile] avva.livejournal.com
О, большое спасибо, Владимир!

Я, кажется, что-то понял. Дело в том, что я никогда и не писал веб-приложения на Джаве. Я их писал на Перле в основном :) иногда на C++, но не по своему выбору.

Практически ни в чем. Фишка Rails - не в новизне, а в usability и эргономике (объем и читаемость кода). На удивление много хорошо продуманных мелочей.

Т.е. по сути дела, это удобная библиотека для stateful, DB-bound, session-based веб-приложений, абстрагирующая обращения к базе данных и всякие неудобные мелочи типа HTTP headers. Правильно понял?

По сравнению со скриптовыми языками - споры пока идут, но похоже, что Rails чаще выигрывает, чем проигрывает.

Ага, именно по сравнению с (скажем) Перлом я и пытаюсь понять, в чём выигрыш.

Основной актив - синтаксическая легкость Ruby; например, в Rails широко используются higher-order functions и metaclass hacks - за подобные приемы Ruby не взимает никакого "синтаксического налога на уродливость", и это очень помогает.

Гм. Кажется, понимаю, но надо будет почитать про Ruby побольше.

Ещё раз спасибо.

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-05 08:58 pm (UTC) - Expand

(no subject)

From: [personal profile] recoder - Date: 2005-12-06 09:11 am (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-06 10:03 am (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-07 05:20 pm (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-07 09:44 pm (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-08 07:27 am (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2005-12-08 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-11 10:06 pm (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-12 07:36 am (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-12 07:44 am (UTC) - Expand

(no subject)

From: [identity profile] thornik.livejournal.com - Date: 2005-12-12 08:27 am (UTC) - Expand

(no subject)

From: [identity profile] lazyreader.livejournal.com - Date: 2005-12-12 08:56 am (UTC) - Expand

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2005-12-05 09:36 pm (UTC) - Expand

(no subject)

From: [identity profile] sobaker.livejournal.com - Date: 2005-12-06 02:05 pm (UTC) - Expand

Date: 2005-12-05 11:36 pm (UTC)
From: [identity profile] novice.livejournal.com
(typing at work, apologies for using english)

leaving the hype and its sources and results aside, RoR optimizes on the side of the developer's time, since it is the most expensive asset for the most apps.

it targets 80% of those web apps that need nothing more than a database and a web interface.

ruby itself is great, enabling metaprogramming/domain-specific languages, etc. but in my opinion, the most important is the way how everything is thought out and put together in RoR.

in this niche of smaller web apps with average ("common") programmers:
- steaming pile of randomly evolving php with hacked together apis showing growing pains and dozens of bloated hacky frameworks; it is too easy to do bad things, and it takes a tremendous effort to build things properly
- insanely customizable battleship-meets-spacecraft-meets kitchen sink of java with several ORM frameworks, several web frameworks, several build frameworks, etc, etc (everyone has a framework!) and complexity of configuring them, maintaining their inter-dependencies (xml, xml, xml, xml!), plus the whole edit-package-redeploy-refresh cycle (as opposed to edit-refresh) and multitude of app servers
- "write once" perl (does not grow gracefully; see php)
- more esoteric python (no good popular framework yet) and others (zend, etc)
- somewhat esoteric coldfusion (better thought-out than php, but closed and no large open market, not as easily extensible, etc)
- asp.net (similar arguments as coldfusion; needs more java-like communities; i do not know it that well)
- other stuff that i might be missing (lisp'ing paul graham, smalltalk, etc)

RoR has one stack that covers everything and gives novices an idea how the development cycle should work. it gives them a skeleton for a project that includes a build system (rake), a deployment system (lighthouse), testing, cpan-like package management; an idea of dev/test/prod environments (implicit support for building against an environment), built-in web/app server (run the script, it starts - now you develop; edit-refresh), one orm framework (active record); mvc presentation framework (actionpack), logging, debugging.

all of the above is integrated together and uses sane defaults. no heaps of xml to edit, all of it works on convention, which, once again, is fine for 80% of the people. remaining 20% can customize if needed.

out of the box it promotes usage of source control, testing, build automation, etc, etc. and this is the main benefit - once people start using it, especially beginners, they would evolve gracefully, using all the right approaches to agile development. RoR's creator is a big fan of pragmatic programmers (http://www.pragmaticprogrammer.com/) and it shows.

i would still use php to cobble up something fast, i would still use java for most of the corporate stuff (a lot more libraries, a lot more connectivity with other systems, more developers available, they pay me more, it is much more manageable for large teams (geographically dispersed, diferent skills, politics)), but for anything else that requires rapid development, involves only a few people, talks to the common systems, i would chose RoR. it is not a golden hammer, but it would fit most of the web apps.

if i were to teach someone web development, for non-programmers i would start with php, but for anyone with a programming background, RoR would be an easy learning curve.

once again, optimizing for programmer's time. thus i left out all the other stuff - deployment, scalability, hosted environments, availability of talent, koolaid drinking teens, etc, etc.

glace through the "agile web development with rails" book from pragmatic programmers. if nothing else, it is a very well thought-out introduction compared to other arguments lost in the religious wars among bloggers.

Date: 2005-12-06 09:20 pm (UTC)
From: [identity profile] avva.livejournal.com
Не получил этот коммент по почте, только сейчас прочитал :(

большое спасибо! Действительно подробное и ясное объяснение.

The Pragmatic Programmer я читал и мне в целом понравилось - писал как-то об этом.

(no subject)

From: [identity profile] novice.livejournal.com - Date: 2005-12-06 09:49 pm (UTC) - Expand

Date: 2005-12-06 04:55 am (UTC)
From: [identity profile] evgeniysharapov.livejournal.com
На сайте у них есть видео, где чувак в течении 20 минут делает блог движок. При этом он, комментируя, отвечает на все ваши вопросы кроме последнего )))

А URL?

Date: 2005-12-06 08:51 am (UTC)
From: [identity profile] gianthare.livejournal.com
На каком именно сайте

(no subject)

From: [identity profile] ex-alexkon.livejournal.com - Date: 2005-12-06 11:47 am (UTC) - Expand

Re: А URL?

From: [identity profile] evgeniysharapov.livejournal.com - Date: 2005-12-06 04:44 pm (UTC) - Expand

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 10:17 pm
Powered by Dreamwidth Studios