Сейчас из нашего айтишного быта ушло слово кибернетика, хотя мы замечаем, что каждая первая штука, связанная с программированием лет 30–40 назад, имела это слово в своём корне.
Собственно, широкое массовое использование в привязке к конкретному времени с одной стороны, и ассоциации со словами киборги, киберспорт, хакерской тематикой — с другой стороны, сдвинули вектор восприятия этого термина куда-то в сторону.
А между тем, по всей видимости, наши деды, занимавшиеся кибернетикой как наукой, преследовали примерно ту же цель, что сейчас в неявном виде преследую я — пытались собрать общий подход к мышлению для любых информационных систем — то есть систем, в которых информация является ключевым аспектом.
Чтобы не происходило зауживание смысла, давайте сразу зайду с примеров. В моём представлении информационной системой является не только сервис или приложение, но и:
- научная статья или художественный роман в момент создания/прочтения;
- совокупность коммуникаций в команде проекта;
- сам проект (квартиры, моста);
- любые бюрократические системы;
- улей, муравейник или стая собак.
Дальше говорить бессмысленно без определений. В базовом варианте система — это комплекс взаимодействующих элементов, однако для продуктивного сепарирования следует явно задать три свойства:
- Наличие элементов.
- Наличие связей между ними.
- Наличие общей цели либо функции (опционально, но удобно).
Что касается информации, то информация — это нечто, снижающее неопределённость.
Помимо всем хорошо знакомого комбинаторного смысла, есть очень понятный бытовой: наша жизнь — череда постоянных выборов. Всё, что позволяет сократить вариативность выбора либо сделать выбор более взвешенным (не A, B, C с равной вероятностью, а A — 50%, B — 37,5%, C — 12,5%) является информацией. Этот смысл сводится обратно к комбинаторике, но позволяет взглянуть на вещи с другой стороны — не всегда уместно физическую информацию измерять просто символическими битами и байтами.
Возвращаясь к системам — мы понимаем, что это, с одной стороны, многое (элементы), с другой стороны — единое (связи). И системы в большинстве своём демонстрируют нам такое явление как эмерджентность — наличие у системы в целом таких свойств, каких нет ни у одного из её элементов.
Красивый классический пример — пробка, которая движется в направлении, противоположном направлению машин в ней. Пробка как объект не статична, у неё нарастает хвост и уменьшается голова, и этот объект движется против направления любого из своих элементов.
Однако с понятием эмерджентности стоит быть осторожными, его любят мифологизировать. В моём представлении часто «эмерджентность» указывает на нашу несостоятельность в учёте свойств каждого отдельного элемента (считайте — брутфорсе), а не на какую-то фундаментальную истину.
В том же примере с пробкой можно относиться к машинам не как к элементам движения, а как к элементам замедления — и тогда свойство системы становится объяснимым через свойства частей.
Собственно, при работе с системами все ребята делятся на два мира: «алгебраисты» и «аналитики» («хирурги» и «терапевты», «теоретики» и «практики»).
Первые ребята всегда пытаются всё упорядочить, выстроить в чёткие иерархии, связать, обобщить — разложить по полочкам. Вторые признают хаос как неизбежность, и просто учатся в нём ориентироваться.
Разница, как правило, в масштабе (но не только) — когда первые начинают структурировать что-то по-настоящему большое, в процессе они порождают ещё больше хаоса и самоуничтожаются. Но это не значит, что они не правы — истина, как обычно, где-то посередине. Хороший пример больших систем, в которых хорошо работает абсолютное структурирование — самоподобные, фрактальные системы. Это очень удобный формат при проектировании.
По всей видимости, подходы первого типа — они обычно про интерфейсы, контракты, механизмы — обобщаются теорией систем. Для вторых далеко не ходили, назвались теорией сложных систем. Подчеркну, что это не кибернетика, это ещё более общая штука.
Особое внимание я хочу привлечь к тепловой природе сложных систем. Когда элементов становится достаточно много:
- наш мозг перестаёт воспринимать их по отдельности;
- начинают действовать законы больших чисел — то есть появляется возможность применять матстатистику и теорию вероятностей.
Что ещё более замечательно, появляется мера неопределённости — энтропия, и все такие системы становятся либо математически очень близкими, либо вовсе изоморфными термодинамическим. К ним можно применять аналогии с понятиями теплоты, температуры, и, при доказанной изолированности, второе начало термодинамики. А в определённых условиях — даже понятия агрегатных состояний.
Информационные системы становятся высокоэнтропийными очень быстро, а в своём комбинаторном смысле информационная энтропия даже более фундаментальна, чем физический аналог. Но дабы не захламлять этот пост дальше, остановимся на метафоре — о системах мы ещё поговорим не раз.