Для создания модели предметной области сначала строится модель наших представлений. Описание наших представлений содержится в метамодели (например, в нотации BPMN). Метамодели, в свою очередь, строятся на основе мета-метамодели. Однако, наши представления имеют очень непростую структуру, которая до сих пор не имеет формального описания. Поэтому построение метамодели и мета-метамодели сильно затруднено. Попытку описать эту структуру предприняли греки, когда придумали основы логики. Способы нашего мышления изучали математики, когда столкнулись с парадоксами, пытаясь построить основы своей науки. Казалось бы, прогресс есть, но по какой-то причине, остановившись на формальном описании инструментов логического вывода, математики не сделали попытку применить полученные наработки к моделированию нашего мира (наверно, потому что для них – это прикладная задача, не вызывающая интереса).



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

Представьте себе, что вы встретили алгоритм решения дифференциальных уравнений. Однако, в алгоритме не исследован вопрос о границах сходимости и скорости этой сходимости. Можете ли вы использовать этот алгоритм на практике? Все зависит от степени вашей ответственности. На практике алгоритм должен иметь описание, которое включает в себя описание границ сходимости и оценку скорости сходимости. Ровно также, создатели языка или нотации должны были бы описать границы применимости нотации и оценить трудоемкость ее применения к решению практических задач. Однако, я не встречаю подобного анализа ни для одной из современных нотаций. Например, когда я говорю, что нотация BPMN не позволяет моделировать сценарии, моделируя лишь типовые сценарии, я тем самым описываю границы применимости данной нотации. Но сами разработчики даже, если бы и хотели, не смогли бы сделать такой анализ. Причина этого в том, что до сих пор нет возможности классифицировать описания предметных областей, причиной чему, в свою очередь, является отсутствие соответствующего классификатора.

Проблема понятна, и созданием такого классификатора занято множество людей, но его все еще нет. В данной статье я расскажу о тех сложностях, с которыми сталкиваются разработчики метамоделей и попытаюсь объяснить, почему (на мой взгляд) задача построения классификатора метамоделей пока не удалась.

Об одной из причин я писал ранее – мы стремимся мифологизировать сущее, одушевляя неодушевленное. И причина этого тоже понятна – язык, на котором мы с вами общаемся, имеет в своей основе мифическое сознание, в котором за все, что происходит в природе, обязательно кто-то отвечает. Река – течет, станок — точит, нож — режет и т.д. Всегда есть наделенное сознанием мифическое существо, которое что-то делает. Например, все мы считаем, что яблоко падает на Землю. Но мало кто знает, что при этом и Земля падает на яблоко. И еще меньше знают, что движение яблока и Земли удовлетворяет принципу наименьшего действия. Почему? Не потому что яблоко способно падать на Землю, и не потому что Земля способна падать на яблоко, а потому что так устроен мир. Вместо того, чтобы сказать, как говорят физики, – движение тел подчиняется принципу наименьшего действия, мы, как в добрые старые времена наделяем яблоко способностью падать. Поэтому язык заставляет нас в любом действии искать актора, совершающего эти действия (вспомните «дорожки» в BPMN) и результат этих действий (вспомните определение процесса). Почему это мешает нам строить модели? Потому что выбор актора произволен. Мы можем считать, что машина едет по дороге, а можем сказать, что катится колесная пара, а мотор лишь помогает ей ехать. Попытка найти актора приводит к тому, что одно и то же знание о предметной области можно смоделировать разными способами, что, в свою очередь, приводит к противоречиям внутри модели.

Другая причина в том, что аналитики мыслят каждый раз в разных мета-метамоделях. Большинство аналитиков мыслят либо в терминах типов и категорий, (инструмент анализа, придуманный Аристотелем 2500 лет назад и немного устаревший на сегодняшний день), либо в терминах реляционной алгебры (что годится для создания баз данных, но совсем не годится для моделирования предметных областей), либо в терминах ООП (что подходит для моделирования кода, написанного для ООП языков, но совсем не предназначено для моделирования предметных областей). Но очень немного аналитиков способно строить модели в терминах теории множеств – инструмента, специально придуманного для моделирования предметных областей.

Аналитики не умеют моделировать 4-х мерное пространство-время, применяя мета-метамодель, основанную на теории множеств. Например, можно услышать, что действие – это нечто, что делает актор. То есть, по мнению аналитиков актор не является частью действия, а находится снаружи. При этом термин «производит» каждый аналитик понимает индивидуально в меру своего личного опыта. Получается, что есть нечто, что не имеет строгого определения — действие, есть субъект – актор и есть семантическая связь между ними – производит. В четырехмерном пространстве-времени действие – это часть пространственно-временного континуума, актор – часть действия (ее участник – «часть»). Поэтому вместо семантической связи «производит» между операцией и актором отношение «целое-часть». Если моделировать четырехмерные объекты довольно сложно, то еще сложнее моделировать вариабельное будущее (проекты), в которых вариаций гораздо больше. Самым сложным объектом моделирования для меня остается сценарий, в котором будущее – вариабельно, прошлое – известно с какой-то точностью, а нынешнее – это ползунок на шкале времени. Но даже этот очень сложный многомерный объект возможно смоделировать на основе теории множеств.

Следующим препятствием на пути создания метамоделей являются представление многих аналитиков о том, что обо всех объектах известно все и сразу. Например, если мы точно знаем, что данное дерево – дуб, это позволяет нам классифицировать дерево один раз и без ошибок. Однако, может статься, что мы ошибаемся и это дерево – клен. Для создания рабочих моделей нам нужен встроенный в метамодель механизм переклассификации объектов.

Есть знания, которые относятся не к объектам, а к классам объектов. Например, мы знаем, что половина кроликов – белые, а половина – серые. Пока в наших метамоделях не содержится способов моделирования этих знаний.

Модели по сути своей субъективны. Например, если с точки зрения продавца была совершена операция продажи, то с точки зрения покупателя это была операция покупки. Часто можно услышать название такой операции: «купля-продажа». Это попытка посмотреть на одну операцию с разных сторон одновременно – как на продажу и как на покупку. Однако, не всегда это возможно, например, когда мы не знаем все возможные точки зрения на рассматриваемый объект. Реальные модели, чтобы удовлетворить требованию расширяемости должны иметь разные представления с разных точек зрения.

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

Однобокость нашего мышления проявляется в том, что мы хорошо умеем делать анализ и очень плохо — синтез. Например, разобрать объект на части мы можем, но представить Солнечную систему в виде объекта – уже нет. Поэтому часто можно слышать о моделях декомпозиции (декомпозиция процесса, например), но никогда мы не слышим о композиции объектов, например, о композиции процессов.

О каждом ограничении можно рассказать: причины возникновения его, ограничения и ошибки, к которым они приводят, способы их устранения. В итоге можно пройти по всем из них, устранить ограничения и построить метамодель, которая бы позволила создать классификатор метамоделей и их ограничений. Я намерен постепенно пройтись по каждому ограничению и попытаюсь снять их. Если кто-то найдет ограничения, которые я не описал, будьте добры, сообщите. Я с удовольствием с ними поработаю.
Поделиться с друзьями
-->

Комментарии (55)


  1. nesferatos
    01.01.2017 22:43

    Развивайте мысль, пожалуйста) Я жду продолжения.


    1. maxstroy
      06.01.2017 14:39

      Статья, в которой сделана попытка сформулировать препятствия, которые мешают нам построить удовлетворительную нотацию для моделирования операций, процессов и функций: https://habrahabr.ru/post/319032/


  1. janatem
    02.01.2017 00:04
    +1

    Аналитики не умеют моделировать 4-х мерное пространство-время, применяя мета-метамодель, основанную на теории множеств.

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


    Проблема лишь в том, что такие модели будут, как правило, вычислительно неподъемны. Ну или по крайней мере неоправданно сложны в вычислениях. Искусство моделирования, как мне кажется, состоит в том, чтобы для каждой предметной области найти или создать адекватный подход, балансируя между универсальностью, трудностью для человека и вычислительной сложностью.


    Есть аналогия с решением математических задач: сводить всю геометрию к алгебре методом Декарта. Такое сведение всегда возможно и всегда корректно, но оно часто убивает возможность применение геометрической интуиции. В результате решать становится сложнее или, как минимум, дольше.


    1. maxstroy
      02.01.2017 08:34
      +1

      Я имею ввиду то, что аналитики не обладают инструментами и интуицией для такого рода моделирования. Часто можно услышать вопрос: «как будем делать версионность?» Создание версионности и есть моделирование 4-хмерного пространства. Неплохо, если бы они понимали какого, но с этим как раз проблема. Формально мы делаем параметр версионным, но понять, что за этой версионностью стоит, аналитики не могут. Например, какая 4-хмерная сущность стоит за версионностью Расчетного счета предприятия?


  1. nivorbud
    02.01.2017 08:35
    +1

    Честно говоря, я не совсем понял, зачем вообще создавать универсальную метамодель?
    При чтении вашего текста у меня в голове сразу всплыл заезженный вопрос-штамп: «Что вокруг чего вращается — Земля вокруг Солнца или Солнце вокруг Земли»… И типа первый вариант правильный, а второй нет и может исходить лишь дремучего невежды. На самом же деле обе этих модели корректны имеют право на существование. Всё зависит от системы координат и её центра. Если я например запускаю космический корабль для вывода спутника на орбиту, то я возьму за центр координат скорее Землю (точку на ней), чем Солнце. И в этой модели Солнце будет вращаться вокруг Земли. Тоже самое и при моделировании солнечных часов. В другом случае мне будет выгодно использовать модель с Солнцем в качестве точки отсчета и я выберу эту модель, т.к. она упростит вычисления.

    Но ведь очевидно, что конкретная модель выбирается под задачу: одна модель позволяет решить задачу проще, другая — сложнее. Поэтому я не вижу причин искать универсальную модель. Зачем? Для каждой задачи подбираем свою оптимальную модель и всё. Например, в вашем примере сделки купли-продажи очевидно лучше остановиться на двух моделях — одна для продавца и другая для покупателя. Каждая из этих моделей будет значительно проще, чем универсальная модель. И если простая модель продавца решает задачи продавца, а простая модель покупателя решает задачи покупателя, то зачем нужна сложная универсальная модель?


    1. maxstroy
      02.01.2017 08:41
      +2

      Все верно, модель не должна превышать своей сложностью поставленные задачи. Мы решаем две задачи: создание инструмента для в качестве шаблона для сравнения с другими инструментами. Это позволит каждый инструмент описать с точки зрения области их применимости. Вторая — это создание адаптера между ИС, Этот адаптер не знает заранее уровень сложности той или иной модели и потому должен на стадии его создания покрывать все возможные уровни сложности. Он будет тяжел, но не бесконечно тяжел. Например, каждое значение каждого атрибута в этой модели будет выделено в отдельную сущность.


      1. raacer
        02.01.2017 15:08
        -1

        Уточните пожалуйста: кто это «мы», и зачем вы решаете эти две задачи?


        1. maxstroy
          02.01.2017 15:27
          +1

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


          1. raacer
            02.01.2017 15:47
            +4

            Тема безумно интересная, только ничего не понятно (по крайней мере мне лично). Не хватает какого-то примера, объяснения на пальцах самой проблемы и ценности предлагаемого решения. Вы как бы объяснили (довольно туманно) суть проблемы, но почему это вообще является проблемой — это остаётся для меня загадкой.

            создание инструмента для в качестве шаблона для сравнения с другими инструментами

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

            Потому что решение их позволяет выполнять очень сложные проекты много быстрее и качественнее.

            Как Вы себе это представляете? Можно пример на кошках?


            1. maxstroy
              02.01.2017 16:44
              +1

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

              Нам нужен язык, на который можно отмаппить любой другой язык. Нет ничего сложного в его создании, просто много кропотливой работы. Кажется, что я сделал всю необходимую работу, осталось только описать результат. Я постараюсь сделать это, если будет на то время.

              Пример: есть множество ИС, надо построить адаптер, который их свяжет. Но заранее нам неизвестна структура хранения данных, да и сами данные нам неизвестны. Как сделать такой адаптер?


              1. raacer
                02.01.2017 17:27
                +2

                Трудности на пути создания «универсальной» метамодели для моделирования предметных областей

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

                А вашу статью мне трудно понять, как мне кажется, по следующим причинам:
                1. Вся статья — сплошные абстрактные кони в вакууме. Вы констатируете вроде бы известную проблему неоднозначности категорий и типов, что одни и те же вещи можно описать разными способами. Но для меня осталось непонятным, как ваш подход поможет избавиться от этих проблем.
                2. Ваш текст изобилует терминами без пояснений, в правильности использовании которых приходится сомневаться. Хотя бы потому, что Вы неправильно используете деепричастный оборот: «Смирившись с тем, что я не могу описать процесс роста, у меня все равно остаются неразрешенные вопросы» (из предыдущей статьи). Это очевидная ошибка, так как очевидные выводы мы умеем делать и сами. А как понять наличие ошибок, где они неочевидны?

                Нам нужен язык, на который можно отмаппить любой другой язык.

                Теперь вроде чуть-чуть понятнее. А мапить будете вручную?


                1. VolCh
                  02.01.2017 18:16
                  +1

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


                  Или наоборот, начинают проклинать разработчиков (включая «прошлого себя»), создавших одну метамодель для большой системы, в каждой из подсистем которой вся её мощь по-хорошему не должна использоваться, но метамодель заставляет. Например, в метамодели основным понятием является процесс и приходится их создавать со всеми их атрибутами, только чтобы посмотреть какое-то значение.


                  1. maxstroy
                    02.01.2017 19:47
                    +1

                    Это проблема реализации в реляционной БД, а не проблема модели.


                    1. VolCh
                      03.01.2017 07:49

                      Причём тут реляционная БД?


                      1. maxstroy
                        03.01.2017 08:05
                        +1

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


                        1. qw1
                          03.01.2017 11:09
                          +1

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

                          Абстрацию Query не обязательно использовать только в реляционных СУБД.


                          1. maxstroy
                            03.01.2017 15:08
                            +1

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


                            1. qw1
                              03.01.2017 16:19
                              -1

                              Странно это слышать, с учётом того, сколько раз вы упоминали время.

                              У нас есть только факты, которые можно снабдить временем получения факта.

                              Если я захочу отчёт по продажам за 2016 год, он будет постоянным, независимо от способа выборки. Потому что период закрыт, и новых фактов, либо изменений, не будет.


                              1. maxstroy
                                03.01.2017 17:37
                                +1

                                Факты могут зависеть от источника информации. Разные источники могут сообщить разные факты. Это нормально для обычного мира, но очень болезненно для мира программистов


                                1. qw1
                                  03.01.2017 18:44

                                  Для модели факты из разных источников — это разные факты.

                                  Когда пользуемся моделью, порядок использования фактов из разных источников должен быть полностью определён алгоритмом, по-другому в программе невозможно (приоритет источнику, выдавшему факт первым, или источнику с определённым уровнем доверия).

                                  Не вижу проблемы.


                              1. VolCh
                                04.01.2017 10:51
                                +1

                                Слишком категорично «не будет». Разве что в бухучёте можно просто взять и закрыть период, и то только если его баланс сходится. Но исключать, что могут становиться известными факты задним числом нельзя, равно как и что время факта может меняться задним числом. Даже такие как получение денег. Например, суд сочтёт, что обязательства клиент выполнил 31 декабря в 23:59:59, потому что у него на чеке это время, не смотря на то, что на вашем сервере было уже 1 января 00:00:00.


                                1. qw1
                                  04.01.2017 17:59

                                  Тогда я не понимаю проблему, о которой писал maxstroy. Как вы его поняли?

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


                                  1. maxstroy
                                    06.01.2017 14:39

                                    Статья, в которой сделана попытка сформулировать препятствия, которые мешают нам построить удовлетворительную нотацию для моделирования операций, процессов и функций: https://habrahabr.ru/post/319032/


                        1. VolCh
                          03.01.2017 13:41
                          +1

                          Тут не в реляционности дело, а именно в метамодели — любое действие в рамках модели происходит исключительно в рамках какого-то (бизнес-)процесса (и, кстати, документо- ориентированные СУБД для хранения данных процессов часто подходя лучше, чем реляционные).


                1. maxstroy
                  02.01.2017 19:44

                  1


                1. maxstroy
                  02.01.2017 19:45

                  Я не дал метод решения. В этой статье я описал проблемы, но не способы их решения. Способы решения будут описаны отдельно, если время на то будет. Надеюсь, будет.


  1. lxsmkv
    02.01.2017 08:36
    -1

    <поток бессвязных мыслей>
    Как мне думается человек синтезирует знание из существующих знаний, поэтому не может произойти такого, что человек придумает что-то абсолютно уникальное. Такое случается, но все тогда говорят что это чушь и ерунда.
    Например, если бы ученым древности поставили задачу организовать одновременное очное обучение двадцати миллионов человек, то никакая видетрансляция им бы в голову просто не могла бы прийти. А если бы и пришла, пылилась бы такая мысль в черновиках.
    Все что не вписывается в рамки нашей мировоззренческой базы мы склонны отметать.

    Есть понятия точные названия которых есть только в каком-то одном языке мира. А что нужно чтобы научить машину оперировать явлениями не цепляясь за их названия?
    Т.е машина не сможет свободно творить потому, что человек определяет критерии оценки того что она творит. Наш проф. по математике вообще говорил, что информация существует потому, что есть люди (т.е. те кто ее как таковую воспринимают)
    </поток бессвязных мыслей>


    1. nivorbud
      02.01.2017 11:02
      +1

      Наш проф. по математике вообще говорил, что информация существует потому, что есть люди (т.е. те кто ее как таковую воспринимают)


      Он наверно имеет ввиду обязательное присутствие наблюдателя. Это интересная тема, но уже метафизическая — относящая к давнему вопросу: что первично — материя или сознание. Даже если представить, что всё произошло само по себе из идеального хаоса, т.е. абсолютно случайно, то в такой вроде бы чисто материалистической модели хоть и неявно, но всё же присутствует наблюдатель. Вот в котле мироздания всё случайным образом перемешивается, перемешивается и… в какой то момент вдруг в хаосе на мгновение появляется некая структура (нехаос), но… кто то (обладающий сознанием) ведь в этот момент должен сказать: «СТОП! Вот ОНА!». А без наблюдателя, выходит, что любая структура так и останется хаосом? В общем, как ни крути, получается, что первично — сознание.

      Да и программисты также часто используют в основе алгоритма датчик случайных чисел, например в генетическом алгоритме ИИ. Входные данные в цикле чуть изменяются (мутируют) случайным образом, а результат пропускается через целевую функцию, которая оценивает входные данные: хорошие данные оставляются для следующей итерации, а плохие отбрасываются. И так потихоньку идет движение к цели. Но ведь очевидно, что нельзя сказать, что такой алгоритм выдает результат случайным образом, так как направление движения через отбор случайных входных данных задается целевой функцией, которая создана сознательным существом — программистом и создана, разумеется не от балды, а с определенными целями. Поэтому и в теории эволюции, какой бы материалистической она ни казалась, подразумевается неявный НАБЛЮДАТЕЛЬ…


      1. lxsmkv
        02.01.2017 19:42
        +2

        получается фронт между теорией разумного замысла и теорией эволюции просто плод «узкого» мышления и тех и других, никакого фронта нет, это все тот же самый «слон» которого одни трогают за хобот а другие за хвост. Есть над чем подумать. Спасибо.


  1. YgReEk
    02.01.2017 12:03
    +1

    Вот перечитываю я пятый абзац, про актора, перечитываю…
    И вот понять не могу, на примере с тем же яблоком. Отчуждением свойства падения от яблока вы создаёте некий «закон мира», который, тем не менее, зависит от свойств объектов. Следовательно, в свойстве падения яблока существует единственный недочёт: не указан объект с наибольшим гравитационным воздействием в данной точке. В таком случае, всё, что необходимо исправить в этой модели — добавить метаданные о полях в текущей точке координат и необходимые для описания свойств этих полей (того же градиента) данные.
    Тем не менее, проблему произвольного выбора актора это решает, только если для каждого объекта расписать характеристики полей и действующих сил. В таком случае, можно будет определить и почему движется автомобиль, и почему движется колёсная пара без абстрактных свойств движимости, но путём значительного переусложнения модели (хоть это и метаданные). Как следствие — никто просто не будет с ними работать, пока ввод этих данных не будет автоматическим.
    А это уже сводится к тому, что модели без проблемы выбора актора возможны только в случае дальнейшего развития инструментов моделирования (в первую очередь вычислительных и алгоритмических). Или я не прав и вас есть своё видение данной проблемы?


    1. maxstroy
      02.01.2017 16:54
      +1

      Все, что требуется, — это отделить метод от объекта. Мы не знаем, почему происходит то или иное событие. Оно происходит и все. Можно строить разные версии причин произошедшего, если надо, конечно, но нас это волнует во вторую очередь. Хочется знать факты без трактовок причин их возникновения. Тело упало на землю — хорошо, но не упало, а переместилось в пространстве. Метод перемещения не относится к телу, а есть особенность нашего мира, в котором тела перемещаются. Поэтому перемещение — это происшествие, причина его нам неизвестна. Другой пример: токарь точит деталь. Откуда нам известно, что это именно токарь, а не сверхразум при помощи токаря точит деталь? Нам не ведомо, почему точится деталь, но мы знаем, кто участвует в этой операции. Вместо того. чтобы говорить о акторах стоит говорить об участниках.


      1. raacer
        02.01.2017 17:43
        +1

        Тело упало на землю — хорошо, но не упало, а переместилось в пространстве. Метод перемещения не относится к телу, а есть особенность нашего мира, в котором тела перемещаются.


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

        Другой пример: токарь точит деталь. Откуда нам известно, что это именно токарь, а не сверхразум при помощи токаря точит деталь?

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

        Вообще, мне такой подход напоминает описания инопланетного языка в рассказе «История твоей жизни». Если вы будете рассматривать систему исходя из равноправных связей между объектами, не потеряете ли Вы причинно-следственные связи? В бизнесе мы всё же исходим из причин и следствий, и какой будет толк в модели, если они не обозначены?


        1. maxstroy
          02.01.2017 18:53

          Объект, субъект и предикат остаются всё теми же

          Нет, в модели факт падения моделируется не предикатом — падает. Есть объект 4-хмерный, называется «падение» и есть его части — «тело», «земля», «пространство» и все, что найдет аналитик.

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


          1. michael_vostrikov
            02.01.2017 19:01

            Чем в таком случае отличаются два 4-мерных объекта — "тело в пространстве движется к земле" и "тело в пространстве неподвижно по отношению к земле"? Части в них одни и те же, но одно мы называем словом "падает", а другое словом "висит".


            1. maxstroy
              02.01.2017 19:28

              Это касается описания четырехмерных объектов, классификацию которых (описаний) я пока не описал. Но метод их описания уже есть. Сейчас я пишу статьи, в одной из которых будет описание этого метода.


              1. michael_vostrikov
                03.01.2017 05:52

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


                У вас ошибка в том, что вы путаете конкретную сцену "яблоко падает" и отдельное действие "падает". Яблоко действительно является частью сцены. Но словом "падает" называется не вся сцена, а действие в ней, то есть динамика этой сцены. То общее, что есть у падающего камня и у падающего яблока. То есть, объект специально убирается из рассмотрения, иначе для каждого падающего объекта нужен был бы свой термин. А потом, при описании конкретной сцены происходит обратный процесс, указывается действие и объект ("яблоко падает"). Именно поэтому говорят, что яблоко производит какое-то действие.


                Отличие между "падает" и "висит" заключается именно в динамике сцены.


                Любое действие подразумевает объект, с которым что-то происходит, но они не связаны как "часть — целое". Поэтому по выражению "что-то падает" мы можем представить себе сцену в динамике, не уточняя, что именно там падает. Это особая связь, которую можно назвать "действие — участник действия", или "участник производит действие".


                1. maxstroy
                  03.01.2017 17:48

                  Спасибо за комментарий! Но нет, это совсем не то, что я имею ввиду. Есть книга, которую я хотел бы, чтобы каждый прочитал, но ее нет в переводе: http://www.brunel.ac.uk/~cssrcsp/BusObj.pdf. Падает — это 4-х мерный объект, который включает в себя объект, землю и еще много чего, что захочется видеть аналитику.


                1. maxstroy
                  06.01.2017 14:40

                  Статья, в которой сделана попытка сформулировать препятствия, которые мешают нам построить удовлетворительную нотацию для моделирования операций, процессов и функций: https://habrahabr.ru/post/319032/


      1. VolCh
        02.01.2017 18:02

        Тело упало на землю — хорошо, но не упало, а переместилось в пространстве.

        Только в системе координат, не связанной с самим телом. Факт в падении, скорее, соприкосновение тел, а не перемещение. Какое из них на какое упало, какое перемещалось, а какое находилось в покое а может оба перемещались) зависит, как минимум, от выбора «нашего мира», от выбора системы отсчёта. Общий факт для всех произвольных классических систем отчёта — минимум одно из тел перемещалось так, что тела соприкоснулись, при этом метод перемещения напрямую связан с системой отсчёта, которая в частных случаях связана с одним из тел. То есть в частных случаях метод перемещения в пространстве связан с одним из тел, с одним из объектов. А в других случаях — не связан. Связывать или нет, а если да, то с каким (а может и с обоими типа центра масс) — решение, которое скорее должно приниматься исходя из конкретной задачи, чтобы было удобнее/проще моделировать.


        1. maxstroy
          02.01.2017 19:29

          да, выбор системы координат произволен. Но участники взаимодействия — нет


  1. michael_vostrikov
    02.01.2017 13:42
    +2

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

    Из чего сделан такой вывод? Мне вот кажется, что причина в фазе луны и силе ветра.


    Об одной из причин я писал ранее – мы стремимся мифологизировать сущее, одушевляя неодушевленное.
    Река – течет, станок — точит, нож — режет и т.д. Всегда есть наделенное сознанием мифическое существо

    Действие не означает мифическое существо. Когда мы говорим, что река течет, мы имеем в виду, что она течет без нашего участия, под действием каких-то других сил, в данном случае силы гравитации. Река есть? Есть. Она течет? Течет. Причем здесь мифические существа?


    Например, все мы считаем, что яблоко падает на Землю.
    Не потому что яблоко способно падать на Землю, и не потому что Земля способна падать на яблоко, а потому что так устроен мир.

    Просто потому что. Хорошее научное объяснение.
    Мы считаем, что яблоко падает на землю, потому что оно туда падает в нашей системе координат. Земля может и падает на яблоко, но мы падаем вместе с ней, и заметить это не можем.


    Поэтому язык заставляет нас в любом действии искать актора, совершающего эти действия

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


    В четырехмерном пространстве-времени действие – это часть пространственно-временного континуума, актор – часть действия

    Почему это? Мне вот кажется, что и действие и актор — части 4-мерного пространственно-временного отрезка.
    Вы хотите сказать, что действие "падает" не имеет никакой семантики без объекта? Как раз имеет, именно поэтому мы можем по тексту "яблоко падает" представить (смоделировать) эту пространственно-временную сцену. Это не отношение "часть-целое", а что-то наподобие входного параметра у функции, причем в процессе выполнения действия состояние этого параметра может изменяться. И я так понимаю, одна и та же часть не может принадлежать двум разным целым, а яблоко может совершать множество действий одновременно.


    Для создания рабочих моделей нам нужен встроенный в метамодель механизм переклассификации объектов

    Почему вы решили, что механизма нет? Что мешает переназвать дерево кленом?


    Например, мы знаем, что половина кроликов – белые, а половина – серые. Пока в наших метамоделях не содержится способов моделирования этих знаний.

    Почему это? Ваш текст сам по себе является моделью этих знаний. Я могу прочитать его и получить знания о кроликах. Кроме того, это просто статистические данные на текущий момент. Смоделировать их на компьютере или на бумаге проблем вроде нет. Пример: {object: {object: {class: Rabbit}, quantor: all}, quantor: half, color: white}.


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

    Что в существующих моделях мешает описать данные с точки зрения продавца, если они уже описаны с точки зрения покупателя?


    но представить Солнечную систему в виде объекта – уже нет
    но никогда мы не слышим о композиции объектов

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


  1. meta4
    02.01.2017 13:53
    +1

    Прикольно, сам занимался темой мета-метамета моделировани и даже постил об этом статью на хабре (https://habrahabr.ru/post/150021/). Жаль это тема не очень развивается.


    1. maxstroy
      06.01.2017 14:40

      Статья, в которой сделана попытка сформулировать препятствия, которые мешают нам построить удовлетворительную нотацию для моделирования операций, процессов и функций: https://habrahabr.ru/post/319032/


  1. VolCh
    02.01.2017 17:12
    +2

    А может главное препятствие на пути создания универсальной метамодели — это её практическая ненужность? Скорее всего она окажется излишне сложной для практического использования, в лучшем случае конкретные люди будут пользоваться какими-то её подмножествами для решения конкретных задач, сознавая или подсознательно чувствуя, её избыточность в данном случае, и рано или поздно создавая усечённые версии несовместимые с универсальной.


    1. maxstroy
      02.01.2017 18:44

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


      1. qw1
        03.01.2017 13:03

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

        И вот уже сегодня создаются операционные системы, работа которых доказана, то есть, в них ошибок — ноль!
        Это заблуждение, подробнее — в этом моём комментарии.


        1. maxstroy
          03.01.2017 15:10

          Вполне возможно, что есть а теоремы о неполноте. давайте же его сформулируем и докажем! Только теорема о неполноте касается только тех высказываний, которые относятся к самому высказыванию. И потому это не наш кейс


          1. qw1
            03.01.2017 16:21

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


            1. maxstroy
              03.01.2017 17:51

              Понятно, что его нет, но нет смысла говорить о доказательстве теоремы о неполноте, не имея языка описания.


  1. dim2r
    03.01.2017 00:32

    Однобокость нашего мышления проявляется в том, что мы хорошо умеем делать анализ и очень плохо — синтез.


    Рекомендую познакомится с метапрограммами психики — это фильтры, которые незаметно фильтруют информацию и один вид информации они пропускают, другой — нет. Картина того, как работают наши мозги будет полнее.


  1. igoboy
    03.01.2017 14:59

    Тема конечно интересная. Только сначала надо было бы дать определение, что такое ПРЕДМЕТНАЯ ОБЛАСТЬ.
    Например, кофеварки — это предметная область и кухонная техника — это предметная область и варка продуктов — это предметная область. Практически, каждый человек определяет для себя сам это понятие. Начиная обобщать надо дать общее определение понятий. Иначе далее идёт смешение терминов: модель и мета-модель, классификаторы и др.
    По факту, нужен универсальный семантический классификатор на основе некоторой модели мира (нужно определение), оперирующий не словами, а семантическими формулами, которые уже и раскрываются языковыми средствами.
    На сегодня есть две теории предлагающие такой подход, это:
    1. Универсальный Семантический Код (Universal Semantic Code) — автор Мартынов Виктор Владимирович
    2. Теория автоматического порождения архитектуры знаний — автор Гордей Александр Николаевич


  1. logiciel
    03.01.2017 18:36

    Мне представляется, что четырех измерений маловато будет. Представим, что не яблоко падает, а человек сидит и думает. Происходящие при этом события явно не исчерпываются физическими процессами в мозгу. Скажете, человека пока исключим из рассмотрения? Хорошо, пусть будет кошка. Кошка сидит и злится. Водит хвостом, шипит — это все физические процессы. А шквал ее эмоций в какое измерение запишем? Ваша модель, вероятно, должна быть N-мерной, где N — сколь угодно большое число.


    1. maxstroy
      03.01.2017 18:49

      Да, конечно, модель N-мерна. Но для начала стоит научиться моделировать 4 измерения, чтобы потом переходить к более сложным кейсам. Например, сценарий — N-мерная сущность.


  1. marozz1k
    06.01.2017 14:41

    Для автора: мысли интересные. Скажу немного абстрактно-духовно, но я дошёл до того что любой вопрос (проблему) нужно рассматривать как минимум с двух сторон, с позиции целого, состоящего из разных частей (общий вид) и с позиции частей, в совокупности представляющих из себя целое (подетально). Мы в дуальности, тут всё можно описать только относительно чего-то, как смотреть в зеркало.


    1. maxstroy
      06.01.2017 14:41

      Статья, в которой сделана попытка сформулировать препятствия, которые мешают нам построить удовлетворительную нотацию для моделирования операций, процессов и функций: https://habrahabr.ru/post/319032/