Comments 17
Следующая тема, которую я хочу затронуть, — это объяснение, почему мы определили связь в конструкции как 4-Д объект. Напомню, что в проекционном моделировании связь – это общая часть элементов конструкта.
Вам к этому "определению" задали вопросы, а вы их проигнорировали. Ну ладно, продолжим.
связь – это 4-Д объект
Так вот. Даже не рассматривая всякие поля и прочие слабые взаимодействия, которые вы, похоже, тоже считаете четырехмерными объектами, возьмем простые жизненные примеры.
Вот есть корабль, он приписан к порту. "Корабль приписан к порту" — это типичный пример связи между двумя объектами (и если кому-то хочется, оба этих объекта можно смоделировать как четырехмерные). Какому (общему) четырехмерному объекту соответствует эта связь?
Или вот банку принадлежит офис (офис является собственностью банка).
Или вот человек арендует сейфовую ячейку в офисе банка.
Ну или возьмем пример поближе к тематике хабра. Есть два сервера, А и Б, расположенные в двух разных вычислительных центрах, Г и Д, связанные между собой частной сетью В поверх сети общего назначения. С точки зрения модели, В — это, несомненно, связь. Что за четырехмерный объект ей соответствует?
Таким образом, ваше понятие "связи" не позволяет смоделировать многие существующие в, как вы любите выражаться, реальных задачах отношения объектов. А знаете, почему? Вот ответ:
В нашем представлении нет способа передать взаимодействие напрямую без посредника. Поэтому любая связь – это 4-Д объект, передающий это взаимодействие. Но, повторюсь, не потому что так устроена природа, а потому что мы так мыслим.
Вы так мыслите, и ваше представление не позволяет передать отношения между объектами без посредников.
(Комментарий написан на правах графомании и праздных фантазий.)
Так все равно же не работает. Чтобы выражать "любой тип связей", надо выражать "любой тип объектов", а "любой тип объектов" несводим к четырехмерным объектам.
спроектировать формат хранения любых экспертных данных вне зависимости от прикладной области.
Так и есть — автор разрабатывает не язык моделирования для конкретной предметной области, а непредметный язык, который, путем ввода DSL-терминов поверх непредметных, предоставит возможность моделировать любую предметную область.
(Если попытаться найти аналогию, это похоже на языки программирования вроде Ruby, которые благодаря динамической модели и особому синтаксису, позволяют разрабатывать фреймворки с DSL-языками, а уж потом конечные приложения)
При этом степень "непредметности" этого языка будет минимальна.
Другими словами, если кирпич — самая крупная единица, которая позволяет смоделировать любую предметную область, то песчинки не нужны, т.к. вначале из них прошлось бы изготавливать кирпичи.
Перефразируя еще раз — автор решает мини-максную задачу при разработке языка моделирования и определении его терминов.
Еще это похоже на EAV-модель, которая позволяет определить в реляционной БД любой набор сущностей, не заводя в структуре БД новых таблиц.
Интересно, что в Руби особенного, делающего его столь привлекательным для основы DSL? Чем он принципиально отличается от какого-нибудь Питона или ЖС в этом аспекте?
Помимо динамической модели — особый синтаксис ("представление модели"), который включает много всего.
Это и отсутствие скобок при вызове функций, и do blocks, и возможность определения литералов вида :name (эдакое замещение строк-констант и енумов из других языков), и прочее, что по отдельности может казаться мелочью.
В итоге руби позволяет написать фреймворк (и примеров много — начиная от Rails, продолжая Trailblazer, и заканчивая многочисленными гемами), исходный код с использованием которого выглядит как DSL, если не знать, что идет работа с функциями используемого фреймворка, и то, как это ложится на объектную и синтаксическую модель руби — т.е. можно даже не опознать, что это именно руби.
Руби был приведен для примера. Естественно, подобных языков много. Например, Crystal.
В статических языках подобное тоже есть — Nemerle, Cx#.
(Не возражения ради, а графомании и поддержания беседы для.)
Так и есть — автор разрабатывает не язык моделирования для конкретной предметной области, а непредметный язык, который, путем ввода DSL-терминов поверх непредметных, предоставит возможность моделировать любую предметную область.
Любая пока что-то не выходит, я примеры неоднократно приводил.
Ой ли? Я уже приводил эту цитату: «Объектом нашего моделирования будет 4-х мерный объект в пространстве-времени».
Понятие связи в проекционном моделировании