К текстам

Системы маленькие и большие

Сейчас из нашего айтишного быта ушло слово кибернетика, хотя мы замечаем, что каждая первая штука, связанная с программированием лет 30–40 назад, имела это слово в своём корне.

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

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

Чтобы не происходило зауживание смысла, давайте сразу зайду с примеров. В моём представлении информационной системой является не только сервис или приложение, но и:

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

Дальше говорить бессмысленно без определений. В базовом варианте система — это комплекс взаимодействующих элементов, однако для продуктивного сепарирования следует явно задать три свойства:

  1. Наличие элементов.
  2. Наличие связей между ними.
  3. Наличие общей цели либо функции (опционально, но удобно).

Что касается информации, то информация — это нечто, снижающее неопределённость.

Помимо всем хорошо знакомого комбинаторного смысла, есть очень понятный бытовой: наша жизнь — череда постоянных выборов. Всё, что позволяет сократить вариативность выбора либо сделать выбор более взвешенным (не A, B, C с равной вероятностью, а A — 50%, B — 37,5%, C — 12,5%) является информацией. Этот смысл сводится обратно к комбинаторике, но позволяет взглянуть на вещи с другой стороны — не всегда уместно физическую информацию измерять просто символическими битами и байтами.

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

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

Однако с понятием эмерджентности стоит быть осторожными, его любят мифологизировать. В моём представлении часто «эмерджентность» указывает на нашу несостоятельность в учёте свойств каждого отдельного элемента (считайте — брутфорсе), а не на какую-то фундаментальную истину.

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

Собственно, при работе с системами все ребята делятся на два мира: «алгебраисты» и «аналитики» («хирурги» и «терапевты», «теоретики» и «практики»).

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

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

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

Особое внимание я хочу привлечь к тепловой природе сложных систем. Когда элементов становится достаточно много:

  • наш мозг перестаёт воспринимать их по отдельности;
  • начинают действовать законы больших чисел — то есть появляется возможность применять матстатистику и теорию вероятностей.

Что ещё более замечательно, появляется мера неопределённости — энтропия, и все такие системы становятся либо математически очень близкими, либо вовсе изоморфными термодинамическим. К ним можно применять аналогии с понятиями теплоты, температуры, и, при доказанной изолированности, второе начало термодинамики. А в определённых условиях — даже понятия агрегатных состояний.

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