Моделирование активности и мифологическое сознание

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

e4a677e234bc49f8a9f57c94e81dd33d.jpg

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

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

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

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

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

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

Спасибо за внимание. Я, как и обещал, был краток.

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

  • 18 декабря 2016 в 12:55 (комментарий был изменён)

    +1

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

    В изначальном объектно-ориентированном подходе у машины нет метода «ехать».

    Любой объект может принять любое сообщение, и результат не гарантирован.
    Машина, скорее всего, поедет, а лошадь скорее всего, нет — ей нужно сообщение «скакать галопом».

    Но когда ОО-языки стали превращаться из динамических в статические, процесс отправки сообщение объекту стал называться вызовом метода, а имя сообщения методом.

    Получилась подмена:
    изначально имя сообщения (метода) задавалось вызывающей стороной,
    , а потом внезапно оказалось, возможные для вызова методы стали задаваться на стороне объекта-приемника.
    Отсюда и получилось, что «машина имеет метод 'ехать'».

    Недавно на хабре была серия статей про Алана Кея и Smalltalk — можно обратиться к ним и почитать дополнительные материалы по Smalltalk.

    И, наверное, не случайно динамические языки до сих пор популярны и активно развиваются (Ruby и многие другие).

    • 18 декабря 2016 в 13:01

      0

      Спасибо за комментарий! Просто часто можно слышать про методы объектов класса в ООП и это вводит в заблуждение
    • 18 декабря 2016 в 13:23 (комментарий был изменён)

      0

      Машина, скорее всего, поедет, а лошадь скорее всего, нет — ей нужно сообщение «скакать галопом».

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

        0

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

        Конечно, машина и лошадь вполне могут обработать сообщение «переместиться», если в заданной предметной области способ перемещения не важен, а вот здание класса «недвижимость» — нет.

  • 18 декабря 2016 в 14:21

    0

    В мифологическом сознании первобытного человека за каждым действием стоит сознательное существо

    Нет. «Для мифологического сознания все, что существует — одушевлено.» (википедия)


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

    Вообще-то, нет. Чтобы ехать, не нужна воля.


    Наш язык настроен на отражение мифологического сознания

    С чего бы вдруг?


    Собственно, из двух показанных выше неверных посылок вы и строите неверный вывод: «В ООП мифологическое сознание проникло в виде методов, которые должны выполняться определенными объектами определенных классов.»


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

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

© Habrahabr.ru