# pro.02_70 Работа с сущностями в логике диалектического материализма

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

Для таких целей стоит определить несколько служебных атрибутов (например, `@изм`, от “мутировать”).

> 💡 Иммутабельность — свойства объектов сохранять свои внутренние свойства без изменения.

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

Требуется отдельное свойство на передачу мутабельного объекта и механизмы языка учитывают этот факт. Т.е. для нашего текущего процесса этот объект отдаётся в дочерний процесс и там что-то с ним происходит. Некий аналог системы владения в **Rust**, но в нашем случае это не владение "по требованию", а владение "по передаче" (это несколько более гибкая схема -- не у нас отбирают, а мы сами передаём во владение и тогда происходит потребление, или передаём фиксированную сущность “посмотреть” и тогда потребления не происходит). Соответственно, оба вида объектов при передаче не подлежат изменению без дополнительных свойств. Если объект сопровождается свойством `@изм` и он действительно изменяемый — его можно изменять в новом контексте.

Такие правила вводят самосогласованные, методологически строгие смыслы языка.

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

**prolet** таким образом установлены правила:

- в **prolet** нет пассивного потребления, есть сознательное действие,
- каждое действие — акт диалектического отношения между процессом, сущим и следующим качеством.

## Уточнение онтологии: три формы действия над сущим

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

| Модификатор | фикс?                | изм?                    |
| ---------------------- | ------------------------ | -------------------------- |
| Наблюдение   | Одолжение, да | Одолжение, нет |
| Передача       | Владение, да   | Владение, нет   |
| Изменение     | Владение, нет | Владение, да    |

## Наблюдение

`(фн Посчитать (Яблоко x) Яблоко)`

Наблюдение — ссылка без передачи владения. Поскольку объект не помечен как изменяемый — он одалживается в качестве наблюдения.

## Изменение

`(прц Проверить(Яблоко х1 @изм Яблоко х2) Рез.Ок)`

При изменении, если аргумент сопровождается `@изм` -- аргумент можно изменять и владение на верхнем контексте потеряно в любом случае. Второй аргумент фиксированный, а значит владение им передано не будет.

**ВАЖНО!**

В функцию нельзя передавать изменение. Функция -- это идемпотентный закон!

## Передача владения

`(прц Сложить (Яблоко x @изм Яблоко y @дать) Яблоко)`

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

Все неизменяемые объекты не передаются во владение, и поскольку объект неизменяемый -- это является безопасной операцией.

**ВАЖНО!**

В функцию нельзя передавать владение. Функция -- это идемпотентный закон!

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

## Наблюдение как познание без передачи и изменения

Онтология:

> 💡 В макромире наблюдение не уничтожает объект.

- Я смотрю на дерево — дерево остаётся,
- Я читаю значение — оно продолжает существовать.

```prolet
(Температура 25)(уст температура)
(напечатать температура)
(напечатать температура)
(// всё ещё 25 в ВМ: Значение копируется, Исходное — не помечается,
  Не удаляется, Не блокируется. Это — познание через практику,
  но без разрушения условия познания.)
```

## `@дать` — передача как передача владения

> 💡 Онтология:  владение — не отнимается, владение — передаётся сознательно, это — акт доверия, труда, развития.

```prolet
(Приветствие "Привет, мир!")(уст сообщение)
(Печать сообщение @дать)
(//сообщение больше не доступно здесь)
```

Семантика: после `@дать`— переменная `сообщение` больше не доступна в верхнем контексте. Но не уничтожена — она существует в другом контексте.

> 💡 Это — не смерть, а переход в иное бытие. Это — аналог передачи детали от рабочего к рабочему: рабочий не "теряет" деталь, он передаёт деталь новому рабочему.

Передача — не копирование, не уничтожение, а перемещение в новую форму бытия.

## Удаление, как передача объекта в ходе труда

```prolet
(прц СтальНов(Руда руда @дать Уголь уголь @дать)Сталь(
  (Сталь Нов(руда уголь))(уст сталь) (// Внутри уже содержится сталь, сигнатура аргументов помечена как @дать)
  (Сталь Шлак(сталь))(уст шлак))       (// Внутри сталь содержит шлак, как результат переплавки)
  (вернуть сталь)
)
(Руда 1000)(уст руда)
(Уголь 2000)(уст уголь)
(СтальНов руда уголь)
(уст стальРез)
(СтальРез СтальПолуч(стальРез))(уст сталь)(// Извлечение из стальРез)
(СтальРез ШлакПолуч(стальРез))(уст шлак)  (// Извлечение из стальРез)
```

Семантика:

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

- Это — не уничтожение,
- Это — производство,
- Это — единство и борьба противоположностей.

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

## Диалектическая иерархия действий

```prolet
(прц Набл (Км км) ЕслиИзм()
) (// Как познание в нижнем контексте, без передачи)

(прц Изм(Км км @изм) Км()
) (// Как эволюция значения, с передачей)

(прц Дистанция (Нов км @дать)(уст @дистанция)
(// Как потребление в ходе производства,
  с извлечением значения из нижнего контекста)
```

```text
наблюдение (познание)
        ↓
(изменение)
        ↓
(удаление)  — производство нового качества
```

Это — путь от чувственного к рациональному, от чтения к трудовой передаче, от передачи к созиданию.

## 🎯 Заключение

> ✅ **prolet** как язык декларирует сознательное действия в любом своём проявлении.

В **prolet**:

- Нет пассивности,
- Нет хаотичного уничтожения,
- Нет метафизического "владения".

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

- Ничто не пропадает,
- Всё передаётся,
- Каждый процесс — производительный труд, сопряжённый с ответственностью.
