# pro.02_40 Связывание результатов и имени как диалектическое отражение времени В языке программирования **prolet**, связывание основано на стреле времени и онтологической чёткости: связывание — не присвоение в стиле `x = f()`, а процесс перехода от действия к сущему, зафиксированный как направленное преобразование во времени: `- уст %переменная` Это — не синтаксический курьёз. Это — онтологическая фиксация становления: - сначала — процесс, - потом — сущее. > 💡 Мы живём в мире, где стрела времени всегда направлена в одну сторону. Это означает, что все процессы протекают в одном направлении — вдоль оси времени (даже если процесс обратим). Поэтому и синтаксис языка должен следовать реальности в духе диалектического материализма. Это — не просто замечание. Это объективное требование, чтобы язык **prolet** не просто описывал сущее, а воспроизводил в своей форме саму природу бытия: материю, движение, развитие, необратимость времени. ## Отражение односторонней направленности времени - Все процессы — упорядочены по оси времени, - Все операции — имеют начало, развитие и результат, - Никакого «возврата в прошлое», - Никакого «параллелизма без указания порядка», - Никакого «абстрактного одновременного существования». ## 🔁 Диалектика времени и языка - Время -- Одностороннее, необратимое; - Синтаксис -- линейный, направленный; - Процесс -- Развивается: причина → следствие; - Код -- отражает последовательность; - Обратимость -- Физически возможна, но всё равно время идёт вперёд; - Даже "откат" — новый процесс; - Состояние -- Момент среза процесса. Фиксируется как сущее в момент `t`. ❗ Даже если система «возвращается» в предыдущее состояние — это не возврат во времени, а новый процесс, имитирующий прошлое. 💬 Форма языка — не статична, не императивна, а блочна, снимая проиворечие между декларацией и действием. Как материя в движении, так и код в **prolet** — развивается во времени. ## ✅ Канонический пример Код читается и выполняется слева направо, сверху вниз — как поток практики. Операции отражают движение от причины к следствию. Нельзя использовать то, чего ещё не было. Синтаксис запрещает ссылки на будущее. ```yml # Фиксированный результат, изменяемость определяется в # сигнатуре вызова, по необходимости можно усилить требования, # но не ослабить; можно ослабить выход, но не усилить. По Бертрану Мейеру нач: - ПолучитьДанные - уст данные - ГруппироватьПо данные ключ - уст группа - СуммироватьПо данные группа - .. рез ``` > 💡 Нет «выражений, вычисляемых в параллель без указания порядка». > Порядок — не подразумевается, а фиксируется. Параллельность допустима только в разных частях пространства (в изолятах). Разберём досконально. ### 🧩 Семантическая структура связывания Форма: ```yml нач: - %выражение - уст %имя ``` или ```yml # Если возвращает изм -- можно усилить требования, # но не ослабить прц: имя: Пуск вых: - Цел рез нач: # Выражение возвращает изменяемый результат - Выражение # Но возвращён будет неизменямый, так как именно так описан результат - Выражение фикс - .. рез ``` #### Блок — единое выражение связывания декларации и действия ```yml прц: <...> ``` ✅ Всё — одно выражение, отражающее процесс становления. #### Внутреннее выражение — действие, порождающее сущее ```yml нач: - ПолучитьДанные ``` Это — вызов, процесс, действие во времени. Результат ещё не именован, но уже сущее. #### `уст` — стрела времени Указывает направление: - от процесса к результату, - от результата к именованному сущему. ✅ Допустимо, потому что: - однозначно, - отражает направленность времени, - не перегружено смыслами. ### изм — онтологический статус переменной - `Переменная` — исторический факт, неизменяемый после присвоения - `изм` — рабочая величина, допускающее последующие изменения - По умолчания переменная является неизменяемой > 💡 Это — *не тип*, а *статус существования во времени*. ## имя — идентификатор сущего Пример: `данные`, `группа`, `результат` > 💡 Имя — *не метка* памяти, а обозначение *существующего сущего*. ## ✅ Полная семантика ```yml прц: имя: Пуск парам: - СписЦел группа вых: - Цел +изм нач: - ПолучитьДанные - уст данные # Результат процесса 'ПолучитьДанные' становится 'рез', # и далее считается завершённым, неизменяемым фактом - СуммироватьПо группа # В качестве аргумента метода изФикс по умолчанию передеётся 'рез' # Результат процесса 'СуммироватьПо' становится именованным 'рез', # но может быть изменён в будущем, если сущее также является "изм" - Цел изФикс # Оператор '..' возвращает результат родителю вызова - .. рез ``` ## 📜 Онтологические правила связывания в **prolet** - Связывание — выражение в парных скобках - Форма: `уст имя` без изменения декларации выхода - `+изм` — создаёт эффект изменяемой величины, если не указан -- неизменяемый факт - `уст` — стрела времени, отражает переход от действия к сущему - Нет форм `:=`, `=`, `<-`, `->` . Только `уст` как отражение реального потока времени в одну сторону - Нельзя использовать имя до его присвоения - `изм` — можно, если сигнатура вызова определяет изменяемость результата. ## 🔄 Пример: полный процесс ```yml прц: имя: ОбработатьДанные вых: - РезОк рез нач: - ПолучитьДанные - уст данные # Последний аргумент -- 'рез', передан неявно - Данные еслиОшибка - если рез - _ тогда РезОшибка "нет_данных", - _ .. рез - ГруппироватьПо данные ключ - уст группа - СуммироватьПо группа # В данном случае неявная переменная 'рез' передаётся явно - ДобавитьМетаданные - .. рез ``` - ✅ Каждое связывание — этап фиксации сущего. - ✅ По умолчанию — для завершённых фактов. - ✅ `изм` — для рабочих величин, допускающих развитие. - ✅ `изм` (рабочая величина) может стать только завершённым фактом. ## 💡 Философское обоснование Язык **prolet** следует диалектическому материализму: - Сущее не дано сразу — оно становится через процесс. - Связывание — не копирование, а онтологическое рождение. - контекст `уст` — не оператор, а символ времени, отражающий: - «сначала было действие, - потом — результат, - потом — имя». > 💡 «Как руда не становится сталью сама по себе, а только в ходе движения производственных процессов, через становление формы полезного ресурса `руда`, так и значение не становится сущим без фиксации». ## 🏁 Заключение Язык установил онтологически чистую форму связывания: **prolet** — не язык программирования, а язык фиксации процесса во времени. - Он не абстрагируется от времени. - Он воспроизводит его в синтаксисе. - Стрела времени — не метафора. Она — структура языка. `уст имя` — это не присваивание, это — акт фиксации сущего во времени. Нет места для `x = f()`. Есть только `уст x` — как протокол становления. - Время — объективная форма существования материи. - Никакого «вневременного» существования типов, функций, значений. - Каждое сущее — момент процесса. - Язык — не зеркало, а отражение, в котором форма подчинена содержанию. > ✅ «Код в prolet — не набор инструкций, а запись практики, зафиксированной в единстве материи и движения». Описанная семантика **вводит в язык диалектику бытия и становления**: > **Каждое связывание — это момент в истории системы,** > **и эта история не может быть стёрта, она может только изменить форму бытия.** Это — язык не для «вычисления», а для **практического преобразования мира**. Именно такой язык нужен для построения **надёжных, осознанных, этичных систем**.