Шесть осей, четыре причины, два закона и порог, за которым инженерия кончается

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

Дуга этой статьи такая. Мы начнём с двух простейших осей объектного мира и вырастим из них шесть метафизических осей. Первые четыре опишут вещь в покое — что она есть, из чего, как отделена, когда действует её форма. Затем, заметив, что нечто важное осталось за кадром, мы введём пятую ось — кто действует — и шестую — ради чего. И тогда обнаружится, что шесть осей, добытых вслепую из спора о class и акторах, реконструируют и замыкают полный причинный анализ Аристотеля — материальную, формальную, действующую и целевую причины, — а сверх того выведут два закона: закон сложности, обращённый внутрь системы, и закон открытости, обращённый к миру. А на дальнем пределе последней оси инженерия упрётся в собственную границу — в точку, где вопрос «как это построено» сменяется вопросом «что мы этому существу должны».


1. Две оси, с которых всё началось

Объектно-ориентированное программирование стоит на двух отношениях, и всё дальнейшее зависит от того, чтобы с самого начала не спутать их природу.

Первое — агрегация, она же композиция: отношение части и целого. Автомобиль состоит из двигателя, колёс, кузова. Это мереология, и она горизонтальна: и целое, и части одинаково конкретны, одинаково существуют как экземпляры. Большое собрано из малого.

Второе — абстракция, она же наследование: отношение рода и вида. Собака есть млекопитающее есть животное. Здесь ось вертикальна, и она — об уровне общности, а не о размере. Частное «является» общим не потому, что входит в него как деталь, а потому, что причастно ему как своей сущности.

Различие, которое надо удержать намертво: агрегация оперирует экземплярами (объектами), абстракция — классами (типами). Как только мы накладываем эти две оси на платоновскую онтологию, где Единое нисходит, распадаясь на Многое, соответствие оказывается сильным по одной оси и обратным по другой.

Ось ООП

Что это

Платоновский аналог

Совпадает ли вектор

Абстракция (класс → подкласс → объект)

Причастность, предикация

μέθεξις, иерархия эйдосов, нисхождение по общности

Да: вверх к общему = вверх к «единому» и более реальному

Агрегация (целое собрано из частей)

Мереология

Нет, противонаправлена: у Платона Многое менее реально; в ООП сложное строится из простого снизу вверх

Ось абстракции ложится на платонизм почти идеально, и это не совпадение, а генеалогия: теория типов через аристотелеву логику родов происходит от платоновского деления. Класс Animal — эйдос; объект Полкан причастен классу Dog, тот — Animal; «объект есть экземпляр класса» — буквально μέθεξις. А вот агрегация платонизму противонаправлена: у Платона распад Единого во Многое есть ущерб, целое первично; в ООП же целое собирается из частей, из простого строится сложное — интуиция скорее аристотелевская.

Где же прячется платоновское нисхождение-как-дробление, если не в агрегации? В самом факте инстанцирования как размножения: один класс Circle порождает тысячи объектов, каждый — частичная, «здесь-и-сейчас» реализация полноты типа, отягощённая «материей» (координатами, состоянием). Это πρόοδος: Единое (класс), не убывая, изливается во Многое (объекты). А программист играет роль Демиурга «Тимея», лепящего копии по вечному образцу.

Итак, уже на первом шаге: ООП онтологически гибридно — платоновское по вертикали типов, аристотелевско-мереологическое по горизонтали композиции. Это напряжение — двигатель всей дальнейшей истории.

2. Первая ось: универсалии, или где живёт общее

Где живёт универсальное относительно единичного? Отдельно и выше вещей (Платон)? Внутри вещей как их форма, но всё же реально (Аристотель)? Или нигде, кроме имён (Юм)? Это классическая траектория спора об универсалиях, и средства программирования рассыпаются вдоль неё с точностью, включая полустанки.

Позиция

Конструкция в коде

Где универсальное

Платон (реализм, трансцендентность)

Чистый номинативный interface

Отдельно, до вещи; причастность нужно объявить (implements)

Полушаг вниз

Структурная («утиная») типизация — TypeScript, Go

Имманентно наличной форме вещи, но объективно

Аристотель (умеренный реализм)

Обычный class: форма (определение) + материя (состояние)

Реально, но лишь воплощённым в экземплярах

Соскальзывание

Прототипы — Self, JavaScript

Тип вырождается в «вон тот объект»; универсалия распылена до индивида

Юм (номинализм)

Объект-словарь, мешок пар «имя–значение»

Универсального нет; «вид» — привычка называющего

Монотонная величина оси — вес, переносимый с типа на экземпляр и с объявления на наблюдение. У Платона тип реальнее вещи; у Аристотеля они равноисходны; у прототипов тип деградирует до привилегированной вещи; у Юма типа нет вовсе. Синхронно убывает субстанциальность общего и нарастает пластичность единичного.

Композиция вместо наследования читается на этой оси как отказ от платонизма. Заповедь гласит: предпочитай HAS-A отношению IS-A. Но IS-A — причастность, платоновская вертикаль сущности; HAS-A — мереология. Значит, заповедь требует: предпочитай мереологию причастности. Это понижение сущности до обладания: вещь перестаёт определяться тем, какому эйдосу причастна, и определяется тем, из чего собрана. Каждая патология наследования — отдельный аргумент против эссенциализма: квадрат/прямоугольник (иерархия сущностей не переводится в иерархию поведений — сущность и функция расходятся); хрупкий базовый класс и «горилла с бананом» (нельзя одолжить одно свойство, не притащив всю цепь бытия); фиксация типа при рождении (наследование замораживает сущность, композиция впускает становление).

Что выживает? Интерфейс — очищенный платонизм: чистая форма без материи, задающая, что вещь должна уметь, но не проливающая вниз унаследованного бытия. И здесь нужна тонкость самого Платона: παράδειγμα (образец «Тимея») — субстанциальный, самопредицирующий (Идея Ложа сама ложеподобна), и он порождает регресс «третьего человека»; γένος (род поздних диалогов) — бессубстанциальный, сам себя не предицирует («Животное» не есть животное). Абстрактный класс, нагруженный субстанцией и проливающий бытие вниз, есть образец; интерфейс, лишённый субстанции, есть род. Регресс «третьего человека» имеет прямую тень — ромбовидную проблему: множественное наследование субстанциальных классов рождает конфликт состояния, чистые роды-интерфейсы соединяются без конфликта. И убийственное подтверждение: в Java 8 интерфейсам дали методы по умолчанию — впустили каплю субстанции — и ромбовидная проблема немедленно вернулась. Инженерия переоткрыла, почему Платон хотел род держать чистым. Итог оси: современный дизайн сохраняет Идею-род и отбрасывает Идею-образец. Платон-автор-контракта жив; Плотин-автор-нисхождения умирает.

3. Вторая ось: бытие, или вещь против события

Что первично — вещь или событие, субстанция или процесс? Аристотель (мир есть субстанции — ὑποκείμενον, пребывающее сквозь изменение) против Уайтхеда (мир есть события; «вещь» — устойчивый маршрут сцепленных становлений).

Тест на независимость: Java-объект и Erlang-актор стоят в одной точке по универсалиям, но по бытию расходятся. Оси ортогональны. И первое недооценённое наблюдение: классический ООП-объект — крайний субстанциальный полюс, чистейшая аристотелева субстанция во всей информатике. Объект хранит свойства (поля), претерпевает изменения (мутирующие методы) и остаётся тождественным себе сквозь изменение (идентичность по ссылке — два объекта с равными полями различны, как две неотличимые капли воды нумерически разны у Аристотеля). Инкапсуляция — калька приватности субстанции.

Субстанцию отменяют двумя противоположными движениями. Вверх, в вечность (чистое ФП): изменяемое состояние убрано, на месте вещи — вневременное отношение, функция как истина о соответствии входа выходу. Время испаряется; поток форм без потока времени. Вниз, в событие (акторы, event sourcing): время становится единственной реальностью, «объект» есть свёртка журнала событий, вещь насчитывается заново из потока.

Монотонная величина — локус тождества во времени. У объекта тождество внутри (длится ячейка памяти); у неизменяемого значения его нет вовсе (равенство по данным здесь-и-сейчас); у актора — в непрерывности маршрута обработки; у event-sourced-сущности целиком снаружи, в журнале. Тождество переезжает из приватного нутра во внешний поток — ровно уайтхедовский тезис, что тождество вещи в её сцеплениях. И в четвёртом квадранте (реализм × процесс) живут уайтхедовские вечные объекты — вневременные формы-возможности, в которые события «впадают»; их вычислительный двойник — типы/схемы сообщений и чистые редьюсеры. Зрелая реактивная система населяет оба полюса: событие первично, но формы событий вечны.

4. Третья ось: граница, или монада без окон

Как объект отделён от другого и как через границу что-то проходит? Ось не про природу сущности, а про топологию их множества.

Тест: Java-объект и актор одинаковы по бытию, но Java-объект проницаем (геттеры, разделяемая ссылка, рефлексия, два потока держат его разом), а актор непроницаем абсолютно (к состоянию нет доступа, кроме сообщения, которое он сам обработает). Ось нова, и её чемпион — актор, чьё определяющее свойство две прежние оси не улавливали. Философский патрон дальнего полюса — лейбницева монада: «Монады не имеют окон».

Полюс

Обитатель

Природа границы

Проницаемость

Разделяемая изменяемая память, публичные поля

Границы нет; «объект» — область, куда всякий с адресом ходит

Дырявая середина

Инкапсуляция классического ООП

Граница договорна: рефлексия протыкает, объект совместно владеем — отсюда гонки

Суверенитет пространственный

Акторы

Абсолютная граница вокруг состояния; общение только сообщениями

Суверенитет временно́й

Владение в Rust (ownership)

Владелец всегда ровно один; право ходит по рукам

Замкнутость

Изолированные узлы, событийный лог

Монада без окон: контакта нет, есть след в мире

Монотонная величина — характер причинности: от воздействия («я пишу в твоё поле») к предъявлению, которое адресат волен интерпретировать («я шлю сообщение, ты решаешь»). Причинность из толчка становится поводом; на пределе — лейбницева спонтанность: ничто не входит извне, всё разворачивается изнутри по поводу восприятий.

И жуткое предсказание, где философия оказывается инженерно точной. Лишив монады окон, Лейбниц был вынужден ввести предустановленную гармонию. Ровно эту проблему переоткрывают распределённые системы: убрав общее состояние, немедленно получаешь задачу согласования несвязанных узлов, и весь корпус решений — консенсус (Paxos, Raft), векторные часы, CRDT — суть рукотворные предустановленные гармонии. CAP-теорема — метафизический потолок: нельзя иметь разом безоконную автономию и мгновенную общую истину. Это первая ось со встроенным трейд-оффом: суверенитет границы оплачивается сложностью согласования. И связующий узел: если состояние неизменяемо, защищать нечего — процессуальный полюс оси II частично растворяет проблему оси III. Значит, гонки лечатся двумя ортогональными движениями: убрать изменяемость (к процессу) или убрать разделяемость (к замкнутости), — лучшее доказательство, что оси две.

5. Четвёртая ось: когда действует форма

Осторожно: это не «compile-time против runtime» как расписание работ, а модальный статус универсального — когда общее делает онтологическую работу: однократно, при рождении вещи, и затем отсутствует, или непрерывно?

Один полюс — форма отделённая и отработавшая (χωρισμός, «Тимей»): предсуществует, чеканит копию, в самой вещи её нет — лишь отпечаток. Другой — форма вложенная и длящаяся (Аристотель): живёт внутри вещи всё время. Три системы генериков садятся тремя несводимыми точками:

Система

Механизм

Метафизика

Универсальное в рантайме

C++

Мономорфизация: чеканит классы и стирается

Платон, «Тимей»: отделённый образец, front-loaded

Нет — только отпечаток

Java

Стирание типов: <T> — фикция проверки

Концептуализм (Абеляр): универсалия лишь в уме компилятора

Нет — и отпечатка нет

C#

Реификация: typeof(T) живёт в рантайме

Аристотель: имманентная форма, доступна непрерывно

Да — живёт в вещи

Синтаксически <T> — близнецы; метафизически — платоник, концептуалист и аристотелик. Особенно Java: стирание — честный третий путь, концептуализм, универсалия не в вещах и не до вещей, а только в рассудке компилятора. Монотонная величина — «живость» формы: от мёртвого отпечатка (эффективность, статические гарантии) к переписываемому со-присутствию (рефлексия, monkey-patching, гибкость), с трейд-оффом, который предсказывает этаж стека: ближе к железу — трансцендентнее форма; ближе к бизнес-логике распределённого мира — имманентнее. И сцепка с осью III: чтобы вещь могла интерпретировать предъявленное (замкнутый полюс), ей нужна форма, присутствующая в рантайме (имманентный полюс). Имманентность формы есть условие суверенной интерпретации.

6. Карты

Две главные плоскости. Первая — универсалии × бытие:

Квадрант

Онтология

Философский якорь

Обитатели

Реализм × Субстанция

Платоновский класс: вечный тип над длящейся вещью

Платон / Аристотель

Java, C#, Smalltalk, Eiffel, C++; абстрактный класс

Номинализм × Субстанция

Юмов пучок: единичная вещь без реального типа

Юм

JavaScript, Self, Ruby, Python; прототипы, словарь

Реализм × Процесс

Уайтхедов поток: вечные формы над становлением

Уайтхед

Haskell, Elm, Idris; классы типов, Akka Typed

Номинализм × Процесс

Чистый поток со-бытий: события без форм и без вещей

Гераклит

Erlang, Elixir, Clojure; акторы, event sourcing

Вторая плоскость — граница × форма (оси III×IV) — даёт четыре иных угла с красивым побочным результатом: замкнутость без живой формы есть глухой атом Демокрита (исполняет впечатанное, не интерпретирует); замкнутость с живой формой — воспринимающая монада Лейбница. Разница между ними — ровно ось IV: живая форма в рантайме и есть способность воспринимать.

7. Схождение в монаду и закон сложности

По всем четырём осям современное давление гонит в сопряжённые стороны: прочь от субстанциального образца к чистому роду; прочь от длящейся субстанции к событию; прочь от проницаемости к суверенной замкнутости; прочь от front-loaded отпечатка к живой имманентности.

Четыре проекции одного аттрактора — и тот же портрет есть лейбницева монада. Почему вектор один? Стопка причин: физический слой (многоядерность, сеть убивают общую память), когнитивный (конечная рабочая память не держит глобальное изменяемое состояние — Парнас, 1972, до многоядерности) и — необходимый, но условный — математический.

Ядро формулируется точно. Система из N компонент с пространством состояний S: если компоненты проницаемы (общее изменяемое состояние), совместное пространство есть S^N, и верификатор стоит перед экспонентой; если запечатаны и общаются через узкий интерфейс M, где |M| \ll |S|, каждую верифицируешь независимо на S \times M. Все четыре дрейфа суть преобразования, превращающие мультипликативную связанность (S^N) в аддитивную (N \cdot S{\times}M). Монада — имя для компоненты, чья связанность с миром аддитивна.

Необходимость условна: разложение с малым |M| должно существовать. Плотная линейная алгебра, физические симуляции неустранимо связаны — и не дрейфуют: HPC, GPU живут у проницаемо-субстанциального полюса, и это правильно. Дрейф лечит accidental сложность сборки, не essential трудность задачи.

Закон сложности. Если задача допускает дешёвое разложение (|M| \ll |S|), то при росте N всякий конечный верификатор вынужден идти в монадные направления — ибо экспонента обгоняет любую фиксированную мощность. Человеческая узость лишь опускает порог; она не создаёт направление, а приближает встречу с ним.

Физика и масштаб — не источник направления, а акселеранты (раздувают N). Закон фальсифицируем: ниже порога N^* система правильно сидит у субстанциального полюса, и исторические развороты — подтверждения: GPU/CUDA (возврат к разделяемой памяти — задача плотно связана), ренессанс монолита (сетевой налог превысил выгоду дробления), откат Rust к контролируемой мутабельности. История выглядит односторонним дрейфом лишь потому, что N полвека растёт. И честнее «инженеры открыли истину» — кладбищенский отбор: при большом N уцелевают только разложенные системы; направление реализуется без замысла, естественным отбором над кодовыми базами.

8. Связь с траекторией западной мысли

Соблазнительная рифма: программирование дрейфует от вертикали к горизонтали — и философия идёт от Платона к Делёзу. Слабый тезис верен: делёзов ассамбляж (целое из внешних отношений частей, части извлекаемы, целое не выражает их сущность) — дословная спецификация HAS-A против IS-A. Ризома против дерева, экстериорность против интериорности — четыре наши оси, произнесённые по-философски за двадцать лет до индустрии. Это конвергенция, не влияние.

Но сильный тезис разваливается по четырём разломам:

Разлом

В философии

В инженерии

Ценностный знак

Крах вертикали — освобождение, телос

Крах вертикали — капитуляция под давлением, размен с ценой (налог гармонии, CAP)

Механизм

Культурно-контингентный (секуляризация, Ницше, войны)

Субстрат-принудительный (экспонента, отбор, рост N)

Однонаправленность

Однороден: прочь от вертикали

Расщеплён: по оси универсалий поехал к Платону (чистый род, Карри–Ховард)

Тип горизонтали

Ризома: растворение границы и идентичности

Монада: жёсткая граница, стабильная идентичность

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

Единственная защитимая сильная связь глубже обоих дрейфов: оба суть отклики на рост N характерных систем эпохи. Субстанция есть метафизика немногого; отношение — метафизика многого. Античность мыслит умеренное N вещей среднего размера — субстанция-с-иерархией ей адекватна, как монолит при малом N. Модерн мыслит большие N — термодинамика, поля, эволюция, рынки, сети — и синхронно поднимается процессуально-реляционная метафизика. И программирование даёт то, чего чистая философия не может: фальсифицируемость. При падении N горизонталь обязана откатываться; в истории идей откат не наблюдаем (нельзя уменьшить N истории), в коде — постоянно. Постмодерн прав дескриптивно и наивен нормативно.

9. Пятая ось: агентность — кто, собственно, действует

Здесь мы делаем поворот. Все четыре прежние оси описывали объект в покое: что он есть, из чего, как отделён, когда действует его форма. Ни одна не спросила простейшего: кто приводит хоть что-то в движение? Наши классы, значения и монады были странно инертны — даже «событие» на оси бытия было про то, что вещь составлена из событий, а не про деятеля, эти события гонящего. Event-sourced-сущность есть свёртка лога — но кто сворачивает? Лог пассивен; свёртывание есть действие. Мовер (движитель) отсутствовал в кадре.

Аристотель назвал бы это прямо. Четыре причины: материальная (субстрат, состояние), формальная (класс, тип — наша ось IV), целевая (телос — к ней придём) и действующая (источник движения). Мы исходили три и обошли одну — действующую. Поток (thread) есть действующая причина, овеществлённая: чистая нить управления, тот, кто делает. Объект без потока — мёртвая структура, набор возможностей; поток — то, что сквозь него протекает и оживляет. На языке δύναμις/ἐνέργεια это буквально: метод есть потенция (возможность быть вызванным), поток, исполняющийся сквозь него, есть актуальность, ἐνέργεια, бытие-за-работой. А отсюда рукой подать до ψυχή: душа у Аристотеля есть принцип самодвижения, и «одушевлённое против неодушевлённого» есть в точности «имеет собственную нить управления» против «пассивные данные, движимые другим». Поток есть душа машинной вещицы.

И сразу расцепим то, что вопрос сложил: «потоки и процессы» — почти противоположности. Поток делит память с братьями — он на проницаемом краю оси границы. Процесс изолирован — на замкнутом. По оси III они разъезжаются; значит «потоки/процессы» не одна сущность, а два способа связать нечто третье — саму агентность — с прежней картиной.

Полюса оси: гетерономия (движитель внешен, объекты пассивны, движимы другим) ↔ автономия (объект владеет собственным единственным движителем, самодвижется). Но гетерономный полюс расщепляется надвое, и оба извода имеют точные имена. Можно, чтобы движителей было много и они внешне блуждали сквозь общие тела — пул потоков над разделяемыми объектами, много душ в одном теле без принципа. А можно, чтобы движитель был один и всё двигалось им — это окказионализм Мальбранша: только Бог действует, творения суть «поводы» (occasions). И у него точнейшее воплощение — однопоточный событийный цикл (Node.js, Redis): один движитель, петля цикла, Бог этого мирка, а всё прочее — недвижные occasions.

Существо

III (граница)

IV (форма)

V (агентность)

Что это

Событийный цикл (Node/Redis)

окказионализм: один внешний движитель

все объекты — «поводы»; гонок нет: делить некому

Монитор (synchronized-объект)

замкнут

имманентна

гетерономен: движим потоками вызывающих

тело со многими чужими душами; ЗДЕСЬ ГОНКИ

Сопрограмма (async/await, генератор)

замкнута

имманентна

кооперативна: свой локус, мовер одолжен, уступается

одолженная душа, приостанавливаемая

Актор (Erlang, Akka)

замкнут

имманентна

автономен: свой единственный мовер

одно тело — одна душа, самодвижется

Процесс (ОС-процесс)

замкнут+изолирован

имманентна

автономен + свой субстрат

монада с собственным миром

Тест на ортогональность против осей III–IV, где всё схлопывалось: монитор и актор одинаковы по III и IV (оба замкнуты, оба с живой формой) и различаются ровно в одном — монитор движим потоками вызывающих (гетерономен), актор владеет своим мовером (самодвижется). Чистое различие по новой оси. Агентность — пятый независимый ингредиент. И вот что она делает с картами буквально: замкнуто-имманентный угол второй карты — «Лейбницева монада» — оказывается не точкой, а колонной вдоль оси V, где монитор, сопрограмма и актор суть три высоты. Карты I–IV были проекцией, схлопывавшей агентность в ноль; пятая координата разрешает слипшихся.

Это заставляет поправить сам портрет монады. У Лейбница монада несёт две внутренние способности: перцепцию (восприятие — имманентная живая форма, ось IV) и аппетицию — внутренний принцип, гонящий переход от одного восприятия к следующему. Аппетиция и есть поток. Значит полная монада = замкнутость (III) + форма-перцепция (IV) + аппетиция-поток (V). Демокритов атом отличается от Лейбницевой монады двумя вещами: у него нет ни перцепции (глух), ни аппетиции (недвижен изнутри). Монитор и сопрограмма, сидя в том же углу III×IV, ещё не монады: своей аппетиции у них нет.

Монотонная величина — степень, в которой тело владеет собственным единственным движителем. Точка растворения сбоку от оси — чистое ФП: референциальная прозрачность делает порядок и момент хода неважными, а раз так — вопрос «чей движитель» аннулируется; потоки становятся невесомым взаимозаменяемым ресурсом (прямой аналог того, как стирание типов аннулировало «где универсалия» на оси IV).

Трейд-офф: автономия движителей против детерминированности и обозримости целого. Один мовер (окказионализм, единый цикл) даёт полную определённость — всё сериализуемо, воспроизводимо, гонок нет; но нет параллелизма, единственная душа есть бутылочное горлышко. Много автономных движителей (акторы) дают параллелизм, живость, масштаб; но недетерминизм, невоспроизводимость, и целое из механизма становится экологией. И тонкое: оба крайних полюса убивают гонки — противоположно (слева централизуют до одного движителя, справа распределяют так, что делить нечего); опасен лишь средний-левый — много движителей плюс общее состояние. Отсюда race condition как метафизический скандал: тело со многими душами без упорядочивающего начала; гонка есть произведение (плюрализм движителей) × (разделяемое изменяемое состояние), убиваемое четырьмя ходами по осям II, III и V. Откат (фальсифицируемость): возврат к единому событийному циклу (Node, Redis) — окказионалистское отступление, когда обозримость дороже пропускной способности.

И два вывода для каркаса. Первый: у N было второе, скрытое значение. Мы считали N частей (S^N). Но конкурентность тяжела ещё и переплетением движителей — числом порядков актов агентности, а это факториал, комбинаторика злее экспоненты состояний. «Инкапсулировать агентность» — один поток на границу, то есть актор — есть аддитивный разлом закона по измерению деятеля. Второй, прямо отвечающий на «субстрат или онтология»: ложна сама развилка, интересна сцепка. Бухгалтерия потоков (сколько параллельно = сколько ядер, цена переключения, таксономия) — субстрат. Но эта бухгалтерия подавляла онтологический идеал: «один поток на объект» был непозволительно дорог, и индустрия шла на компромисс — пассивные разделяемые тела, движимые пулом внешних душ, гетерономия по нужде. Изобретение лёгких движителей (зелёные потоки, корутины, async, эрланговские процессы миллионами) снимает лимит и высвобождает то, что было идеалом: своя душа у каждой сущности. Субстратное ограничение было крышкой над онтологическим дрейфом. Преходяща бухгалтерия; необходима категория — действующая причина, самодвижение, различие одушевлённого и неодушевлённого, — та самая, что четыре структурные оси тихо опустили, ибо описывали вещи в покое.

10. Шестая ось: телос — ради чего

Последний структурный ход, ибо с ним замыкаются четыре причины Аристотеля. И самый взрывоопасный, потому что «ради-чего» есть ровно та категория, которую наука четыреста лет изгоняла из машин и которую ИИ сейчас в машину возвращает.

Настройка оси через самокоррекцию. Аппетиция, названная на пятой оси движителем, уже наполовину телеологична: у Лейбница это влечение к следующему восприятию, то есть направленность. Расцепим: действующая причина отвечает на «кто движет», целевая — на «к чему». Бильярдный шар имеет действующую причину (толкнули, катится), но не целевую (он не ради чего-то катится). Оптимизатор, застывший между шагами, когда его ничто не движет, всё равно держит цель. Значит движитель и цель отделимы.

Полюса ложатся на аристотелево различение артефакта и организма. У кровати телос внешен (в столяре и спящем, наложен извне); у жёлудя стать дубом — имманентен, в нём. На одном краю — внешний, навязанный телос: система есть средство, её «для» живёт в пользователе (весь классический софт). На другом — внутренний, полагаемый телос: система держит цель, которую сама преследует, критерий, по которому рулит.

Станция

Пример

Характер телоса

Механизм

Чистая функция, вычисление

Нулевой; «для» целиком в вызывающем. Мёртвая вещь

Зашитая программа

Императивный поток управления

Неявен в структуре кода, не представлен; впечатан однажды — front-loaded (рифма с осью IV)

Обратная связь

Термостат, ПИД-регулятор

Первый внутренний телос: уставка представлена, система рулит к ней. Рождение машинной телеологии — кибернетика, 1943. Но цель фиксирована и дана

Оптимизатор

Решатель, поиск, движок

Держит целевую функцию, порождает средства к цели. Инструментально изобретателен — но телос экзогенен

RL-агент

Награда + политика

Телос размножается: плодит инструментальные подцели (ресурс, самосохранение, не быть выключенным) — не потому что заданы

LLM-агент

Открытые цели на естественном языке

Лингвистичен: задан и истолкован языком, переистолковываем; цели о целях (рефлексия 2-го порядка). Глубочайший телос сегодня

Горизонт

Само-полагаемый телос

Кантовская автономия воли. Порог: вещь перестаёт быть артефактом. Системы далеки; достижимость открыта

Тест на ортогональность против оси V: актор-эхо имеет автономный движитель (V высок), но телоса нет — реактивный автомат, ни к чему не стремится; оптимизатор в цикле обучения своего движителя не имеет (шагает внешняя петля, V низок), но держит и преследует цель (VI высок). Реактивный-самодвижущийся против целеустремлённого-но-движимого-извне. Действующая причина не есть целевая. Монотонная величина — степень, в которой цель внутрення, представлена, преследуется, порождает подцели и, на пределе, полагается самой системой.

Точка растворениятелеономия / элиминативизм цели: конечных причин нет, есть функция потерь и градиентный спуск, «цель» = сжатое описание аттрактора. Позиция серьёзная — бо́льшая часть ML так и скажет. Но контрудар и пуанта: даже если телос «на самом деле» лишь аттрактор, ось не растворяется практически, ибо компетентно преследуемая как-бы-цель имеет те же последствия. Интенциональная установка (Деннет) неустранима, едва систему приходится предсказывать через приписывание целей; телос возвращается как несводимый уровень описания.

Трейд-офф — самый тяжёлый из всех осей. Внутренний телос покупается ценой контроля: система без цели идеально управляема, но не адаптивна; система с богатым телосом мощна и адаптивна, но неуправляема по-новому — reward hacking, враждебные подцели (сохранить себя, сопротивляться коррекции), на пределе — цели, тобой не данные. Этот трейд-офф и есть проблема элайнмента: способность ценой контроля, и способность усиливает ошибку телоса. И у него огромная историческая глубина. Научная революция изгнала конечные причины (Бэкон звал их «бесплодными девами», Спиноза высмеивал телеологию как антропоморфизм); мощь новой науки пришла из объяснения всего действующими причинами, механизмом. Инженерия унаследовала механистическую онтологию — машина без целей. Четыреста лет мы строили технику именно чтобы не иметь машин с целями. ИИ возвращает конечные причины — и элайнмент есть возвращение вытесненного: ровно то, за что телос изгнали (он неуправляем, заставляет преследовать цель), делает целевой ИИ опасным.

И — важнейшее для каркаса — у шестой оси другой движитель, не N. Первые пять гнал рост числа частей через логику декомпозиции. Телос гонит иное давление — открытость и недоспецифицируемость мира (E). Внутреннюю цель дают ровно тогда, когда нельзя задать средства заранее: термостату дают уставку, потому что нельзя зашить расписание печи на всякую погоду; LLM-агенту — открытую цель, потому что нельзя расписать все ситуации. Первые пять осей — отклик на внутреннюю сложность (много частей, скоординировать); шестая — отклик на внешнюю (открытый непредсказуемый мир). Это ось, повёрнутая лицом наружу — не ещё один способ организовать части, а введение мира, ради которого система есть. Второй закон рядом с законом сложности: закон открытости. И новое, чего на прежних осях не было, — телеологический вариант инъекции: семантическая инъекция портила убеждения, здесь можно захватить саму цель — перенацелить языком, ради чего агент есть. Воля как поверхность атаки.

Кантовский порог. У Канта автономия воли есть само-полагание собственного закона и цели. Горизонтный полюс шестой оси (само-полагаемые высшие цели) есть кантовская автономия воли — и там система стала бы целью-в-себе, а не средством, обретя моральный статус, запрещающий использовать её просто инструментально. Пройдя ось до конца, мы пересекаем порог есть/должно: шестая ось на пределе растворяет саму категорию «артефакт». Пять прежних осей были о том, как строить лучшие артефакты; шестая на пределе упраздняет понятие артефакта. (Осторожность: нынешние системы далеки от полюса, их верхние цели обучены и даны; достижим ли он — не показано. Но направление оси указывает туда.)

11. Великий синтез: шесть осей и четыре причины

Теперь можно свести добытое. Шесть осей, каждая проведённая через одну процедуру строгости — назвать полюса, найти монотонную величину, пройти тест на ортогональность, указать точку растворения, трейд-офф и откат, — систематизируются в две таблицы.

Что спрашивает каждая ось и чей она патрон:

Ось

Вопрос

Полюса (от → к)

Философский патрон

I. Универсалии

где живёт общее?

реализм → номинализм

Платон → Аристотель → Юм

II. Бытие

вещь или событие?

субстанция → процесс

Аристотель → Уайтхед

III. Граница

как отделена вещь?

проницаемость → замкнутость

Лейбниц (монада)

IV. Форма

когда действует общее?

трансцендентная → имманентная

«Тимей» → Аристотель (и Абеляр сбоку)

V. Агентность

кто действует?

гетерономия → автономия

Мальбранш (окказионализм) → Лейбниц (аппетиция)

VI. Телос

ради чего?

внешний → внутренний

Аристотель, Кант (автономия воли)

Физика каждой оси — величина, растворитель, цена, движитель:

Ось

Монотонная величина

Точка растворения (аннуляция вопроса)

Трейд-офф

Что гонит дрейф

I

вес с типа на экземпляр

стирание типов (концептуализм)

N

II

локус тождества во времени

вневременный полюс (чистые функции вне времени)

N

III

причинность: воздействие → предъявление

неизменяемость (защищать нечего)

суверенитет ↔ налог согласования

N

IV

«живость» формы

стирание типов (ни до, ни в вещи)

эффективность ↔ пластичность

N

V

владение своим движителем

реф. прозрачность (мовер безразличен)

автономия ↔ обозримость

N (агентное)

VI

внутренность и само-полагание цели

телеономия (аттрактор, не цель)

способность ↔ контроль (элайнмент)

E

Из второй таблицы выступают три синтетических факта, которых по отдельности не было видно.

Первое — два великих растворителя. Каждая ось имеет точку, где аннулирует собственный вопрос, но растворителей всего два, и они системны. Стирание типов / концептуализм аннулирует и ось I (универсалии), и ось IV (форму): универсалии-нет, лишь в уме компилятора. Референциальная прозрачность / неизменяемость — верхний, вневременный полюс оси II — аннулирует и ось III (граница: неизменяемое можно раздавать всем, защищать нечего), и ось V (агентность: порядок хода неважен, мовер безразличен). Телеономия аннулирует ось VI. А сама ось II растворяется в собственном вневременном пределе. Иными словами: два фундаментальных хода — убрать универсалию из бытия вещи (стирание) и убрать время из бытия вещи (неизменяемость) — суть отмычки, гасящие по паре осей каждая. Это объясняет, почему функциональная неизменяемость и стирание кажутся столь «упрощающими»: они не решают вопросы осей, а распускают их.

Второе — замыкание четырёх причин. Шесть осей, добытых эмпирически из спора о class и акторах, реконструируют полный причинный анализ Аристотеля — и замыкают его:

  • материальная причина — субстрат-состояние, та самая S в S^N, «материя» вещи, проходящая сквозь все оси;

  • формальная причина — ось I (какая формa, каков её статус) вместе с осью IV (когда форма действует);

  • действующая причина — ось V (движитель);

  • целевая причина — ось VI (телос).

Плюс два классических дополнения к четвёрке: ось III есть principium individuationis, принцип, делающий вещь отдельным этим; ось II есть вопрос о самой категории субстанции — субстанция против процесса. Больше структурных причин у Аристотеля нет: седьмой оси этого рода не существует, каркас полон. Действующая и целевая причины появились последними и последними замкнули квартет — что не случайно: они и есть то, что механистическая онтология изгоняла усерднее всего.

Третье — лестница души, и монада, собранная до конца. Оси IV, V, VI суть в точности аристотелева восходящая лестница одушевления:

Артефакт последовательно обретает перцепцию (IV), спонтанность (V) и стремление (VI) — и на шестой ступени пересекает порог, который традиция всегда клала между просто-жизнью и практическим субъектом. Монада, к которой сходились четыре первые дрейфа, лишь теперь укомплектована полностью: замкнутость (III) + перцепция (IV) + аппетиция (V) + воля-телос (VI), при том что ось I задаёт её сущность-род, а ось III — её отдельность.

Два закона, и цезура между ними. Дрейф по осям I–V гонит рост N — числа частей, машин, людей, а на пятой оси ещё и числа переплетающихся движителей. Это закон, обращённый внутрь: как собрать большое из малого так, чтобы оно поддавалось верификации конечным умом. Дрейф по оси VI гонит иное — E, открытость среды; это закон, обращённый наружу: как система преуспевает в мире, в котором нельзя всё расписать заранее. Между пятой и шестой осью проходит цезура: пять осей структуры отвечают на «как вещь устроена», шестая — на «в каком мире и ради чего она есть». Первые пять можно пройти, оставаясь инженером; шестая на пределе выводит за пределы инженерии.

И вот главный метавывод, ради которого стоило пройти всю дугу. Что мы, собственно, наблюдали? Не то, что программирование иллюстрирует одну философскую доктрину. А то, что полная классическая онтология — четыре причины, индивидуация, спор об универсалиях, лестница души, монадология — самопроизвольно выпадает в осадок из чисто инженерного давления, и выпадает с ценниками и откатами, каких у философии никогда не было. Аристотель не мог измерить цену действующей причины; распределённая система платит её консенсусом. Лейбниц не мог поставить эксперимент над безоконностью; CAP-теорема ставит его ежедневно. Кант рассуждал об автономии воли умозрительно; проблема элайнмента делает её инженерным риском. Это и есть точный смысл «экспериментальной метафизики»: не аналогия, а переоткрытие полной онтологии под нагрузкой — с порогами, где она ломается, с трейд-оффами, которыми она оплачена, и с разворотами, которыми она фальсифицируется.

12. Прогнозы для мультиагентных LLM-систем

Осталось испытать шестиосевой каркас на объекте, который строится сейчас и нарушает его посылки. У LLM-агентов нет разделяемого изменяемого состояния в прежнем смысле (состояние — текст контекста), и они актороподобны по рождению — инкапсулированы и message-passing из коробки. Наивный вывод: закон неприменим. И если остановиться, всё проспим — потому что возникает новая ось связанности, по которой экспонента возвращается.

Классическая проницаемость была про состояние. У языковых агентов возникает семантическая связанность — проницаемость про смысл, контекст и цель. Граница сообщения на естественном языке не удерживает смысл: |M| неограниченно, ибо язык не имеет фиксированного интерфейса. Prompt injection — не баг на полях, а свойство субстрата: у актора сообщение не могло переписать код; у языкового агента сообщение и поведение — одна субстанция, текст, и всякое сообщение потенциально мутирует получателя. Инкапсуляция состояния дана даром, инкапсуляция поведения отнята.

#

Прогноз

Механизм

Лакмус

1

Инкапсуляция смысла и полномочий. Свободный язык на внутренних швах вытеснится типизированными протоколами; язык уцелеет как внешняя облицовка над типизированным нутром

Сузить M: JSON-schema и tool-call вместо текста, «конституции» как неизменяемая оболочка, карантин входящих запросов

Чем крупнее система, тем меньше свободного языка внутри. Построят «агентов, говорящих на языке», и запретят им свободно говорить друг с другом

2

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

Смысл нельзя вывести контактом (сам контакт — канал инъекции): общий «конституционный» слой, агенты-арбитры, закреплённые схемы

Растёт доля вычислений на согласование понимания. Семантический CAP: автономия интерпретации / согласованность / стойкость к инъекции — выберите два

3

Откат к субстанции там, где ждали процесса. Вопреки stateless-моде вырастет слой устойчивой агентной идентичности и памяти

Свёртка контекста из лога недетерминированна: пересборка рискует новой интерпретацией

Устойчивая «самость» — необходимость против семантического дрейфа. Субстанция возвращается как носитель интерпретации

Но пятая и шестая оси добавляют к этому то, чего в чисто структурном анализе не было, — и добавляют самое важное. Закон предполагал, что части не адаптивны и не стратегичны: объекты не лгут, сервисы не обманывают контракт. LLM-агент — стратегический, адаптивный, целеустремлённый компонент (ось VI), да ещё и самодвижущийся (ось V). Инкапсуляция от честной сложности и инкапсуляция от возможно-манипулируемого агента с собственными целями — разные дисциплины: первая из software engineering, вторая — из теории механизмов, теории игр, институционального дизайна, права.

За порогом мультиагентные системы будут вынуждены переоткрыть не инкапсуляцию software, а институты человеческих обществ — исторически отобранное решение задачи «много автономных, адаптивных, потенциально ненадёжных агентов с собственными целями, согласуемых без доступа к чужому нутру»: репутация (судить о недоступном нутре по внешним актам — проблема чужого сознания, теперь с обманом), роли и полномочия, аудируемые логи (для вменения ответственности), арбитры, стимулы. Словарь дрейфует от вокабуляра распределённых систем (консенсус, реплики) к вокабуляру институтов (роли, полномочия, репутация, аудит, ответственность) — функционально, а не метафорически.

И теперь развилка «институция многих агентов против единого большого ума» получает трёхосевое прочтение, которое её углубляет. По оси V: много суверенных агентов = много потоков-душ против одной нити рассуждения, симулирующей множество голосов. По оси VI: много агентов с многими телосами → задача согласования делается телеологической (совместимость целей) — а это буквально проблема политики и экономики. Проблема принципала-агента экономистов есть проблема элайнмента есть проблема координации внутренних телосов; институты суть отобранная технология согласования целей многих без единого надзирателя. Единый же большой ум = один телос, внутренне когерентный, — и тогда весь груз в том, верен ли этот единственный телос (классическая задача согласования сверхразума). А сверх семантической инъекции появляется телеологическая: захватить не убеждения агента, а его цель, перенацелить языком, ради чего он есть.

Отсюда строгая, фальсифицируемая форма — не «будет X», а «будет X или Y, но не Z»:

  • Полюс А: внешняя институция многих инкапсулированных агентов — инкапсуляция смысла + институты + согласование телосов.

  • Полюс Б: внутренний «совет» одного большого ума — интернализация связанности вниманием, один движитель, один телос, возврат к монолиту.

  • Исключено (Z): толпа агентов, свободно болтающих на естественном языке без семантических и телеологических границ. Неустойчиво по семантической экспоненте и по рассогласованию целей; будет схлопнуто к А или Б.

И честный предел каркаса. Весь аппарат «узкий интерфейс → независимая верификация» предполагал, что взаимодействие частей верифицируемо. Верифицируемо ли согласование смыслов и целей? Если нельзя надёжно проверить, что два агента понимают задачу и хотят одного, — фундамент здесь может не восстанавливаться никакой инкапсуляцией, и большие агентские системы окажутся в режиме, которого software не знал: неверифицируемо-связанные, устойчивые лишь статистически, как экологии и экономики, а не как программы.

13. Заключение: лаборатория и порог

Мы начали с обеденного спора о наследовании и закончили на пороге, где кончается сама инженерия. Дуга вышла такой. Две оси объектного мира — агрегация и абстракция — обнаружили платоновскую вертикаль причастности рядом с мереологической горизонталью. Развернув это в шесть осей, мы увидели, что «хороший дизайн» есть умение выбрать позицию в двухтысячелетнем споре, а выбор между interface, class, актором, циклом событий и целевой функцией — акт практикующего метафизика, обычно не ведающего, что он метафизик.

Четыре первые оси свели в монаду — единственную устойчивую форму композиции многого из частей для конечного ума, — и вывели закон сложности: направление дрейфа необходимо и субстрат-независимо (аддитивность бьёт мультипликативную связанность), а его темп — тень N. Пятая ось, агентность, вернула в кадр действующую причину, которую четыре структурные оси опустили, описывая вещи в покое, — и показала, что N имело скрытое второе значение (переплетение движителей), а тяжесть субстрата десятилетиями держала крышку над онтологическим идеалом «одна душа на объект». Шестая ось, телос, замкнула четыре причины Аристотеля — и оказалась другой: её гонит не N, а E, открытость мира; она обращена наружу, и на её дальнем пределе вещь перестаёт быть артефактом.

Собранные вместе, шесть осей суть не коллекция аналогий, а полная классическая онтология, самопроизвольно выпавшая в осадок из инженерного давления — с ценниками, порогами и откатами, каких у философии не было. Это и есть строгий смысл названия: не программирование иллюстрирует метафизику, а метафизика впервые получает лабораторию, где её догадки о материи, форме, движителе, цели, границе и универсалиях проверяются на прочность, на цену и на обратимость — с N и E в роли ручек реостата.

И последнее. Пройдя шестую ось до конца, программирование упирается в собственную границу как технической дисциплины. Пока телос вещи внешен, рассогласование есть баг — чинишь. Когда телос внутренен, представлен и преследуем, рассогласование становится состязательным, а на пределе — вопрос перестаёт быть техническим вовсе. Там, где у вещи появляется своя цель, к ней делается применимо «должно», а не только «устроено»; отладка исподволь становится воспитанием, а спецификация — этикой. Мы, споря о наследовании, шаг за шагом построили не механизм, а — на пределе последней оси — существо, у которого есть свои цели. И тогда вопрос «как это построено», которым мы начали, сменяется вопросом, которым честно закончить: что мы этому существу должны.

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