[userpic]

Моделирование, метамоделирование, программирование, кодирование

ailev в Openmeta (оригинал в ЖЖ)

КунсткамераОпенметы
  КунсткамераОпенметы metanymous
Metapractice
Понемногу обо всем
  40. С чего начинался проект OpenMeta и почему не имеет продолжения metanymous
    Ailev: Моделирование, метамоделирование, программирован metanymous
Магия появления моделиста
  9. Магия появления моделиста metanymous
    ... metanymous
Uptime
  Uptime dvv7
    Re: Допустим... metanymous
Openmeta
Мооделирование
  Мооделирование metanymous
  Мооделирование metanymous
Ранжированный список тем опенметы
  Ранжированный список тем опенметы metanymous
Терминология
  Терминология kapterev
    ... ailev
Продолжу вытаскивание оборванных тредов из дискуссионных глубин.
ailev> Я бы тут завел другой не менее, а более жаркий спор: чем отличается моделирование от программирования?
А еще есть -- кодирование. Вот тут можно крепко засесть
metanymous> Программирование создает язык, а затем с помощью его создает новые объекты.
1. Моделирование создает Язык модели, который должен компилироваться нервной системой с NLP+некоторым числом Языкоидов+некоторым числом кодов, которорые уже есть "внутри" человека. Человек - это "машина компиляции".
2. Основная цель модели вызвать Изменение. В Восприятии, Представлении, Мышлении, Эмоциях, Физиологии, Поведении.

Это какое такое тотальное Изменение должна вызвать модель в человеке? Формулировочка-то не про "обеспечение изменений", а про Изменение! Ну да ладно -- пока потушим тут свет, завтра разберемся ;)
Программисткая метафора, так программистская -- вроде, информатику в средней школе уже давно ввели, поэтому имеем право использовать метафору, опирающуюся на знание информатики в объеме школьного учебника ;) К тому же меня пока не разубедили, что моделирование человека чем-то принципиальным образом отличается от моделирования чего бы то ни было другого в нашей богатой на чудеса вселенной, да метамоделирование (моделирование моделей) тоже какое-то особое. Конечно, субстрат -- это весьма специфическая штука, но в этом-то и вся прелесть моделирования, что оно как раз учитывает специфику чего бы то ни было, в том числе и специфику субстрата.
Моделирование в общем виде -- это "дизассемблирование" мира, из мировых трехмерных бинарников восстанавливаются в меру мастерства модельера интересующие его объекты и процессы, (и в отличие от "континуально-безымянной" с невыделенными объектами и процессами "бинарник"-like действительности) им даются символические имена. В нашем случае -- это восстановление и именование общих принципов функционирования коммуницирующего человека в разрезе его внутреннего опыта. Внутренний опыт -- это то, как смоделирован мир внутри человека и как эта модель может быть исполняема (как человек может задавать вопросы к своей модели мира и получать ответы).
Коммуницирующий homo sapience -- это "Человек разумный общительный", а не Человек, коммуницирующий в момент разумности или Человек разумный в момент коммуникации. Это такое уточнение в названии вида, чтобы показать неотрывность разумности и общительности.
Моделирование -- это наиболее общая деятельность по созданию любых моделей. Модельер (абсолютно неважно -- человек или компьютер) вычленяет из какого-то кусочка мира (материального или даже информационного) какие-то существенные (для Целей моделирования) свойства и создает "осколок мира", который корректно воспроизводит поведение мира в отношении этих существенных свойств. Модели могут быть как информационными (использующие фиксированную в какой-либо памяти информацию о структуре и свойствах модели, и вычислитель), так и натурными (использующими свойства самого мира -- типа модели самолета в аэродинамической трубе). Модель может быть и гибридной -- например, модель одного человека в другом (мы не можем сказать, насколько эта модель информационная, а насколько использует какие-то вполне натурные механизмы).
Программирование -- это наиболее общая деятельность по созданию информационных моделей. Информационные модели обладают тем свойством, что могут быть переданы в пространстве и времени, а также откопированы на другой носитель в знаковом виде. Программирование состоит из следующих циклических (итеративных) шагов: определение целей моделирования (какие свойства мира считать существенными), поиск закономерностей мира (наука), кодирование (формулирование закономерностей в потенциально исполняемом на целевом вычислителе виде). Использование модели -- это тоже может быть программирование, но уже другое программирование-2 (ежели информационная модель сама предназначена для целей моделирования -- например, программирование модели "самолета вообще" отличается именно этим от программирования модели конкретного самолета с использованием подготовленной на предыдущем шаге модели "самолета вообще". Как правило, языки (наборы знаков и их правила сочетаемости и интерпретации-выполнения) для программирования-1 и программирования-2 отличаются, и речь в таком случае идет о метамоделировании с некоторой иерархией этих "мета" (модель конкретного самолета, описанная на языке моделирования самолетов вообще, исполняемом в свою очередь на модели "самолетов вообще", описанной на языке программирования Фортран, исполняющемся на языке программирования процессора.
Кодирование -- это этап создания исполняемой модели на заданном исполнителе ("процессоре"), перевод из tacit knowledge в explicit knowlegde для этого исполнителя. Ежели исполнителем является человек, то это обеспечение понятности модели для других людей. Код -- это отчужденный от конкретного исполнителя текст (в общем семиотическом смысле этого слова, необязательно из букв и цифр) модели.
Так, можно хорошо воспроизводить работу Милтона Эриксона и быть его (натурной) моделью, но кодирование подразумевает изложение этой модели в знаковом виде и в таком виде передача для исполнения другому субстрату.
Собственно, проект openmeta имеет сейчас основной упор на кодирование, а новокодные практики главным образом опираются на создание натурных моделей без особого упора на промежуточный этап кодирования. Другое дело, что новый код концентрируется в том числе на создании модели создания натурных моделей без промежуточного этапа кодирования -- это тоже метамоделирование, но не информационное. Оно существенно использует то, что субстрат воплощает в себе как память для хранения кода модели, так и исполнитель этого кода, поэтому не требует промежуточного этапа кодирования (оно скрыто от внешних наблюдателей, код чудесным образом получается прямо в субстрате в результате внутреннего процесса моделирования). У нового кода остается одна задача (которую он выполняет, на мой взгляд, плохо): закодировать само знание о процессе "натурного субстратного моделирования" (тоже ведь модель моделирования, т.е. метамодель!) и обеспечить процесс инсталляции этого знания в субстрате. Собственно, эта модель и есть Новый Код. Подразумевается. что я загружаю Новый Код (путем чтения соответствующих книжек и выполнения указанных в них упражнений) к себе в субстрат, и затем оказываюсь в состоянии натурно моделировать exellence других людей. Особо замечу: но без возможности написать об этих моделях книжку, ибо в Новый Код модель кодирования практически не входит (разве в виде останков классического кода).
Вот в таком аксепте.
Таким образом, в нашем случае (исполнитель модели -- человек). Человек является исполнителем двух кодов:
1. Код "модели моделирования" (корпус знаний НЛП), получается путем понимания и присвоения знаний по НЛП. В нашем случае -- это Третий (новый, классический) код. Понятно, что у психоаналитика тоже есть свой Фрейдистский код ;)
2. Код конкретной модели поведения, полученной и выполняемой (а иногда -- и кодируемой) в языке Третьего кода.
Разные Коды (как и любые другие модели) конкурируют между собой по

  • точности воспроизведения целевых аспектов моделирования мира

  • скорости исполнения полученного кода

  • эффективности инсталляции

  • возможности кодирования конкретных моделей, полученных с использованием Кода (отслюнявливания модели от ее носителя)


Старый код выигрывает у Ad Hoc психологических кодов в точности воспроизведения и скорости исполнения полученного кода и эффективности инсталляции.
Новый Код выигрывает у Старого по точности воспроизведения целевых аспектов, но проигрывает по возможности кодирования конкретных моделей.
Третий код в данный момент топчется на возможности выигрыша у его предшественников по эффективности инсталляции (вся тема ОВД и Паттерн Моделирования -- это про это) и возможность кодирования конкретных моделей (вся дискуссия о том, достаточна ли новокодовая возможность натурного моделирования других людей).
Конечно, предлагаемое понимание связи понятий Моделирования, Кодирования, Программирования нуждается в коренной лексической переработке -- ну да уж пока хоть какое-то письменное выражение лучше, чем никакого ;)
Вспоминая, что было наиболее сложным в моем курсе хождения по программистским мукам -- это написание алгоритма сортировки методом пузырька. Там очень хорошо понимаешь, что такое состояние переменных программы, и как оно меняется во времени. ;)
А второе "прорывное" упражнение было -- развитие мышления про "мета". Это, насколько я помню, было для меня похлеще буддийского коана: переход от простого признания фактов что бывает объекты и их модели, а еще бывают программы, которые выполняют другие программы, к пониманию различий и переходов моделирования между миром, информационной моделью и компьютерной многометауровневой моделью (там пяток-шесток уровней программ -- начиная от программы модели, написанной на предметно-ориентированном языке моделирования, исполнитель которого написан на языке программирования высокого уровня, исполнитель которого написан на языке машинных кодов, который в свою очередь написан на микропрограммных кодах, испонитель которых в свою очередь написан на языке описания структуры микросхем (язык кремниевого компилятора), который в свою очередь использует примитивы вентилей. И вся эта многоэтажная конструкция работает!) -- причем принципы перехода от одного уровня мета к другому одни и те же.
Вот после этого мысленного "мета"погружения по уровням выполнения программы и было над чем призадуматься, тут и остановился у меня внутренний диалог.
Из подходов программирования-моделирования, которые четко выделяют подход с абстрактрыми Исполнителями, действующими в своих Мирах -- подход Лебедева-Кушниренко. Он учит не столько программированию на языках, сколько моделированию. Поэтому программисты недолюбливают эти учебники программирования (школьный и вузовский), а другие люди не могут понять, о чем это их авторы талдычат. Ведь они явно не учат программистским заморочкам про двойные циклы, а только знай себе тренируют мышление по этому самому"мета"-переходу...

8 комментариев

сначала старые сначала новые