Добавил замечание к статье, которое выкладываю ниже:
По результатам обсуждения статьи выяснилось, что некоторые читатели слишком буквально воспринимают её название, в следствии чего пытаются найти или увидеть в ней формальные определения и доказательства. Такой цели автором не ставилось. Задача статьи рассмотреть виды сложности, лучше понять её природу и неочевидные стороны. Так же хочу всех успокоить, автор вполне осознаёт, что он не открыл новый закон природы, более того, он понимает, что в строго научном смысле такого закона не существует, а выбор заголовка в большей степени обусловлен пристрастием автора к пафосным названиям.
Надеюсь это успокоит формалистов и направит обсуждение в более продуктивное русло.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
... IT>По поводу названия и некоторых терминов я уже отвечал. Если это тебе не нравится, предлагай свои. Меня это всё мало волнует. Если ты думаешь, что я думаю, что я изобрёл новый закон, то могу тебя обрадовать, я так не думаю.
Можно кстати погуглить что-нибудь вроде "сonservation of сomplexity".
VGn>>Собственно о сложности VGn>>Как описывалось ранее и другими участниками дискуссии, человеческий разум устроен таким образом, что проще воспринимается структурированная информация, а значит связывать сложность с энтропией вполне приемлемо (отсюда и термин "энтропия кода"). Отсюда и аналогии энергии и полезной работы с усилиями по разработке кода.
IT>Не понятно как твои теории объясняют то, что при упорядочивании сложность кода может увеличиваться.
Например так: алгоритмическая энтропия объекта (cложность по Колмогорову) — это длина наиболее ёмкого описания, по которому объект можно восстановить. Если при упорядочении описание увеличивается — то и сложность тоже.
Но это не имеет отношения к пониманию. Но, например, к языку программирования имеет — поскольку он является средством выражения описания объекта(в оригинале — двоичных строк). Для разных описаний сложность отличается не более чем на константу, под которой можно понимать "длину" транслятора(т.е. размер кода) с одного языка на другой.
Здравствуйте, IT, Вы писали:
IT>Если бы сложность разработки ПО можно было описать с помощью других аналогий, то её бы уже давно описали и без нас с тобой. Поверь мне на слово. Но пока этого не произошло. Не помогает здесь почему-то ни термодинамика, ни философия. Некоторые принципы и аналогии позаимствовать можно, но не более того.
Причем тут термодинамика? Уже почти сто лет существует теория информации, котороя хоть и почерпнула часть от термодинамики, но достаточно сильно от нее отличается.
В теории информации есть понятие энтропии, но нету второго начала (возрастания энтропии при любом процессе).
Вы почему-то пытаетесь придумать этот закон.
IT>Не понятно как твои теории объясняют то, что при упорядочивании сложность кода может увеличиваться. В программировании это называется overarchitecture. Штука, встечающаяся чуть ли не чаще, чем вообще полное отсутствие архитектуры. Любой инструмент, любая техника, любой принцип, любая теория в программировании может быть использована не только во благо, но не редко совсем наоборот. Происходит это в следствии того, что попытка устранения сложности в одном месте всегда, ВСЕГДА!, сопровождается добавлением сложности в другом. Статья именно об этом.
Не заметил обоснованности перехода от "может" к "всегда". Нету в теории информации постоянного возрастания энтропии.
overarchitecture — накручивание архитектуры без необходимости (без решения явных задач). Если производить упорядочивание существующего кода, то энтропия будет уменьшаться.
VGn>Очень часто при анализе сложных систем и процессов используют аналогии из термодинамики. Потому что термодинамика — одна из самых стройных наук и при VGn> этом имеет большую философскую основу. VGn>Поэтому во многих обсуждениях можно услышать "энтропия", "работа", "энергия" и т.д. VGn>Естественно, что с беспорядком борятся упорядочиванием, структуризацией, построением иерархий. VGn>В сущности абстрагирование — это в какой-то мере и есть построение иерархии. VGn>Собственно из теории. VGn>Состояния с высокой энтропией являются более равновесными состояниями, чем с низкой.
Ага. Это уже любопытно...
Но вот тут жареным запахло
Одной термодинамикой уже не отделаешся, если речь о неравновесных состояниях систем,процессов, да еще и в которых человек замешан. В этом случае все существенно усложняется.
Там где заканчиваются область компетенции термодинамики (и что от нее отпочковалось, например разделы теории информации).
Там уже начинается область, где хоть что-то пытается сделать синергетика и то что от нее отпочковалось(или припочковалось или похожее по смыслу).
Например теории организаций,многоагентных систем,интеллектуальных организаций,самоорганизующихся систем.
Неважно,теории это или нет, главное что по этим направлениям немало работ философов(или уже не философов а междисциплинарных...).
Они тоже довольно абстрактные больше философское(как и попытки применять термодинамику ко всему что состоит из многих частей). Может еще более абстрактные.
Но это все хозяство имеет корни не в термодинамике, а скорее в нелинейной динамике.
Вот с некоторой натяжкой можно сказать основная цель программистов создавать и поддерживать системы в неустойчивых состояниях.
Касается не только системы в виде программы, а и системы организации построения программ.
Чего они там философствуют можно посмотреть на подборке цитат из нескольких источников. Такие мнения не спроста возникают. Наверно это все, так или иначе знакомо, но на всякий случай закину.
Не знаю есть ли в них смысл после выдергивания из контекста, но может что-то близко теме окажется:
(перед мелкой цитатой символ "-", большие отделены чертой)
- Только сравнительно недавно стало ясно, что все новое в мире возникает в результате бифуркаций, а основной причиной самоорганизации материи на любом уровне (неживой природы, биологической, социальной) являются неустойчивые, критические состояния.
— Можно сказать также, что в неустойчивых явлениях не выполняется один из основных принципов естествознания — принцип воспроизводимости научных результатов.
— Небольшое возмущение или ошибка ведут к большим последствиям, и точное предсказание поведении таких систем на больших временных интервалах становится невозможным.
— Мозг человека функционирует вблизи критического состояния.
— Обычно среди огромного числа переменных в этой системе находится одна наиболее неустойчивая. Анализ поведения таких систем показывает, что эта неустойчивая переменная подчиняет себе все остальные переменные, которые по этой причине вообще могут быть исключены из рассмотрения. Таким образом, поведение всей самомоорганизующейся системы состоящей из огромного числа компонентов, будет определяться поведением лишь одной неустойчивой переменной, которая получила название параметра порядка.Определяющая роль наиболее неустойчивой переменной в процессах самоорганизации известна как принцип подчинения.
Параметр порядка играет роль информатора о состоянии сложной системы, поскольку благодаря появлению этой макроскопической переменной происходит гигантская компрессия информации; отпадает необходимость описывать состояние каждого элемента самоорганизующейся сложной системы.
— Было предложено простое уравнение, описывающее движения стержня. Исследование этого уравнения показывает, что действительно возможно неуправляемое человеком поддержание стержня в вертикальном положении за счет стохастического воздействия на нижний конец.
— Особое место в синергетике занимают вопросы спонтанного образования упорядоченных структур различной природы в процессах взаимодействия, когда исходные системы находятся в неустойчивых состояниях. Следуя И. Пригожину, ее можно кратко охарактеризовать как “комплекс наук о возникающих системах”.
— Зона бифуркации характеризуется принципиальной непредсказуемостью— неизвестно, станет ли дальнейшее развитие системы хаотическим или родится новая, более упорядоченная структура. Здесь резко возрастает роль неопределенности: случайность на входе в неравновесной ситуации может дать на выходе катастрофические последствия. В то же время, сама возможность спонтанного возникновения порядка из хаоса — важнейший момент процесса самоорганизации в сложной системе.
— Система, находящаяся в неравновесном состоянии, более чутка и восприимчива к воздействиям, согласованным с ее собственными свойствами. Поэтому флуктуации во внешней среде оказываются не “шумом”, а фактором генерации новых структур. Иными словами, неравновесность сложной системы может стать причиной спонтанного морфогенеза.
— Свойство самоорганизации приводит к формированию аттракторов — особых подмножеств в пространстве возможных состояний нелинейных систем, к которым притягиваются близкие траектории. Аттракторы как притягивающие множества в пространстве состояний являются асимптотически устойчивыми множествами. Аттракторы, отличные от состояний равновесия получили название “странных аттракторов”. Внутри них траектории блуждают случайным образом, будучи весьма чувствительными к изменению начальных условий.
----------------------------------------
Главные принципы синергетического подхода в современной науке таковы:
Нетрудно понять, что перечисленные принципы синергетической методологии можно разбить на три группы: принципы сложности (1 — 5), принципы неопределенности (5 — 9) и принципы эволюции (10-12).
1) Принцип неаддитивиости. Функция эффективности F(x,y)>F(x)+F(y)
(функция эффективности целого всегда больше суммы функций эффективности его частей). Хорошим примером такой величины служит негэнтропия (отрицательная энтропия) как мера упорядоченности,
поскольку по К. Шеннону условная энтропия H(x,y)<=H(x)+H(y)
Здесь равенство имеет место только для независимых элементов х и у, т. е. кооперация элементов в системе означает рост ее упорядоченности.
2) Принцип целостности.
В сложных системах свойства целого не сводятся к свойствам составляющих его частей. С одной стороны, кооперативное взаимодействие элементов в сложной системе приводит к формированию новой системы с ранее неизвестными свойствами. С другой стороны, для определения свойств частей необходимо знать свойства целого.
3) Принцип дополнительности Н. Бора.
В сложных системах возникает необходимость сочетания различных, ранее казавшихся несовместимыми, а ныне взаимодополняющих друг друга моделей и методов описания.
4) Принцип спонтанного возникновения И. Пригожина
В сложных системах возможны особые критические состояния, когда малейшие флуктуации могут внезапно привести к появлению новых структур, полностью отличающихся от обычных (в частности, это может вести к катастрофическим последствиям — эффекты снежного кома” или эпидемии).
5. Принцип несовместимости Л. Заде
При росте сложности системы уменьшается возможность ее точного описания вплоть до некоторого порога, за которым точность и релевантность информации становятся несовместимыми, взаимно исключающими характеристиками.
6. Принцип управления неопределенностями
В сложных системах требуется переход от борьбы с неопределенностями к управлению неопределенностями. Различные виды неопределенности должны преднамеренно вводиться в модель исследуемой системы, поскольку они служат фактором, благоприятствующим инновациям (системным мутациям).
7. Принцип незнания
Знания о сложных системах принципиально являются неполными, неточны- ми и противоречивыми: они обычно формируются не на основе логически строгих понятий и суждений, а исходя из индивидуальных мнений и коллективных идей. Поэтому в подобных системах важную роль играет моделирование частичного знания и незнания.
8. Принцип множественности НЕ-факторов
При разработке сложных систем требуется принимать во внимание целую гамму НЕ-факторов знаний, где наряду с обычными НЕ-факторами в смысле А.С. Нариньяни [Нариньяни, 1998], ( неопределенность, неточность, неполнота, недоопределенность,...), следует учитывать и синергетические НЕ-факторы: нелинейность, неустойчивость, неравновесность, незамкнутость...
Здесь нелинейность означает нарушение аддитивности в процессе развития системы, а неустойчивость связана с несохранением близости состояний системы в процессе ее эволюции.
9. Принцип соответствия.
Язык описания сложной системы должен соответствовать характеру располагаемой о ней информации (уровню знаний или неопределенности). Точные логико-математические, синтаксические модели не являются универсальным языком, также важны нестрогие, приближенные, семиотические модели и неформальные методы. Один и тот же объект может описываться семейством языков различной жесткости [Налимов, 1979].
10. Принцип разнообразия путей развития
Развитие сложной системы многовариантно и альтернативно, существует “спектр” путей ее эволюции. Переломный критический момент неопределенности будущего развития сложной системы связан с наличием зон бифуркации— “разветвления” возможных путей эволюции системы. Рассуждения о сложных системах могут интерпретироваться в различных “возможных мирах”, т. е. сложность предполагает объединение различных (и даже противоположных) логик. Переход от одной логики к другой отражает процесс становления системы, причем вид конкретной логики зависит от этапа эволюции системы и складывающейся ситуации.
11. Принцип единства и взаимопереходов порядка и хаоса
Эволюция сложной системы проходит через неустойчивость; хаос не только разрушителен, но и конструктивен. Организационное развитие сложных систем предполагает своего рода конъюнкцию порядка и хаоса.
12. Принцип колебательной (пульсирующей) эволюции
Процесс эволюции сложной системы носит не поступательный, а циклический или волновой характер: он сочетает в себе дивергентные (рост разнообразия) и конвергентные (свертывание разнообразия) тенденции, фазы зарождения порядка и поддержания порядка. Открытые сложные системы пульсируют: дифференциация сменяется интеграцией, разбегание — сближением, ослабление связей — их усилением и т.п.
-----------------
Гомеостатика — это наука о принципах и механизмах самосохранения, поддержания равновесия, гармонии в естественных и искусственных системах.
Тремя ведущими принципами гомеостатики являются принципы противоречия, гармонии и аналогии. В центре внимания гомеостатики находится взаимодействие противоположностей, “cклеивание” и “расщепление” антагонистов, управление внутренними противоречиями в системах, состоящих из “полярных единиц”, а также анализ возникновения патологий и катастроф в таких системах. Сам термин “гомеостазис”, введенный в научный обиход К. Бернаром и У. Кентоном, означает “остаться таким же”, т. е. гомеостатическая система остается устойчивой при внешних возмущениях.
Четырьмя ключевыми составляющими, необходимыми для существования гомеостатической системы являются:
а) внутренние противоречия;
б) иерархическая организация; в) соподчинение гомеостатов;
г) реализация в управлении принципа регулируемого противоречия (символ китайской монады) [Горский, 1998; Курейчик В. М. и Курейчик В. В. 2000].
-------------
Самоорганизующимися называются системы, которые формируются спонтанно, в результате преимущественно локальных взаимодействий между элементами. Как правило, в их основе лежит согласованное поведение большого числа взаимодействующих агентов. Подобные системы возникают при определенных граничных условиях как следствие особых состояний агентов (в синергетике такие состояния именуются притягивающими — “аттракторами”) [Хакен, 1991].
На микроуровне при самоорганизации происходит процесс распространения или усиления флуктуаций вследствие увеличения асимметрии, неравновесности системы под воздействием среды. Этот процесс остается незаметным на макроуровне до тех пор, пока изменения не достигнут некоторого критического значения, после чего спонтанно возникает новый порядок или структура.
В автономных системах преобладают положительные обратные связи, круговые процессы, рекурсивные отношения. Принято различать: а) пассивную автономию, обеспечиваемую, на- пример, с помощью мембраны (защитного экрана); б) реактивную автономию (обратные связи); в) активную автономию, предполагающую проведение целенаправленных воздействий на среду. Входные воздействия не столько определяют поведение автономного агента, сколько являются лишь “пусковыми факторами”, инициализирующими различные стратегии поведения.
--------
Понятие самоорганизации автономного агента неотделимо от таких его свойств как самовоспроизведение, самосохранение, саморегуляция (самоуправление).
Как уже отмечалось, базовым механизмом самосохранения является гомеостазис, т. е. способность агента постоянно определять и поддерживать в требуемых интервалах ряд критических параметров состояния, определяющих его гомеостатическую границу.Само существование такой организации предполагает функционирование обратных связей, сохраняющих гомеостазис.
--------
Исследование вопросов экоорганизации связано в первую очередь с открытыми системами, находящимися вдали от состояния равновесия. При этом хаос, беспорядок рассматриваются не как аномалии, которые надо преодолеть любым путем, а как одно из условий, обеспечивающих инновации — важнейшую предпосылку выживания современных организаций.
--------------------
... У него система есть не просто заданное множество элементов с фиксированными отношениями, а еще и процесс (или поток процессов) производства составляющих, связанных циклами развития и деградации. Эта сеть процессов производства составляющих и понимается под организацией системы, тогда как структура есть особый пространственно-временной образ (паттерн) произведенных составляющих. Иными словами, система рассматривается не как нечто застывшее, а как процесс постоянных преобразований, связанных с непрерывной сменой состояний равновесия.
В основе тектологии лежат понятия формирования и регулирования динамических комплексов (систем). Вводятся три типа комплексов: организованные, дезорганизованные, нейтральные, причем утверждается, что эта таксономия зависит от наблюдателя и контекста. По сути дела, А. А. Богдановым сформулирован принцип относительности в теории систем.
Для описания закономерностей функционирования и развития систем А. А. Богданов ввел понятия динамического равновесия, прогрессивного и консервативного отбора, регулятора и бирегулятора. Прогрессивный отбор, лежащий в основе возникновения, роста и развития системы, включает в себя механизмы положительного и отрицательного отбора. В случае положительного отбора в системе увеличивается неоднородность компонентов и число внутренних связей и, таким образом, повышается ее сложность и степень автономии частей. В результате, положительный отбор обычно повышает эффективность системы, но увеличивает ее неустойчивость. Поэтому необходимы меры, которые ослабляют действие этих факторов, и охватываются термином “отрицательный отбор”. При отрицательном отборе повышается порядок и однородность, возрастают уровень централизации и координации отдельных действий. Отрицательный отбор повышает структурную целостность и устойчивость системы, но одновременно снижает ее функциональную эффективность. Направленность отбора, от которой зависит формирующаяся структура системы, относительна стабильна в неизменной среде; наоборот, в быстро изменяющейся среде отбор идет то в одном, то в другом направлении.
...
Он также утверждал, что чем сложнее организация, тем больше шансов у нее столкнуться в процессе развития с кризисной ситуацией, необходимостью структурной перестройки.
--------------------------
— В русле МАС(много-агентные системы) речь идет о кооперативном взаимодействии множества агентов, которое макроскопически проявляется как самоорганизация. Такие МАС могут путем самоорганизации образовывать новые пространственные, временные или функциональные структуры...
-Во-первых, взаимодействия между агентами имеют определенную направленность — положительную или отрицательную, т. е. носят характер содействия или противодействия, притяжения или отталкивания, кооперации или конкуренции, сотрудничества или конфликта, координации или субординации, ...
— В общем случае понятие кооперации можно определить формулой: кооперация = сотрудничество + координация действий + разрешение конфликтов
Более подробно, об уровне кооперации агентов в МАС можно судить на основе следующих показателей [Durfee et al., 1987]:
1) степень распределения обязанностей, ответственности и ресурсов (в том числе, знаний);
2) уровень координации действий, включая согласование направления действий агентов в пространстве и во времени;
3) степень запараллеливания (совмещения) задач, решаемых различными агентами;
4) неизбыточность действий, довольно малое число дублирующих, повторяющих друг друга действий;
5) избегание (или малая длительность) конфликтов;
6) живучесть, понимаемая как способность МАС пережить отказ или потерю агента.
-------------
Классическими методами исследования кооперации и переговорных процессов являются методы теории полезности и теории игр, в частности, известные модели и условия оптимальности, выраженные в виде принципов равновесия.
Равновесие по Парето — это ситуация равновесия, при которой улучшение положения одного агента невозможно без ухудшения состояния другого.
Основой оптимальности по Нэшу является устойчивость МАС, обусловленная интересами и возможностями отдельных агентов, тогда как принцип оптимальности по Парето опирается на идею полезности, выгоды для МАС в целом, понимаемой как выгода сразу для всех ее агентов.
------------------------
К числу основных критериев, определяющих тип организации МАС, относятся:
— вид внешней среды, в которую погружена организация (статическая или динамическая, закрытая или открытая и т. п.);
— характер связей между агентами в организации (постоянные или переменные, вертикальные или горизонтальные);
— способ возникновения (заранее заданная, спроектированная организация или спонтанно возникающая в результате взаимодействий между агентами);
— характер распределения функций, ролей, и ответственности, определяющий гибкость связей (жесткие или гибкие, постоянные или переменные);
— вид и геометрия организационных единиц (элементарное функциональное подразделение, описываемое простой иерархией древовидного типа, или автономная междисциплинарная рабочая группа, представляющая собой сложную неоднородную сеть с преобладанием горизонтальных связей, например кольцевую структуру);
— тип управления (субординация или координация);
— структура принятия решений (моноцентризм или полицентризм);
— владение ресурсами или характер ресурсного обеспечения (централизованное или децентрализованное);
— морфология организации (монолитная, сосредоточенная или распределенная, сетевая организация);
— характер коммуникации агентов (непосредственная или опосредованная, ближняя или дистанционная);
— стратегии развития организации (жесткое планирование или самореорганизация);
— стратегии адаптации к среде (телогенез или арогенез).
-----------------------------
— Доминирование вертикальных связей порождает реактивные стратегии организационного поведения, описываемые схемой “стимул — реакция”. Приоритет горизонтальных связей претворяет в жизнь активные стратегии организационного поведения, ориентированные на потребности завтрашнего дня, на развитие организации.
— Разумная степень децентрализации управления обеспечивает большую живучесть МАС. Однако чрезмерная децентрализация приводит к трудностям координации поведения агентов, увеличению времени адаптации, а порой, просто лишает МАС возможности фокусировать усилия агентов на достижение общих целей.
— Позднее, в развитие этих идей М. Крозье сформулировал принцип относительной рациональности: “любые стратегии рациональны лишь по отношению к контексту, внутри которого они существуют” [Crozier and Serieyx, 1994].
--------------------------------
Процессы эволюции и реорганизации МАС могут быть связаны с ответами на следующие вопросы.
— Есть ли изменения среды, в которой функционирует МАС? Носят ли они регулярный, направленный характер или скорее случайны?
— Можно ли спрогнозировать будущее состояние среды и как скоро оно наступит?
— В какой степени могут быть скомпенсированы нежелательные изменения среды активными действиями МАС?
— Как и в какой степени следует изменить функции, процессы, структуру и деятельность МАС? Каковы ее новые организационные структуры, которые будут достаточно эффективны при новом состоянии среды?
— Какие агенты (и организационные уровни) в МАС в наибольшей степени будут затронуты ее структурной перестройкой? Какие организационные единицы имеют наибольший запас адаптивных резервов?
— Какие ресурсы необходимы для перестройки различных уровней системы? Основными видами изменений функций агентов в ходе эволюции МАС являются:
а) интенсификация функций — основной тип филогенетического изменения;
б) ослабление функций;
в) мобилизация функций;
г) иммобилизация функций;
д) расширение функций;
е) перераспределение функций;
ж) уменьшение числа функций (с усилением главной функции подавляются другие, второстепенные);
з) смена функций;
и) замещение функции одного агента аналогичной функцией другого агента;
к) компенсация функций различных агентов и неравномерности их адаптации к среде.
- Наконец, наиболее распространенное в сообществе специалистов по ИИ мнение связывает интеллект со способностью строить модели реальности, а интеллектуальность системы — с наличием у нее собственной внутренней модели внешнего мира. Более того, эта модель должна быть корректируемой и характеризоваться вы- сокой адаптивностью [Арбиб, 1976]. С уровнем развития внутренней модели тесно связаны возможности планирования поведения; а также формирования умений.
-В семиотической системе состояния соответствуют фиксированным формальным системам, а смена состояний заключается в изменении различных параметров формальной системы: аксиом, правил вывода, ограничений, стратегий поиска решений, ценностных ориентаций и т. п.
-Формализуя строгие, корректные выводы, классическая логика не принимает во внимание многие важные аспекты человеческих — рассуждений (здравый смысл, немонотонность, противоречивость, неточность, нечеткость). Когда человек имеет дело с неполной, неточной, противоречивой, неопределенной или нечеткой информацией, его рассуждения становятся не достоверными, а всего лишь правдоподобными, предположительными и должны подвергаться проверке и пересмотру (ревизии). Для представления такой информации, ее анализа и обоснования выводов разработаны нетрадиционные, “нестандартные” логики, являющиеся расширением классических логик. Эти расширения касаются языка логики и понятия вывода.
В стандартных логических системах, если из посылок выведено некоторое заключение, а затем к посылкам добавлена новая информация, то исходное заключение не меняется. В немонотонных логиках это уже не так. Если к старым посылкам добавить новое знание, то чаще всего получитс и новое заключение. Построение немонотонной системы вывода делает необходимым ослабление свойств дедуктивных систем классической логики.
— Модальные логики, в которых для описания агентов наряду с обычными высказываниями (предикатами) допускаются модальности типа “возможно” и “необходимо” (алетическая логика), “известно” и “неизвестно” (эпистемическая логика), “верит (убежден) и не верит” (доксастическая логика), “желает” и “не желает” (оптитативная логика) “обязательно” и “разрешено” (деонтическая логика), “всегда” и “иногда” (временная логика) и т.д., представляют собой расширения классической логики.
— Никакое сколько-нибудь сложное явление, а тем более, интеллектуальное поведение нельзя описать средствами одного-единственного языка. Как правило, для этого требуется набор языков различной жесткости (см. [Налимов, 1979; Моисеев, 1995]), сочетание различных логик анализа, множество интерпретаций интеллектуальной системы. Таким образом обеспечивается “голографическая картина” системы, связанная с использованием различных точек зрения.
— Принцип приоритета процессов координации над субординацией, т. е. это — принцип преимущественного учета горизонтальных связей в интеллектуальных процессах. Иными словами, предполагается невозможность решения сложных задач отдельными агентами, опирающимися на локальные модели (и в то же время, невозможность построения ими в одиночку полных или глобальных моделей внешнего мира). Следствием этого является преобладание кооперативных и коалиционных стратегий над чисто конкурентными и индивидуалистическими в интеллектуальном поведении.
-Примерами сложных интеллектуальных систем служат: гибридные интеллектуальные системы, системы мягких вычислений, системы с кооперативным поведением, интеллектуальные агенты, распределенные системы управления, многоагентные системы, виртуальные коллективы, интеллектуальные организации, эволюционирующие искусственные сообщества.
— Минский связывает интеллектуальность системы со степенью непонимания наблюдателем того, как она решает задачи.
Резкие скачкообразные переходы, свойственные параметру порядка в процессах самоорганизации, имеют место и в творческом процессе. Именно с таким скачком в творческом, продуктивном мышлении соотносят в психологии творчества озарение, скачок мысли, инсайт, в результате которого рождаются качественно новые идеи. Для шаблонного, репродуктивного мышления свойственно стремление свести задачу к уже известным случаям, воспользоваться уже готовыми способами.
Бифуркации, ведущие к дивергенции. С нелинейными свойствами моделей развития связан еще один вид поведения в критических точках — ветвление решений, когда в точке бифуркации нарушается единственность решения.
В биологии развития в таких случаях говорят о дивергентности, которая ведет к увеличению разнообразия видов. Это свойство является
важным фактором адаптации живых организмов к изменяющимся условиям внешней среды.
В психологин мышления и творчества есть понятие дивергентности мышления, означающее свойство мышления расходиться в разных направлениях. Американский психолог Гилфорд считает это свойство наиболее важным в творческой деятельности. В самом деле, творчество означает создание качественно нового, а в результате ветвления решений дифференциальных уравнений как раз появляются качественно новые свойства в поведении соответствующих систем.
Отбор и конвергенция После прохождения стадии дивергенции в развивающихся системах наступает процесс отбора, в ходе которого уменьшается разнообразие ранее возникших форм, растет упорядоченность в системах, уменьшается стохастичность. В настоящее время построено достаточно много математических моделей, описывающих конвергенцию в живой природе.
В научном творчестве тоже рано или поздно наступает этап, когда необходимо вписать предложенные модели и идеи в существующую систему знаний, отобрать окончательный, наиболее правильный вариант. Предложены даже математические модели конкуренции различных теорий в науке, похожие на модели конкуренции видов в биологических системах.
Конвергенция имеет место и в художественном творчестве. В процессе работы над художественным произведением автор пробует различные варианты и в конце концов оставляет один — с его точки зрения, наиболее удачный.
-------------
Основным универсальным количественным законом в лингвистике, справедливым для всех естественных языков, является степенной закон распределения слов. Впервые этот закон был открыт в 1949 году лингвистом Гарвардского университета Г. Ципфом (George Kingsley Zipf) За прошедшее время было предложено несколько моделей, объясняющие возникновение закона Ципфа, однако ни одну из них нельзя признать удовлетворительной.
Лишь совсем недавно Р. Феррери Канчо (Ramon Ferreri i Cancho) и Р.Соле (Ricard Sole) предложили модель возникновения языка как критического явления, и закон Ципфа стал естественным свойством этой модели.
Это согласуется с тем, что любое принципиально новое явление в биологической эволюции связано с феноменологией критических явлений.Модель основана на естественном предположении, что говорящий стремится к краткости и лаконизму, чтобы минимизировать свои усилия В предельном случае говорящему хотелось бы передать сообщение одним словом.
Слушающий, напротив, чтобы легче было понять сказанное, хотел бы, чтобы сообщение было максимально развернутым. Реальное сообщение всегда есть компромисс между требованиями говорящего и слушающего.
В модели Канчо Феррери и Соле язык возникает скачком, а не постепенно. То есть не существует промежуточного состояния между богатством человеческого языка и ограниченными сигнальными возможностями некоторых животных. Когда этот скачок произошел, частота использования различных слов во всех языках, как оказалось, подчиняется одному и тому же закону — степенному закону Ципфа.
-----------------
Идеи и положения регулятивного подхода находят свое применение в контексте агентификации искусственных систем, когда се большую роль начинает играть моделирование мотивов, убеждений, намерений, желаний, интуиции и ряда других компонентов психики, относящихся к потребностно-мотивационной и аффективно-чувственным сферам. Методология структурно-уровневого подхода, а также работы по функциональной организации когнитивных процессов представляют большой интерес в контексте синтеза архитектур интеллектуальных агентов. Элементы “триархической теории”, основанные на метафоре “управления государством”, предполагают выделение соответствующих функций (законодательная, исполнительная, оценочная), уровней (глобальный и локальный), форм (монархическая, анархическая, иерархическая, олигархическая), сфер (внутренняя, внешняя), ориентаций (консервативная, прогрессивная) интеллекта. Данный подход напрямую соотносится с такой актуальной проблематикой информатики и ИИ как проектирование многоагентных систем и разработка интеллектуальных организаций.
----------------
Школа гештальт-психологии, наиболее яркими представителями которой являются М. Вертгеймер, К. Бункер, В. Келер, К. Коффка, впервые ушла от выдвинутого интроспекционизмом и структурализмом принципа расчленения психики на элементы и складывания каких-то более сложных процессов и закономерностей, исходя из простых элементов. Она выдвинула принципиально новое положение о том, что первичным моментом психических процессов являются не отдельные элементы, а целостные структуры.
Главной заслугой этой школы стала разработка теории единых, неделимых психологических структур — гештальтов (см. [Вертгеймер, 1987]). Фактически в рамках гештальт-теории было возрождено античное представление о том, что целое определяет свойства частей и может быть больше суммы образующих его частей.
Ее сторонниками, пожалуй, впервые в психологии была обоснована идея о неаддитивности психики. В центре гештальтистских объяснений оказалось “псевдофизическое” представление о динамическом поле, где каждая точка взаимодействует с другими. Изменение напряжения в одной из точек порождает стремление к устранению этого напряжения и восстановления равновесия. Кроме того, было введено понятие об инсайте — внезапном озарении, мгновенном (одновременном) схватывании всех существенных отношений в ментальном пространстве. Это понятие стало основным при объяснении адаптивных форм поведения и эвристических процессов в противовес принципу полного перебора или методу проб и ошибок, восходящему к идеям бихевиоризма.
-----------------------
Как возникает интеллект в онтогенезе? Благодаря действиям. “Посредником” между ребенком и окружающим миром являются действия. И слова, и образы сами по себе мало что значат для развития интеллекта. Нужны именно действия.
-----------------------
Согласно Ж. Пиаже, для формализации теории интеллекта следует построить психологику, которая призвана ликвидировать разрыв между относительной расплывчатостью психологических теорий и дедуктивной строгостью формальных (логических) систем. Одним из главных заключений его операциональной теории является то, что алгебра логики может помочь выявить психологические структуры и представить в форме исчисления основные операции и структуры, характерные для интеллектуальных процессов. При этом психологика должна относиться к психологии интеллекта точно так же, как математическая физика относится к экспериментальной.
------------
В психологии принято выделять: вербальное и образное, репродуктивное и продуктивное, теоретическое и практическое, логическое и интуитивное мышление [Брушлинский, 1979; Тихомиров, 1984]. В частности, интуитивное мышление характеризуется быстротой протекания мыслительных процессов, отсутствием четко выраженных этапов, минимальной осознанностью. В то же время, логическое мышление, будучи развернутым во времени, имеет четко выраженные фазы и в значительной мере осознается субъектом.
----------
С другой стороны, одной из фундаментальных особенностей естественного интеллекта является широкое использование суждений и рассуждений на шкалах — сходства, предпочтения, полезности, уверенности, временных, пространственных и т. п.
В мышлении человека порядок создается из хаоса путем формирования системы оппозиционных (полярных) шкал и различения некоторых объектов с помощью оценок на этих шкалах.
-----------
По своему происхождению и функциям знания разделяются на две группы.
а) знания 1-го рода (ЧТО-знания или “холодные” знания)- общетеоретические утверждения, принципы, закономерности, зафиксированные в книгах, справочниках, инструкциях и пр., которые субъект получает извне;
б) знания 2-го рода (КАК-знания или “горячие” знания) — правила, процедуры, эвристики, формируемые в собственной практической деятельности субъекта и хранящиеся в его памяти.
----------
Для навыка характерна стереотипность: он не нуждается в помощи мышления, а функционирует за счет выработанных условных связей. Важная роль навыков состоит в том, что они разгружают психику от регулирования простых элементарных операций.
---------
Непонимание (диалог с использованием не полностью идентичных языков) является не менее ценным смысловым компонентом, что и понимание [Лотман, 2000]. При этом извне получается лишь малая доля информации, которая играет роль стимула для генерации новых идей.
....
И в-третьих, развертывание процесса коммуникации во времени предполагает формирование особых точек пересечения смысловых пространств, в которых происходит “смысловой взрыв” — резкое возрастание информативности всей системы коммуникации [Лотман, 2000]. Идея “смыслового взрыва” открыла путь синергетическим представлениям в семиотике.
Здравствуйте, gandjustas, Вы писали:
IT>>Если бы сложность разработки ПО можно было описать с помощью других аналогий, то её бы уже давно описали и без нас с тобой. Поверь мне на слово. Но пока этого не произошло. Не помогает здесь почему-то ни термодинамика, ни философия. Некоторые принципы и аналогии позаимствовать можно, но не более того. G>Причем тут термодинамика? Уже почти сто лет существует теория информации, котороя хоть и почерпнула часть от термодинамики, но достаточно сильно от нее отличается.
Вот и мне не понятно при чём тут термодинамика? Впрочем, это вопрос не ко мне, а к VGn.
G>В теории информации есть понятие энтропии, но нету второго начала (возрастания энтропии при любом процессе). G>Вы почему-то пытаетесь придумать этот закон.
Какой именно закон я пытаюсь придумать? У меня как раз складывается впечатление, что здесь все кроме меня пытаются что-то придумать и сразу же это придуманное опровергнуть.
IT>>Не понятно как твои теории объясняют то, что при упорядочивании сложность кода может увеличиваться. В программировании это называется overarchitecture. Штука, встечающаяся чуть ли не чаще, чем вообще полное отсутствие архитектуры. Любой инструмент, любая техника, любой принцип, любая теория в программировании может быть использована не только во благо, но не редко совсем наоборот. Происходит это в следствии того, что попытка устранения сложности в одном месте всегда, ВСЕГДА!, сопровождается добавлением сложности в другом. Статья именно об этом. G>Не заметил обоснованности перехода от "может" к "всегда". Нету в теории информации постоянного возрастания энтропии.
Ну нету и нету. При чём тут вообще теория информации?
G>overarchitecture — накручивание архитектуры без необходимости (без решения явных задач). Если производить упорядочивание существующего кода, то энтропия будет уменьшаться.
Ладно, я задам этот вопрос тебе тоже. SRP упорядочивает код или не упорядочивает?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
G>>В теории информации есть понятие энтропии, но нету второго начала (возрастания энтропии при любом процессе). G>>Вы почему-то пытаетесь придумать этот закон.
IT>Какой именно закон я пытаюсь придумать?
Закон возрастания энтропии.
G>>overarchitecture — накручивание архитектуры без необходимости (без решения явных задач). Если производить упорядочивание существующего кода, то энтропия будет уменьшаться. IT>Ладно, я задам этот вопрос тебе тоже. SRP упорядочивает код или не упорядочивает?
Упорядочивает.
Здравствуйте, gandjustas, Вы писали:
IT>>Какой именно закон я пытаюсь придумать? G>Закон возрастания энтропии.
Слава богу не сохранения
G>>>overarchitecture — накручивание архитектуры без необходимости (без решения явных задач). Если производить упорядочивание существующего кода, то энтропия будет уменьшаться. IT>>Ладно, я задам этот вопрос тебе тоже. SRP упорядочивает код или не упорядочивает? G>Упорядочивает.
Тогда почему при определённых сценариях упорядочивание кода и, соответственно, уменшение энтропии приводит к повышению сложности?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
G>>>>overarchitecture — накручивание архитектуры без необходимости (без решения явных задач). Если производить упорядочивание существующего кода, то энтропия будет уменьшаться. IT>>>Ладно, я задам этот вопрос тебе тоже. SRP упорядочивает код или не упорядочивает? G>>Упорядочивает.
IT>Тогда почему при определённых сценариях упорядочивание кода и, соответственно, уменшение энтропии приводит к повышению сложности?
Какой сложности?
SRP позволяет уменьшать сложность изменения ценой небольшого увеличения сложности чтения и объема кода. Только сложность чтения и объем кода видно сразу, а сложность изменения не будет проявляться пока не потребуются изменения. Поэтому вполне может казаться что применение SRP повышает сложность, хотя совокупная сложность уменьшается.
В конкретном случае может быть что сложность изменения вообще не интересет, а интересует исключительно объем кода.
Здравствуйте, gandjustas, Вы писали:
IT>>Тогда почему при определённых сценариях упорядочивание кода и, соответственно, уменшение энтропии приводит к повышению сложности?
G>Какой сложности?
Увеличивается сложность восприятия кода, растёт объём, в определённой степени проседает гибкость. Это подробно разобрано в статье.
G>В конкретном случае может быть что сложность изменения вообще не интересет, а интересует исключительно объем кода.
Главное, что упорядочивание кода может привести к усложнению. Отсюда следует один простой вывод по поводу следующего умозаключения:
VGn>Я например уверен, что при упорядочивании общая энтропия кода уменьшается, а значит закон сохранения сложности — полная чушь.
Вот такие разговоры и есть на самом деле полная чушь. Упорядочивание может усложнять код, что полностью соответствует закону сохранения сложности И понятно почему. Упорядочивание — это всего лишь один из инструментов борьбы со сложностью. Не мера сложности, не замена, не подмена, а инструмент, который в точности подчиняется закону как и любой другой инструмент.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, gandjustas, Вы писали:
IT>>>Тогда почему при определённых сценариях упорядочивание кода и, соответственно, уменшение энтропии приводит к повышению сложности?
G>>Какой сложности?
IT>Увеличивается сложность восприятия кода, растёт объём, в определённой степени проседает гибкость. Это подробно разобрано в статье.
От применения SRP гибкость не проседает. Или это не SRP.
Немного растет объем и немного увеличивается слжность чтения, но сильно уменьшается сложность изменения. Крмое того выделенные классы могут более удачно повторно использоваться, что приведет еще и к сокращению объема кода.
Совокупная сложность падает.
G>>В конкретном случае может быть что сложность изменения вообще не интересет, а интересует исключительно объем кода. IT>Главное, что упорядочивание кода может привести к усложнению.
Не может, см выше. Только в случае неправильного наведения порядка.
IT>Отсюда следует один простой вывод по поводу следующего умозаключения: IT>
VGn>>Я например уверен, что при упорядочивании общая энтропия кода уменьшается, а значит закон сохранения сложности — полная чушь.
IT>Вот такие разговоры и есть на самом деле полная чушь.
IT>Упорядочивание может усложнять код, что полностью соответствует закону сохранения сложности И понятно почему.
Не понятно и не соотвествует. "Может" не означает что будет усложнять всегда.
Хотелось более формальный критерий получить когда упорядочивание, примененное правильно, будет усложнять код.
Здравствуйте, gandjustas, Вы писали:
IT>>Увеличивается сложность восприятия кода, растёт объём, в определённой степени проседает гибкость. Это подробно разобрано в статье. G>От применения SRP гибкость не проседает. Или это не SRP.
Вариант после применения SRP предлагаю додумать самому. Не забудь только про временную структуру данных и разнесение по методам или классам алгоритмов парсинга xml и генерации txt.
В данном случае это одна понятная и простая строчка кода. Для варианта с SRP, который, даже не надеюсь, ты нам здесь представишь, это будет не одна и боюсь даже не две строчки. Увеличение сложности модификации в полный рост.
G>Немного растет объем и немного увеличивается слжность чтения, но сильно уменьшается сложность изменения. Крмое того выделенные классы могут более удачно повторно использоваться, что приведет еще и к сокращению объема кода.
Немного растёт, классы могут. Главное, что сложность модификации растёт, т.е. гибкость кода страдает.
G>Совокупная сложность падает.
Правильно. Но не всегда. В одном случае падает, в другом увеличивается. Падает тоже не просто так. Увеличивается всегда, но при правильном применении падает больше, но увеличивается всегда. Ещё не понятно? Тогда ещё раз. Применение (абсолютно) любого инструмента ведёт к усложнению кода и совокупный эффект является большим вопросом.
G>>>В конкретном случае может быть что сложность изменения вообще не интересет, а интересует исключительно объем кода. IT>>Главное, что упорядочивание кода может привести к усложнению. G>Не может, см выше. Только в случае неправильного наведения порядка.
'Только в случае' для меня достаточно. Дело в том, что случаи бывают разные и главная проблема в том, что не все из них очевидны. Чем выше сложность системы, тем менее очевидны такие случаи. SRP в этом смысле как раз очень показательный принцип. Когда нужно остановиться, где та грань, после которой применение паттерна или принципа даёт обратный эффект? У тебя есть точная метрика?
IT>>Упорядочивание может усложнять код, что полностью соответствует закону сохранения сложности И понятно почему. G>Не понятно и не соотвествует. "Может" не означает что будет усложнять всегда.
Всегда и не нужно. Лично мне достаточно того, что я понимаю одну простую вещь — любой (абсолютно) инструмент может быть использован как во благо, так и совсем наоборот. На практике это означает критическое отношение к любому (абсолютно) паттерну или принципу. Даже к полюбившимся в этой ветке упорядочиванию и абстрагированию, т.к. упорядочивание и абстрагирование всегда в 100% случаях автоматически ведёт к усложнению, а вот для достижения упрощения ещё нужно попотеть.
G>Хотелось более формальный критерий получить когда упорядочивание, примененное правильно, будет усложнять код.
За формальностями к VGn.
Если нам не помогут, то мы тоже никого не пощадим.
Сложность восприятия зависит от множества факторов. Оформление кода, следование соглашениям об именованиях, запутанность/ясность алгоритма, выразительность используемых средств, поддержка среды разработки, включая подсветку кода и навигацию, и многое другое.
Во что трансформируется сложность восприятия, если "корявый" код был "причесан" -- произведено переоформление кода, переименование переменных/классов/методов, и вместо notepad-а разработчик стал использовать IDEA?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, gandjustas, Вы писали:
IT>>>Увеличивается сложность восприятия кода, растёт объём, в определённой степени проседает гибкость. Это подробно разобрано в статье. G>>От применения SRP гибкость не проседает. Или это не SRP.
IT>Да ну?
IT>Было:
IT>
IT>Вариант после применения SRP предлагаю додумать самому. Не забудь только про временную структуру данных и разнесение по методам или классам алгоритмов парсинга xml и генерации txt.
А где здесь отвественности, которые стоило бы разделить?
Применять здесь SRP абсолютно незачем.
G>>Немного растет объем и немного увеличивается слжность чтения, но сильно уменьшается сложность изменения. Крмое того выделенные классы могут более удачно повторно использоваться, что приведет еще и к сокращению объема кода. IT>Немного растёт, классы могут. Главное, что сложность модификации растёт, т.е. гибкость кода страдает.
С чего ты взял что сложность модификации растет?
Правильное прмиенение SRP уменьшает связность между различным функционалом, что позволяет вносить изменения в одном месте не беспокоясь что что-то сломается в другом.
G>>Совокупная сложность падает. IT>Правильно. Но не всегда. В одном случае падает, в другом увеличивается. Падает тоже не просто так. Увеличивается всегда, но при правильном применении падает больше, но увеличивается всегда.
Видиимо увеличивается только в случае неправильного применения SRP.
IT>Ещё не понятно? Тогда ещё раз. Применение (абсолютно) любого инструмента ведёт к усложнению кода и совокупный эффект является большим вопросом.
Это пока еще не удалось доказать. даже с примерами такого туговато.
G>>>>В конкретном случае может быть что сложность изменения вообще не интересет, а интересует исключительно объем кода. IT>>>Главное, что упорядочивание кода может привести к усложнению. G>>Не может, см выше. Только в случае неправильного наведения порядка.
IT>'Только в случае' для меня достаточно. Дело в том, что случаи бывают разные и главная проблема в том, что не все из них очевидны. Чем выше сложность системы, тем менее очевидны такие случаи. SRP в этом смысле как раз очень показательный принцип. Когда нужно остановиться, где та грань, после которой применение паттерна или принципа даёт обратный эффект? У тебя есть точная метрика?
Есть, прямо из определения SRP — когда один компонент отвечает за один аспект функционала.
IT>>>Упорядочивание может усложнять код, что полностью соответствует закону сохранения сложности И понятно почему. G>>Не понятно и не соотвествует. "Может" не означает что будет усложнять всегда.
IT>Всегда и не нужно. Лично мне достаточно того, что я понимаю одну простую вещь — любой (абсолютно) инструмент может быть использован как во благо, так и совсем наоборот. На практике это означает критическое отношение к любому (абсолютно) паттерну или принципу. Даже к полюбившимся в этой ветке упорядочиванию и абстрагированию, т.к. упорядочивание и абстрагирование всегда в 100% случаях автоматически ведёт к усложнению, а вот для достижения упрощения ещё нужно попотеть.
Применение паттерна или принципа только ради его применения ведет к усложнению. Если головой понимаешь зачем применять, то получишь упрощение.
Здравствуйте, eao197, Вы писали:
E>Во что трансформируется сложность восприятия, если "корявый" код был "причесан" -- произведено переоформление кода, переименование переменных/классов/методов, и вместо notepad-а разработчик стал использовать IDEA?
Статья скорее от том что будет дальше, после того как уже сделано, то что ты описал.
Не до бесконечности же это будет продолжаться ... wikipedia Парето
Вернее как-то так. Уменьшать общую сложность программы(с целью получения выгоды) можно до определенного предела, а дальше возможны улучшения только путем компромисов. В какую сторону все сместится при поиске компромиса зависит от разных обстоятельств, которые могут меняться.
Этот предел скорее всего не абсолютный, а соответствует нынешним реалиям. Может в далеком будущем появятся технологии, снижающие общую сложность создания программ, из-за выноса сложностей в другое место.
Сложность кода не может быть ниже сложности обьекта, который код моделирует (не всего обьекта понятно, а только программируемого аспекта). Вот обьективная предпосылка "Закона сохранения минимальной сложности".
Здравствуйте, IO, Вы писали:
IO>Сложность кода не может быть ниже сложности обьекта, который код моделирует (не всего обьекта понятно, а только программируемого аспекта). Вот обьективная предпосылка "Закона сохранения минимальной сложности".
IO>Сложность кода не может быть ниже сложности обьекта, который код моделирует (не всего обьекта понятно, а только программируемого аспекта). Вот обьективная предпосылка "Закона сохранения минимальной сложности".
Это вообще говоря неверно. напрмиер сделать учетную систему в 1C гораздо проще, чем написать её на ассемблере (вместе с БД).
Сложность задачи и сложность кода, решающего задачу вещи вообще говоря ортогональные.