хочу всё знать (программистское)
Dec. 5th, 2005 02:29 pmЗапись будет интересна только программистам :-)
Я не понимаю прикола технологии Ruby on Rails. Объясните мне, пожалуйста, в чём тут дело?
(я в общих чертах представляю себе, что такое Ruby, но никогда на нём не писал)
Я не понимаю прикола технологии Ruby on Rails. Объясните мне, пожалуйста, в чём тут дело?
- Почему так много шума?
- В чём состоит её новизна? Что вообще это такое, в двух словах и без buzzwords?
- Действительно ли оно такое замечательное и для чего оно реально удобней и лучше альтернатив?
- Почему так много шума?
(я в общих чертах представляю себе, что такое Ruby, но никогда на нём не писал)
no subject
Date: 2005-12-05 12:44 pm (UTC)Плюс - очень удобно и качественно реализован MVC. Не нужно заморачиваться на парсинг request.
Собственно, дело не в языке Ruby. Для python существует Django с похожим подходом. Для PHP5 пишется много чего, но ограничения самого языка все-таки мешают.
no subject
Date: 2005-12-05 12:57 pm (UTC)no subject
Date: 2005-12-05 12:59 pm (UTC)Но все же - почему django "не похожа"? :)
no subject
Date: 2005-12-05 12:59 pm (UTC)Насколько я понял, ruby (которого я не знаю) позволяет и чуть ли не синтаксические конструкции задавать под предметную область (т.е. работать мета-языком), и как раз оттого ruby on rails позволяет писать крайне компактный и прозрачный в смысле предметной области код. Но сам не пробовал.
no subject
Date: 2005-12-05 05:22 pm (UTC)no subject
Date: 2005-12-05 04:01 pm (UTC)no subject
Date: 2005-12-05 04:06 pm (UTC)эмуляция Object Database поверх Relational Database, обычно путём отведения своей таблицы каждому классу.
no subject
Date: 2005-12-05 04:06 pm (UTC)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) и наследование.
no subject
Date: 2005-12-13 07:37 pm (UTC)http://orm.net.ru/wacko/wakka.php?wakka=PlusesAndMinusesOfOrm
no subject
Date: 2005-12-13 11:35 pm (UTC)no subject
Date: 2005-12-11 06:02 pm (UTC)no subject
Date: 2005-12-11 06:21 pm (UTC)Объектная БД? Редко когда возможно.
Вообще без БД? Редко когда возможно.
Как вы обойдетесь без Object-Relational Mapping?
Вообще без domain model? Никогда не возможно - лучше убиться об стенку добровольно.
no subject
Date: 2005-12-11 06:27 pm (UTC)no subject
Date: 2005-12-11 06:30 pm (UTC)Как вы поступите есть вам нужна БД, но у вас (по некоторым причинам) нет возможности использовать объектную БД?
Придется отображать одну модель на другую. А RoR и прочие делают это незаметным и удобным.
no subject
Date: 2005-12-11 07:58 pm (UTC)no subject
Date: 2005-12-11 09:14 pm (UTC)Чем предметная, прикладная модель не объектная?
Куда более предметно, чем
class User
name = String
surname = String
?
no subject
Date: 2005-12-11 10:00 pm (UTC)Программа, помимо классов "данных", содержит и другие сущности, а также взаимодействия между ними и "данными" (теми, что относятся к БД), и отношения классов "данных" БД между собой (слово "отношения" здесь не случайно). Кончится тем, что вы будете описывать содержание реляционной (фактически) модели, пользуясь аппаратом объектной надстройки, который, между прочим, не всегда полон (в вызвавшем огромную помпу в узких кругах Django, например, запрос OR появился вот только-только). То есть вам всё равно придётся пользоваться замаскированным реляционным аппаратом. Спрашивается - зачем замаскированным?