Об моделирование

Feb 25, 2015 12:56

На сегодняшнем заседании Русского отделения INCOSE доклад А.Иванова "Системная инженерия SmartGrid". Там интересно в том числе как в рамках IoT идёт постепенная смена агентской терминологии. Примерно то же было в древнем "распознавании образов" и "кластерном анализе" по сравнению с сегодняшним "машинным обучением". Там ведь много похожего, но другого: например, акторная парадигма программирования (хотя и с трудом, это всё таки "совсем программирование" -- но акторы... они так похожи на агентов, если не присматриваться!), и даже микро-сервисы (всё распределённое можно смело подводить под "агентов").

В конечном итоге вся агентская тематика оказывается про распределённое моделирование мира. Программирование-в-большом, моделирование-в-большом (http://ailev.livejournal.com/748188.html), стандарты производства-в-большом (http://ailev.livejournal.com/851977.html).

Плюс моделирование мира не-людьми ("люди -- это случайные носители мышления", как заметил В.Я.Дубровский -- http://ailev.livejournal.com/1146390.html). Может, "настоящие агенты" это как раз те, которые явно моделируют окружающий мир? А которые не моделируют, это "просто программы"?

Там ещё тонкий момент, что модель тождественна модели-коду и выражается в своём technical space (по терминологии группы AtlanMod), т.е. это "модельное описание" (ср. онтологическое описание, архитектурное описание). А вот сама "идея-модель" (ср. онтология, архитектура) вообще слова не имеет. И есть у меня подозрение, что "идея-модель" -- это просто онтика (ср. онтическое описание).

И тут ещё нужно вспомнить, что в НЛП (нейролингвистическое программирование) моделированием называют по факту мета-моделирование, ибо там ведь последователи Грегори Бейтсона. А "просто моделирование" это так, текучка, обыденность. Интеллектуальные агенты (люди в том числе) -- это которые моделируют, или которые ещё и мета-моделируют? Слово "интеллект" ведь резиновое, ему можно любые значения приписать. Может, мы ещё получим не только Smart(от Clock до Cities), но и Wise (от Clock до Cities) ровно на основании различия в работе на разных логических уровнях.

Кстати, мой тезис о том, что программирование, моделирование, онтологизирование это разные стороны одной и той же медали, потихоньку находит подтверждение в мейнстриме. Я попытался отследить, что же происходит с Light Table (моя среда программирования Julia -- это Juno, http://junolab.org/ -- набор плагинов для Light Table). Выяснил, что проект вполне жив (http://lighttable.com/blog/). А основатели по-прежнему занимаются EVE, новой средой моделирования как "программирования для не-программистов". И Chris Granger выпустил месячишко назад текст, в котором очень близкие моему пониманию мысли про программирование как моделирование (и я обычно тут добавляю онтологизирование, но Chris Granger пока занимается программированием и моделированием-в-малом, а онтологизирование вылезает только для в-большом) -- http://www.chris-granger.com/2015/01/26/coding-is-not-the-new-literacy/.

Основное моё время сейчас уходит на размышления по поводу сформулированного противоречия между важностью, абстрактностью и кажущейся ненужностью мета-моделирования (и, тем более, онтологизирования) по сравнению с понятностью и важностью моделирования. Это было сформулировано в предпоследнем сюжете в http://ailev.livejournal.com/1167111.html и развито в тексте и комментах (добавлены примеры колмогоровской математики в начальной школе и более того, феномен отторжения теории категорий) в http://ailev.livejournal.com/1167450.html.

Если мы этому хотим учить, и хотя бы обсуждать это, то нужно учитывать и социальные факторы. Если их не учитывать, то учить будем никого, да и обсуждать придётся ни с кем.

Эта тема трудности обучения моделированию-метамоделированию очень близка к теме "Никто не хочет играть на XYZ" в http://ailev.livejournal.com/1158826.html, хотя формально от неё и отличается -- речь идёт об одном из способов усиления человеческого интеллекта, в ситуации, когда люди не хотят этот свой интеллект усиливать и поэтому не тратят сил на освоение сложного инструментария.

Встретил ещё пару релевантных ссылок в Communications of ACM (http://cacm.acm.org/blogs/blog-cacm/173328-programming-languages-are-the-most-powerful-and-least-usable-and-learnable-user-interfaces/fulltext) -- там обсуждается вопрос, почему люди не хотят учить языки программирования (языки моделирования, языки мета-моделирования). Там вводят понятия cognitive load (http://en.wikipedia.org/wiki/Cognitive_load, связанные с использованием рабочей памяти умственные усилия), для разных людей они будут разные при изучении предмета. И далее говорится, что люди оценивают не реальную когнитивную нагрузку, а субъективно воспринимаемую (percieved) будущую нагрузку -- когда вы даже воспринимать её по факту не можете, ибо ещё не знакомы с предметом. Да, и полезность вы тоже представить не можете, ибо не знакомы с предметом. А решение "учить-не учить" принимается до изучения предмета. То есть бесполезно уговаривать что-то учить, потому как оно "полезно". Решение принимается не только и не столько по "пользе", сколько по "цене изучения" -- например, считает ли потенциальный ученик, что у него есть способности к предмету. Это всё expectancy value motivational theory -- http://www.education.com/reference/article/expectancy-value-motivational-theory/. If students are not convinced they can learn it and they are not convinced of the value, then they don't learn it. Решение автор текста предлагает в повышении usability для изучаемых предметов (языков программирования/моделирования), но и learnability -- это разные свойства. Requirements нужно формулировать для обеих характеристик. Легко такую банальность предложить, трудно выполнить.

Вообще, "ожидаемая лёгкость" связанная с "самооценкой способностей" -- это страшное дело. Вот последнее исследование, показывающее разницу в количестве minorities и womens PhD по разным дисциплинам ровно из-за этой "боязни быть недостаточно гениальными" -- http://polit.ru/news/2015/01/18/ps_women/ ("дам и потомков выходцев из Африки среди Ph. D. было больше в тех науках, где врожденные способности не считались чем-то абсолютно необходимым. В этот список попали социология, история и археология. Мужчины-европеоиды, а также азиаты преобладали среди технических и математических специальностей, например, физики, астрономии и компьютерных наук. Кстати, сами женщины особенно часто называли эти специальности требующими врожденного таланта").

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

Эти все соображения не проясняют, что делать. Но хотя бы предотвращают от бессмысленных шагов типа "давай я ещё пару строк напишу, почему важен материал следующих трёх параграфов" -- решение вчитываться или не вчитываться в эти параграфы будет приниматься студентом или поднимающим квалификацию пожилым сотрудником компании отнюдь не только на основании этой дополнительной пары строчек.
Previous post Next post
Up