[personal profile] bowhill

Есть один тезис, который у сторонников ООП не получается опровергнуть, поэтому его стараются просто игнорировать — граф нельзя представить иерархией.

Статические иерархические модели можно отлично реализовывать средствами ООП, но в жизни их не так много, всё больше графы. Да ещё и динамические.

Это как поиск философского камня или вечного двигателя. Люди 25 лет вертят буквы S, I, T и H, уже мозоли натёрли, а счастья нет. Но вот-вот будет.

Date: 2016-10-09 04:25 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
О блин. Это глубоко верно.

Но откуда граф?

Я помню, как дизайнил систему, и нарочно сделал ее такой, чтобы была иерархия.

Кстати, эта штука насчет графа и дерева, там еще есть логический аспект. Топологии Гротендика на дереве соответствуют поддеревьям, а на графе появляются еще этакие призраки.

Date: 2016-10-09 04:38 pm (UTC)
From: [identity profile] gineer.livejournal.com
Ага... а еще лучше вопрос.

А вот с чего уверенность, что проблемные области... э-э, вообще мэплятся на какую-то математику? Хоть Гротендикову, хоть чью. ;)

Date: 2016-10-10 06:07 am (UTC)
From: [identity profile] bowhill.livejournal.com
Наверное, потому же, почему мысли мэпятся в слова. В принципе, imho математика как и язык — раздел абстрактного мышления.

Date: 2016-10-10 06:31 am (UTC)
From: [identity profile] gineer.livejournal.com
Что такого абстрактного в том как "мысли мэплятся в слова"?
Особенно учитывая последние данные нейросаенса и искуственных нейросеток? ;)

Date: 2016-10-10 06:39 am (UTC)
From: [identity profile] bowhill.livejournal.com
Замена предмета словом, зрительного образа — символом.

Date: 2016-10-10 07:09 am (UTC)
From: [identity profile] gineer.livejournal.com
После того как мы уже знаем (догадываемся), какая машинерия стоит за этим... да это же махровый идеализм. ;)

Date: 2016-10-10 03:31 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
С того, что мы можем их обсуждать на человеческом языке.

Date: 2016-10-10 03:57 pm (UTC)
From: [identity profile] gineer.livejournal.com
Маловато будет. (С) ;)

То есть, это неявно предполагает некую изоморфность обычного языка и математики...

Date: 2016-10-10 05:58 am (UTC)
From: [identity profile] bowhill.livejournal.com
Граф потому, что отношения сущностей в общем случае произвольны. Как ссылки в книге или на сайте отражают связи сущностей. А если изначально присутствует иерархия модели, то да, всё складывается естественно.

С призраками так и получается, поверх графовой модели приходится придумывать некую существенно б́ольшую иерархическую, в которой можно как-то задавать необходимые связи. Просто для соответствия парадигме. И получаются во многообразии несуществующие призрачные сущности: структуры и отображения. И укрощение оных — большая часть проблем.

На мой взгляд, это вполне на поверхности, как история от IMS до System R.

Date: 2016-10-10 06:42 am (UTC)
From: [identity profile] gineer.livejournal.com
Сообразил вот, почему иерархия -- да потому что это однозначное отображение классификации.
А классификация -- очень мощный (если не единственный) способ придать видимость ясности и однозначности любой бесформной области... хоть коллекционированию марок, хоть анализу генов.
Но это предает только видимость правильности, потому что ниоткуда не следует что наша классификация точно соответствует всем особенностям реальности.
А предложение заменить её "более обобщенными" графами -- ну да, это способно порешать какие-то мелкие задачи, но параллельно добавляет своих собственных.

Кстати, подумалось вот -- всякие кодировки черча, лямбды,
они ведь декларируются анаогичными машинам тьюринга по выразительности,
а у машин есть проблема останова -- интересно, а как она себя проявляет в них?
Не може ли такого быть, что вот все эти поиски типизированного граала -- просто игнорируют следующую их этого проблему,
и потому их поиски заведомо бесперспективны (ну, как Максим, думал что объедет ограничения Ф омега, потому что мол "но у нас ведь другая система")

Date: 2016-10-10 07:11 am (UTC)
From: [identity profile] bowhill.livejournal.com
Какая же классификация? В иерархической модели даже простой библиотечный каталог сделать не получится.

Мы сами налагаем два типа ограничений на модель, сокращаем размерности. А предметная область никуда не девается, упрощение языка приходится как-то компенсировать, вот химеры и вылезают.

Date: 2016-10-10 07:24 am (UTC)
From: [identity profile] gineer.livejournal.com
\\Какая же классификация? В иерархической модели даже простой библиотечный каталог сделать не получится.

В смысле?


\\А предметная область никуда не девается,

Смелое заявление... особенно после того как вы сами выше настаивали на "предметы мэплятся в слова".

Date: 2016-10-10 07:52 am (UTC)
From: [identity profile] bowhill.livejournal.com
В смысле, в смысле? Какая будет иерархия, по авторам, названиям, областям, жанрам?

И смелого особо ничего нет, например, если Эллочка Щукина знает тридцать слов, природа от этого не меняется.
Edited Date: 2016-10-10 07:53 am (UTC)

Date: 2016-10-10 08:28 am (UTC)
From: [identity profile] gineer.livejournal.com
\\В смысле, в смысле? Какая будет иерархия, по авторам, названиям, областям, жанрам?

Раздел художественная литература и техническая,
в них соответственно свои подразделы...
А "по авторам, названиям, областям, жанрам",
свои иерархии соответственно, типа "авторы национальный и зарубежные" и т.п.

Вы пропустили между ушей мое про "иерархия это про классификацию"?


\\И смелого особо ничего нет, например, если Эллочка Щукина знает тридцать слов, природа от этого не меняется.

Природа не меняется, это безсомненно.
Но...

\\А предметная область никуда не девается, упрощение языка приходится как-то компенсировать, вот химеры и вылезают.

Разве вы не видите что суть именно в этом -- когда мы выбираем говорить о природе на том или ином языке, мы тем самым отсекаем "лишние" смыслы?
А потом удивляемся "и почему это абстракции опять протекли"... ;)

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

Date: 2016-10-10 09:18 am (UTC)
From: [identity profile] bowhill.livejournal.com
Отлично, несколько иерархий. Книга может принадлежать разным жанрам и разным областям. У неё может быть несколько авторов, у автора много книг. Что здесь чему наследует в иерархии? В какую иерархию входит книга?

Полагать можно, но предметная область — это уже абстракция. То есть мы говорим о реализации одной абстракции средствами другой, ограниченной.

Date: 2016-10-10 10:08 am (UTC)
From: [identity profile] gineer.livejournal.com
\\В какую иерархию входит книга?

Дык...


\\Полагать можно, но предметная область — это уже абстракция.

Как ноумен -- да.
Как феномен -- нет.

Date: 2016-10-10 10:23 am (UTC)
From: [identity profile] bowhill.livejournal.com
ТЗ — ещё какой феномен. И если присмотреться, то вообще объект автоматизации — деятельность.

Date: 2016-10-10 02:21 pm (UTC)
From: [identity profile] gineer.livejournal.com
Это все хорошо и понятно... только системности никакой не видно. :(

Date: 2016-10-10 03:33 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Ну как лямбда проявляет. Не редуцируется выражение.

λ x ((x x) (x x))
(λx ((x x) x)) (λx ((x x) x))

Date: 2016-10-10 03:53 pm (UTC)
From: [identity profile] gineer.livejournal.com
Вопрос в том -- что из этого следует для всяких новомодных тайп-теорий... ;)

Date: 2016-10-09 04:30 pm (UTC)
From: [identity profile] gineer.livejournal.com
Это в тех языках в которых ООП -- это иерархия классов начинающаяся с Обждект? %)))

Date: 2016-10-10 06:05 am (UTC)
From: [identity profile] bowhill.livejournal.com
Наверное, в тех, где присутствует связывание данных и методов (инкапсуляция) и наследование.

Date: 2016-10-10 07:13 am (UTC)
From: [identity profile] gineer.livejournal.com
А причем тут инкапсуляция к графам и иерархиям?
Она же какраз и существует, чтобы отсекать, прятать, делать невидимыми лишние связи. ;)

Date: 2016-10-10 08:07 am (UTC)
From: [identity profile] bowhill.livejournal.com
А почему они лишние и зачем их отсекать, если они есть? Это уже Пелевин какой-то, «Омон Ра».

Почему данные могут быть связаны c методами и между собой одним каким-то способом? Для наглядности, можно посмотреть на интерфейсы ( не UI), но проблема, конечно, шире.

Date: 2016-10-10 08:54 am (UTC)
From: [identity profile] gineer.livejournal.com
\\А почему они лишние и зачем их отсекать, если они есть? Это уже Пелевин какой-то, «Омон Ра».

А какие еще вы знаете способы работы со связями?
Вот когда их 100500...
кроме их групировки и/или маскировк неактуальных?


\\Почему данные могут быть связаны c методами и между собой одним каким-то способом?

Туда же.
Какие еще вы знаете способы "связи данных с методами"?

Date: 2016-10-10 10:00 am (UTC)
From: [identity profile] bowhill.livejournal.com
В смысле? Программные, множественные, произвольные... Что именно выбирать из произведений данных и отображений? Программа и есть способ связи. Кроме того, с .csv может работать и Word, и Excel, и ещё неопределённый список программ, это как способ связи?

А если речь о вопросах инвентаризации, то связь эквивалентна записи, 100500 — это не так много.

Date: 2016-10-10 10:14 am (UTC)
From: [identity profile] gineer.livejournal.com
\\В смысле?

Имелось в виду -- способов работы со свъязями,
отличных от их группировки и/или выделения какой-то их части по какому-то принцыпу?

Вот возьмем те же графы.
Что ЕЩЕ можем с ними сделать, кроме:
ну там свести в табличку и отсортировать (по номеру вершин, по количеству ребер, по весам и т.д.),
или выделить некое помножество?


Date: 2016-10-10 10:56 am (UTC)
From: [identity profile] bowhill.livejournal.com
Hmm, использовать по необходимости, есть автоматизация анализа, оптимизация, доказательства, алгоритмистика, вычметоды, параллелизм. Можно Воеводина почитать, или потрясти Ганди, как математика, что читать.

А в простом смысле что можно сделать с декларацией “int i;”? Метаданные тоже данные.

Date: 2016-10-10 02:20 pm (UTC)
From: [identity profile] gineer.livejournal.com
Это на что ответ был?

Date: 2016-10-10 02:52 pm (UTC)
From: [identity profile] bowhill.livejournal.com
Что можно делать с графами. С этими и далее, если есть интерес работать с кодом как с графом.

Но вообще, в дообъектных языках связи не были иерархическими, и что делали? Программы писали.

Date: 2016-10-10 03:11 pm (UTC)
From: [identity profile] gineer.livejournal.com
Мой поинт был в -- что ТЕХНИЧЕСКИ можно делать с графами,
а не как их можно использовать.

А графы, я упомянул как самый просто и наглядный формальный способ представления связей.

А про связи начал говорить, чтобы подвести к мысли -- что человек не может,
физически неспособен,
держать в голове и работать с таким количеством связей, которое предполагает даже обычное программирование.

И это при том, что эти связи -- по большей части даже не в базах данных хранятся -- потому что нет такой глубины и широты формализации процесса разработки и описания проблемной области,
и даже хуже того -- большая часть связей вообще неформальная -- находится или не находится в мозгах у человека.

И это было замечание к тому -- что человеку просто необходима инкапсуляция, группировка, типизация... называй как хочешь, но это все
в конечном итоге,
о попытке уменьшить количество связей с которыми нужно непосредственно работать человеку,
и сделать их кк можно ему понятнее и ближе...

И сделано это было для того,
чтобы намекнуть на некорректность постановки рядом инкапсуляции и наследования -- потому что это две большие разницы.

Date: 2016-10-10 03:43 pm (UTC)
From: [identity profile] bowhill.livejournal.com
Да почему же это человек не способен? Схему с логичными связями он понимать неспособен, а большую, с химерами и костылями, способен. И не надо всё в голове держать: есть код, документация, анализаторы кода. Автоматизировать разработку вообще проще, чем создавать новую парадигму, которая к тому же постоянно рестартует с нуля. Такую бы энергию, да в мирных целях.

Процесс разработки — предмет непростой, но не надо думать, что все его сложности можно решить волшебным синтаксисом. Который заменит и процесс, и голову, и документацию, и средства, и всё прочее. Сам будет всё делать. На этот миф люди и ловятся.

И большие системы с тысячами сущностей пишутся отнюдь не только на инкапсуляции или наследовании. И если структура (условный csv) используется во множестве мест, то куда её инкапсулировать и зачем? К слову, структурирование и модульность никто не отменял.

Date: 2016-10-10 04:01 pm (UTC)
From: [identity profile] gineer.livejournal.com
\\Схему с логичными связями он понимать неспособен, а большую, с химерами и костылями, способен.

Весь вопрос в том -- какого объема.

Date: 2016-10-10 04:21 pm (UTC)
From: [identity profile] bowhill.livejournal.com
А здесь ответ универсальнее программирования — не больше такого объёма, какой человек может понять. Если за процессом не стоит разумная деятельность, то сам по себе процесс хорошо работать не будет, и разработка не исключение.

Date: 2016-10-09 08:41 pm (UTC)
From: [identity profile] oopk.livejournal.com
Даёшь циклическое наследование!

Date: 2016-10-10 05:03 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Зато под граф можно легко всегда практически подложить иерархию и тем снять большую часть сложности - потому и работает - только не стоит верить что тем "постигнута суть вещей".

Date: 2016-10-10 06:29 am (UTC)
From: [identity profile] bowhill.livejournal.com
Криво да, легкотня.

Date: 2016-10-10 07:04 am (UTC)
From: [identity profile] gineer.livejournal.com
А может всетаки наоброт? "граф наложить на" ;)

Date: 2016-10-10 07:09 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Ну какая фиг разница - но любой граф превращается в ориентированное дерево стиранием части ребер и расстановкой стрелочек.

Собственно ООП и состоит в том чтобы это сделать (и стертые связи "прорисовать на коленке" - ну да гемморойно - но все-таки часть прорисовывать, а не 100%)

PS: Соственно "правильная иерархия" и состоит в том что "меньше прорисовывать"
Edited Date: 2016-10-10 07:12 am (UTC)

Date: 2016-10-10 07:22 am (UTC)
From: [identity profile] gineer.livejournal.com
\\PS: Соственно "правильная иерархия" и состоит в том что "меньше прорисовывать"

Это... довольно глупое утверждение.

Правильная иерархия должна (как минимум) включать все важные элементы проблемной области...

Date: 2016-10-10 07:23 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Ну так правильная иерархия именно что и должна покрывать как можно больше графа - чтобы "меньше было рисовать на коленке" надо. Просто не стоит верить в "суть предметной области" - там все техническое чисто

Date: 2016-10-10 07:31 am (UTC)
From: [identity profile] gineer.livejournal.com
Ну вот, а вы говорите "какая разница, прямо все или наоборот". %)

"правильная иерархия именно что и должна покрывать как можно больше графа" и "граф должен покрывать иерархию" -- совсем неодно и то же.

Потому что граф -- это наш внешний, совершенно произвольно абстрактный конструкт.
Вот у вас и получается,
что вместо разбирательства с подноготной проблемной области,
берется какая-то среднепотолочная абстракция -- и все остально потому пробуют втиснуть в неё.

Что, впрочем... вполне типичное поведение для программистов.

А потом они такие вылазят, и начинают крыть ЯП, ООП и вообще всех подряд... вплоть до фон Неймана,
за "огрниченность" и неспособность выразить их гениальные мысли в коде...
и дружно фапают на ФП. %)))

Date: 2016-10-10 07:34 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Так ФП тем и хорошо же что не "парадигма", а инструмент - там не надо суть вещей постигать. А модели строить в его терминах куда удобнее

Date: 2016-10-10 08:55 am (UTC)
From: [identity profile] gineer.livejournal.com
"Какое думать?!! Трясти нужно!" (С) %)))

Date: 2016-10-10 09:24 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Так именно что да - не надо смысл искать

Date: 2016-10-10 10:15 am (UTC)
From: [identity profile] gineer.livejournal.com
"Так и живем" (С) %)

Profile

Max Mikheenkov

June 2025

S M T W T F S
1 234 5 67
891011121314
15161718192021
22232425262728
2930     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 07:40 pm
Powered by Dreamwidth Studios