|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgulИспользуя мощь SQL мы можем вытащит данные в том виде как нам удобно. И это не ограничивает в написании бизнес-логики на ООП. Мы и не говорим об ограничении бизнес-логики. Просто "плохо ложится". Это и означает, что забывать про ООП при общении с базой действительно легче, чем заставить РМ танцевать под дудку ООП. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 13:55 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Сергей Арсеньевmad_nazgulИспользуя мощь SQL мы можем вытащит данные в том виде как нам удобно. И это не ограничивает в написании бизнес-логики на ООП. Мы и не говорим об ограничении бизнес-логики. Просто "плохо ложится". Это и означает, что забывать про ООП при общении с базой действительно легче, чем заставить РМ танцевать под дудку ООП. "Смешались в кучу..." SQL - это декларативный подход, как минимум так проектировался. Грубо говоря мы формулируем что нам нужно получить, а ЯП сам решает как это сделает. ООП работает в рамках императивного подхода. Т.е. мы должны не только знать что нам надо, но и как это получить. Т.к. ИИ нет, то декларативный подход имеет множество ограничений. В частности смогли более менее его реализовать на РМД. Более общий декларативный подход не осилили (см. Prolog). Если "статичные" данные более-менее укладываются в РМД, то уже такие вещи как бизнес-логика и бизнес-процесс в РМД ложатся очень трудно. Т.е. в БД нужно хранить только данные, а все остальное выносить на уровень приложения. И объекты уж точно нельзя хранить в БД, только данные для объектов. А уж ООБД и NoSQL это химеры. Предназначенные для "честного отъема денег у населения" <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 15:07 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgul, никакой декларативности в СКЛ нет Селект требует Фром, Джойн, Юнион - т.е. требует всю навигационную информацию когда такая инфа есть, то любо дурак может сгенерировать цикл выборки т.е. СКЛ - просто синтаксический сахар ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 15:16 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgul, Прежде чем смешивать, где Вы увидели слова про SQL? Мы про Реляционную модель и принципы ООП. Про способы реализации оных только абстрактно. В целом вопрос звучит так. Почему приходится думать по разному при работе в ООП и РМ. Т.е. всякие ОRМ это могут и за людей, но как то коряво. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 15:30 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
ViPRosmad_nazgul, никакой декларативности в СКЛ нет Селект требует Фром, Джойн, Юнион - т.е. требует всю навигационную информацию когда такая инфа есть, то любо дурак может сгенерировать цикл выборки т.е. СКЛ - просто синтаксический сахар таки любой дурак запутался в 3-х соснах скл -- это именно декларации но декларации над плоскими отношениями, которые "любой дурак" умеет превращать в цыклы. вся якобы навигационщина -- декларативные сказания о множествах. быть может за исключением order by LIMIT offset -- тут уже немного прямой нафигации] т.е. сермяжка не в том, что сахар, а в том что модель (рмд) подразумевает сравнительно лехкую трансляцию деклараций в цыклы и т.п. вещи что кладется в РМД кучки -- то и обрабатывается простыми и не очень трансляторами деклараций в инструкции. что нет -- то и нет. поленился разложить -- имей дело с неформализованной хренью, о которой никаких трансляторов нетути. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 16:20 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
эттаViPRosmad_nazgul, никакой декларативности в СКЛ нет Селект требует Фром, Джойн, Юнион - т.е. требует всю навигационную информацию когда такая инфа есть, то любо дурак может сгенерировать цикл выборки т.е. СКЛ - просто синтаксический сахар таки любой дурак запутался в 3-х соснах скл -- это именно декларации но декларации над плоскими отношениями, которые "любой дурак" умеет превращать в цыклы. вся якобы навигационщина -- декларативные сказания о множествах. быть может за исключением order by LIMIT offset -- тут уже немного прямой нафигации] т.е. сермяжка не в том, что сахар, а в том что модель (рмд) подразумевает сравнительно лехкую трансляцию деклараций в цыклы и т.п. вещи что кладется в РМД кучки -- то и обрабатывается простыми и не очень трансляторами деклараций в инструкции. что нет -- то и нет. поленился разложить -- имей дело с неформализованной хренью, о которой никаких трансляторов нетути. хреновая это декларация ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 16:59 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Какой сра.. дисскуссию пропустил! Подливая масла в огонь: http://martinfowler.com/bliki/OrmHate.html Ну и конечно же упоминаемая там же классика: http://blogs.tedneward.com/2006/06/26/The Vietnam Of Computer Science.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 17:04 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
ViPRosхреновая это декларация Какая есть. Для другой нужен ИИ. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 06:05 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев ...Вопрос именно в том, что у реляционной модели одни подходы к представлению данных, у ООП другие. ... Я не понимаю. какие-такие у собственно ООП есть "подходы к представлению данных". Объясню на примере. Используя какой-нибудь ООЯ я могу создать разные объекты с разным представлением данных. Например я могу реализовать класс "Таблица" и два его подкласса "ХранимаяТаблица" и "Вид". Для класса "Таблица" я сделаю разные методы, например метод "Проекция", который будет принимать у меня набор имен, и выдавать новый объект класса "Таблица". То есть эти мои объекты будут моделировать реляционное хранилище в соответствии с РМД. Вопрос. В этом примере какое представление данных получилось - объектное или реляционное? Ответ. ООП - очень важная штука, но это не модель данных, которая задает какое-то определённое, как Вы сказали, "представление данных". Модель - это набор типов, переменные которых интересны пользователю. Это может быть переменная типа "строка", или типа "реляционное отношение", или типа "Накладная" или что то еще. То есть каждый раз речь идет о какой-то новом наборе типов, то есть, по факту, о новой модели. Это может быть реализация обще-формальной модели как РМД, или чего то очень специфического. ООП - очень важная штука, потому что изначально в инф. системах мы имеем очень ограниченный набор простых типов. а ООП - универсальная парадигма того, как из такого ограниченного набора простых типов можно построить любой тип. ООП не имеет собственного "представления данных", зато позволяет реализовать любое нужное представление. Это не модель, это парадигма перехода от одной модели к другой, вообще говоря ортогональная любой МД. Поэтому сравнивать ООП И РМД по их "представлениям данных" некорректно, ибо сравнивать нечего. Кстати, собственных операция над данными в ООП тоже нет. По этому пункту она тоже - не МД. Если у Вас есть другой ответ на мой впрос по примеру, давайте. Только, ради бога, не надо словоблудий, обходитесь простыми, понятными терминами, типа "тип", "переменная", "операция", "модель данных"(по Кодду, а не просто так), "схема данных" и т.п. Как только начинаешь их понимать и использовать, сразу многое в голове проясняется и становится на свои места. По остальной части вашего поста вижу кучу обычных ляпов. Типа в разговоре про концепции и про формализмы вдруг начинается обсуждение эффективности систем и т.п. Здесь они обсуждаются. . И в конце концов мне кааца, Вы о чем-то своем спорите, аргументируя какими то прикладными приложениями, где, видимо, живут объекты, которые, видимо, надо запихнуть в БД. Нет у меня этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 14:40 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgul "Смешались в кучу..." SQL - это декларативный подход, как минимум так проектировался. Грубо говоря мы формулируем что нам нужно получить, а ЯП сам решает как это сделает. ООП работает в рамках императивного подхода. Т.е. мы должны не только знать что нам надо, но и как это получить. Т.к. ИИ нет, то декларативный подход имеет множество ограничений. В частности смогли более менее его реализовать на РМД. Более общий декларативный подход не осилили (см. Prolog). Если "статичные" данные более-менее укладываются в РМД, то уже такие вещи как бизнес-логика и бизнес-процесс в РМД ложатся очень трудно. Т.е. в БД нужно хранить только данные, а все остальное выносить на уровень приложения. И объекты уж точно нельзя хранить в БД, только данные для объектов. А уж ООБД и NoSQL это химеры. Предназначенные для "честного отъема денег у населения" <:o) Тоже смешались в кучу :) Вы постоянно путаете сами концепции и существующие реализации этих концепций. Существующие реализации ООП работают в рамках императивного подхода, ибо создавались как развитие средств программирования. В самой ООП нет не слова ни про императивность ни про декларации. В самой РМД вообще нет понятия алгоритма, потому бизнес-логику туда вообще не уложить. Проблемы возникают в существующих реализациях РМД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 14:59 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
CawaSPbКакой сра.. дисскуссию пропустил! Да разве это дискуссия! Вот лет десять назад тут кипело, а щас так, пузырек какой-то. CawaSPbПодливая масла в огонь: http://martinfowler.com/bliki/OrmHate.html Ну и конечно же упоминаемая там же классика: http://blogs.tedneward.com/2006/06/26/The Vietnam Of Computer Science.aspx И я подливаю , подливаю . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 15:04 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
BusIntВсе просто - ООП не нужно! Тока не так категорично. Но согласен, существующие реализации ООП местами приносят больше граблей, чем пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 15:25 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
U-geneВопрос. В этом примере какое представление данных получилось - объектное или реляционное? Встречный вопрос у топиккастера - почему ООП плохо ложиться на РМ? Вопрос как РМ переложить на ООП из другой оперы. Придумать нечто урезанное до того, что легко вписывается в те и другие рамки, тоже не ответ на первоначальный вопрос. Это мы еще не рассматривали ООП в терминах прототипирования (а не наследования) с динамической сменой цепочки прототипов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 17:09 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Сергей Арсеньев Встречный вопрос у топиккастера - почему ООП плохо ложиться на РМ? Вопрос как РМ переложить на ООП из другой оперы. Придумать нечто урезанное до того, что легко вписывается в те и другие рамки, тоже не ответ на первоначальный вопрос. Это мы еще не рассматривали ООП в терминах прототипирования (а не наследования) с динамической сменой цепочки прототипов. Не надо уходить от ответа. Я дал совершенно четкий пример и задал очень понятный вопрос по непонятному мне "представлению данных" в ООП Это не "встречный" вопрос, а лишь попытка понять, о чем Вы вообще говорите. Также я объяснил, почему никакого "представления данных" в ООП вообще нет (видимо Вы этого не поняли, раз пишете про "и те и другие рамки"). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 17:33 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
U-gene, Мы говорим о том, что часть парадигм составляющих ООП плохо представимы в виде РМ. Если же пытаться напрямую сбросить это в базу, не задумываясь, что хорошо для РМ, а что плохо, то каким бы ни был умным ОРМ возникают сложности. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 18:38 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
То есть от прямого ответа на мой вопрос о "представлении данных в ООП" мы упрямо уходим. Хорошо, будем считать что это молчание является знаком согласия с ответом, предложенным мною. Сергей АрсеньевU-gene, Мы говорим о том, что часть парадигм составляющих ООП плохо представимы в виде РМ. Если же пытаться напрямую сбросить это в базу, не задумываясь, что хорошо для РМ, а что плохо, то каким бы ни был умным ОРМ возникают сложности. А я не говорю "о том, что часть парадигм составляющих ООП плохо представимы в виде РМ." У меня все базовые парадигмы очень даже представимы. И вообще, что такое "плохо"? Мы же говорим о формальных вещах, там либо ""представимы" либо "не представимы". Какой ОРМ? Откуда Вы ОРМ то взяли? Я ж говорю , что Вы о чем то своем поёте. Нету никакого ОРМа, забудьте же про это. ОРМ - это когда какая-то реализация ООП в системе с линейной памятью отображается в реляционную память, а у меня речь идет о реализация ООП в системе с реляционной памятью , там в принципе маппинга нет, данные уже там где нужно и в каком надо виде. В общем этот наш разговор - наглядное подтверждение слов Дейкстра о незаметном и сильном влиянии языка на мышление программистов. Все привыкли к принципиально схожим реализациям ООП для программирования систем с линейной памятью и мучаются, пытаясь отобразить линейную память в реляционную (на момент исполнения данные лежат в линейной памяти, а все эти "объекты" остались в исходном тексте и/или в голове программиста). Кстати, мы же не говорим, что"часть парадигм, составляющих ООП плохо представимы в виде" линейной памяти. Вы таки помедитируйте о чем я говорю. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 21:29 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
U-geneТоже смешались в кучу :) Вы постоянно путаете сами концепции и существующие реализации этих концепций. Существующие реализации ООП работают в рамках императивного подхода, ибо создавались как развитие средств программирования. В самой ООП нет не слова ни про императивность ни про декларации. В самой РМД вообще нет понятия алгоритма, потому бизнес-логику туда вообще не уложить. Проблемы возникают в существующих реализациях РМД. Давайте пофлудим о парадигмах. Давным давно ЯП делили на императивные и декларативные. Причем императивные считали "устаревшими", а за декларативными видели будущее. Так вот ООП ЯП работают в рамках императивного подхода, потому что это и есть императивные ЯП. Он проектировались как императивные ЯП, и создавались как императивные ЯП и работают как императивные ЯП. См. первый ООП ЯП SmallTalk. А вот с декларативными ЯП вышла промашка. Для того, чтобы создать декларативный ЯП нужна "машина вывода". Т.е. ядро, которое по "хотелкам" выдаст результат. Единственное решение которое "состоялось" это был SQL. Т.к. "ядром" для него была РМД. Очень простая "машина вывода", которая имела предсказуемое время решения. Тот же Prolog не взлетел из-за того, что можно было "влететь" в комбинаторный взрыв и "привет вселенная". Т.е. кроме как лабораторных опытов не годился. Но т.к. в РМД в лучшем случае хорошо "ложатся" только данные, то различные РСУБД начали включать в себя "императивщину". Например psql или TSQL. Чтобы пользы от СУБД было чуть больше, т.к. голая РМД может только ограниченный круг задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 06:44 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgulТак вот ООП ЯП работают в рамках императивного подхода, потому что это и есть императивные ЯП. Хм. Всё-таки объектность и декларативность вполне себе ортогональны. Какой из принципов ООП не совместим с декларативностью?Scala вполне себе объектная и декларативная. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 21:00 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Вот соглашусь с безумным назгулом - не надо напяливать ООП на РМД только потому, что это можно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2015, 21:12 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
mad_nazgul, Я не буду флудить. Я сказал,что в собственно ООП никакой императивности нет, это, по большому счету концепция конструирования новых типов. Подавляющее большинство реализаций ООП - это императивные ЯП. И что? Наберите в яндексе "парадигмы программирования", там ОО парадигма программирования описывается отдельно от императивной. То есть "ОО" и "императивный" - это две независимые характеристики, одна из другой не следует, но язык может сочетать эти (и другие) парадигмы. А Вы, я гляжу, знаток, дааа. Извините за следующий вопрос. Правильно я понял, что Вы РМД назвали машиной вывода? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 04:10 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
Basil A. SidorovВот соглашусь с безумным назгулом - не надо напяливать ООП на РМД только потому, что это можно сделать. Так напялено уже давным-давно. Принцип напяливания давным-давно используется в куче систем (в том же 1С). Почему бы его не формализовать и не запихнуть в СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 04:17 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
U-gene<> Так напялено уже давным-давно. Принцип напяливания давным-давно используется в куче систем (в том же 1С). Почему бы его не формализовать и не запихнуть в СУБД? патамушта в РСУБД есть штуки, которые нужны вчера, и которые делать лень [и неясно как]. даже за большие дэнги например кросс-табличные индексы. не только делать как объекты субд, но и научить планер ими пользоваться (при запросах к джойнам и т.п. "составным наборам"). пока вместо этого имеем возможность или денормализации или сбора мат-представлений (лишних чемоданов без ручки) а уж на результаты -- натягивать directly запросы и индексы. М--системщики, если я из правильно на слух уловил -- тут могут руками "индекс" собрать из чего угодно. И руками же нафигироваться вдоль оного. вот это вот всё гораздо нужнее банального орм-ирования, чем тот же 1С занят. (маппинг -- полезная подпорка для ленивых, но всегда тупее рук пряморукого скл-кодера) именно поэтому, кстати, дальше ОО--манифестации постгрес и не пошёл -- потому, что а. никому не надо, кроме фриков с "ООП головного мозга" б. не ясно, как сделать, чтобы хоть кому--то понадобилось для дела а как дысали -- множественное наследование нарисовали -- не чуй собачий... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 14:20 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
U-geneBasil A. SidorovВот соглашусь с безумным назгулом - не надо напяливать ООП на РМД только потому, что это можно сделать. Так напялено уже давным-давно. Принцип напяливания давным-давно используется в куче систем (в том же 1С). Почему бы его не формализовать и не запихнуть в СУБД? потому что сразу потеряется основной козырь - "n транзакций в секунду" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 16:52 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
РМД, ЯП универсальные - это возможность любой тупоте сотворить хоть что нить а ООП на базе РМД убивает половину этих возможностей, так как РМД с его вседозволенным языком становится недоступна тупарям, тут уже надо думать о модели, а не методом тыка селектить хоть что нить из кое как слепленных табличек порог становится выше для проектирования, а доходы вендоров падают ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 16:59 |
|
парадигма OOP плохо ложиться на реляционные отношения...?
|
|||
---|---|---|---|
#18+
ViPRosРМД, ....- это возможность любой тупоте сотворить хоть что нить Вы еще упускаете из виду - любой тупоте достаточно просто извлечь достаточно сложную инфу из БД. Это существенно укрепляет потребность в РМД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2015, 21:51 |
|
|
start [/forum/topic.php?fid=35&msg=39028037&tid=1552313]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 137ms |
0 / 0 |