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. Не могли бы вы объяснить в двух словах, используя конкретные термины?

Date: 2005-12-05 04:06 pm (UTC)
From: [identity profile] cmm.livejournal.com
> я очень слабо представляю себе, что такое ORM

эмуляция Object Database поверх Relational Database, обычно путём отведения своей таблицы каждому классу.

Date: 2005-12-05 04:06 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
Все просто. Есть реляционная база данных. По сути - набор таблиц. Типа:

users
-----
id name
1 Sergey
2 Nikita
3 Petr

items
------
id user_id title
1 1 Железяка
2 1 Другая железяка
3 2 Конфета
4 3 Самолет

Есть объекты:

class User {
public $items;

public $name;
private $id;
}

class Item {
public $title;
private $id;
}

Задача - автоматически преобразовывать одно в другое. Предоставить автоматический интерфейс типа

NewItem = new Item();
SomeUser.items[] = NewItem;
User.commit();

Ну и наоборот - доставать из базы в объекты.

Вот это и назвается ORM. Object-Relational Mapping.

Конечно, приведенный мною пример исключительно прост. Ибо поддерживать надо и все типы отношений между объектами (many-to-many, one-to-many, one-to-one) и наследование.

Date: 2005-12-13 07:37 pm (UTC)
From: [identity profile] raa.livejournal.com
http://orm.net.ru/wacko/wakka.php?wakka=ObjectRelationalMapping
http://orm.net.ru/wacko/wakka.php?wakka=PlusesAndMinusesOfOrm

Date: 2005-12-13 11:35 pm (UTC)
From: [identity profile] avva.livejournal.com
СПасибо!

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

Date: 2005-12-11 06:21 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
эээ... альтернативы?

Объектная БД? Редко когда возможно.

Вообще без БД? Редко когда возможно.

Как вы обойдетесь без Object-Relational Mapping?

Вообще без domain model? Никогда не возможно - лучше убиться об стенку добровольно.


Date: 2005-12-11 06:27 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Зачем отображать одну модель на другую, равно(в лучшем случае)мощную? Я бы понял, если бы речь шла об изначально объектной базе, типа ZODB. Но вносить лишнее отображение, не меняющее степени абстракции, просто глупо.

Date: 2005-12-11 06:30 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
не понимаю.

Как вы поступите есть вам нужна БД, но у вас (по некоторым причинам) нет возможности использовать объектную БД?

Придется отображать одну модель на другую. А RoR и прочие делают это незаметным и удобным.

Date: 2005-12-11 07:58 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Естественно, я буду отображать - реляционную модель на предметную, прикладную. А ORM заставит меня делать так: отображать реляционную модель на объектную, а уж объектную - на предметную.

Date: 2005-12-11 09:14 pm (UTC)
From: [identity profile] neoromantic.livejournal.com
Пощадите бездарность.

Чем предметная, прикладная модель не объектная?

Куда более предметно, чем

class User
name = String
surname = String

?

Date: 2005-12-11 10:00 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Ну, class User, и дальше-то что? Что с ним делать? Это же, я думаю, не вся программа?

Программа, помимо классов "данных", содержит и другие сущности, а также взаимодействия между ними и "данными" (теми, что относятся к БД), и отношения классов "данных" БД между собой (слово "отношения" здесь не случайно). Кончится тем, что вы будете описывать содержание реляционной (фактически) модели, пользуясь аппаратом объектной надстройки, который, между прочим, не всегда полон (в вызвавшем огромную помпу в узких кругах Django, например, запрос OR появился вот только-только). То есть вам всё равно придётся пользоваться замаскированным реляционным аппаратом. Спрашивается - зачем замаскированным?

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. 29th, 2025 12:11 am
Powered by Dreamwidth Studios