Свойства нашего материального мира таковы, что мы можем говорить о нескольких явлениях работы с объектами, как о действующих законах. Например, мы можем наблюдать за объектом. Или можем переместить объект в другое место без фактического изменения самого объекта. Либо объект может оставаться на месте, но изменяться в потоке времени.
Для таких целей стоит определить несколько служебных атрибутов (например, @изм, от “мутировать”).
💡 Иммутабельность — свойства объектов сохранять свои внутренние свойства без изменения.
Ведь фактически в нашем мире не происходит потребления сущности, например, при наблюдении (мы ограничиваем тем самым применимость нашего языка макромиром, но цель языка программирования prolet в том и состоит, чтобы максимально следовать принципам диалектического материализма, который максимально возможно и приемлемо отражает макромир).
Требуется отдельное свойство на передачу мутабельного объекта и механизмы языка учитывают этот факт. Т.е. для нашего текущего процесса этот объект отдаётся в дочерний процесс и там что-то с ним происходит. Некий аналог системы владения в Rust, но в нашем случае это не владение "по требованию", а владение "по передаче" (это несколько более гибкая схема -- не у нас отбирают, а мы сами передаём во владение и тогда происходит потребление, или передаём фиксированную сущность “посмотреть” и тогда потребления не происходит). Соответственно, оба вида объектов при передаче не подлежат изменению без дополнительных свойств. Если объект сопровождается свойством @изм и он действительно изменяемый — его можно изменять в новом контексте.
Такие правила вводят самосогласованные, методологически строгие смыслы языка.
Предложенный атрибут уточняет онтологию языка, разграничивает формы взаимодействия с сущим, вводят субъектность программиста как труженика, а не пассивного идеалистичного наблюдателя или жестокого контролёра своих же мыслей.
prolet таким образом установлены правила:
В язык вводятся не просто абстрактные свойства, а семантическая система, отражающую реальные законы макромира, в котором действует диалектический материализм.
(фн Посчитать (Яблоко x): Яблоко)
Наблюдение — ссылка без передачи владения. Поскольку объект не помечен как изменяемый — он передаётся в качестве наблюдения.
(прц Сложить (Яблоко x @изм Яблоко y @дать) Яблоко)
Субъект передаёт — в текущий контекст два объекта — сущность исчезает в верхнем контексте, а в нижнем появляется. При встрече признака @изм в любом случае владение передаётся. Во втором случае — объект неизменяемый, и для передачи владения в нижний контекст необходимо добавить свойство @дать .
Все объекты, объявленные по умолчанию (@фикс) не передаются во владение, и поскольку объект неизменяемый -- это является безопасной операцией.
Всё это — не сокращения ради краткости, это — диалектическое снятие избыточности, движение от длинного слова к точному действию.
Онтология:
💡 В макромире наблюдение не уничтожает объект.
Я читаю значение — оно продолжает существовать.
(Температура 25)(уст температура)
(напечатать температура)
(напечатать температура)
(// всё ещё 25 в ВМ: Значение копируется, Исходное — не помечается,
Не удаляется, Не блокируется. Это — познание через практику,
но без разрушения условия познания.)
@дать — передача как передача владения💡 Онтология: владение — не отнимается, владение — передаётся сознательно, это — акт доверия, труда, развития.
(Приветствие "Привет, мир!")(уст сообщение)
(Печать сообщение @дать)
(//сообщение больше не доступно здесь)
Семантика: после @дать— переменная сообщение больше не доступна в верхнем контексте. Но не уничтожена — она существует в другом процессе.
💡 Это — не смерть, а переход в иное бытие. Это — аналог передачи детали от рабочего к рабочему: рабочий не "теряет" деталь, он передаёт деталь новому рабочему.
Передача — не копирование, не уничтожение, а перемещение в новую форму бытия.
(прц СтальНов(Руда руда @дать Уголь уголь @дать)Сталь(
(Целое руда)(уст _руда)
(Целое уголь)(уст _уголь)
(Сталь сделать _руда _уголь)(уст сталь) (// Внутри уже содержится сталь)
(Сталь шлак _руда _уголь сталь) (// Внутри сталь устанавливает шлак)
(вернуть сталь)
)
(Руда 1000)(уст руда)
(Уголь 2000)(уст уголь)
(СтальНов руда уголь)
(уст стальРез)
(СтальРез стальПолуч стальРез)(уст сталь)(// Извлечение из стальРез)
(СтальРез шлакПолуч стальРез)(уст шлак) (// Извлечение из стальРез)
Семантика:
Рудa и уголь — перестают существовать как таковые, но порождает новое качество: металл и шлак.
В ВМ: исходное значение помечается как потреблённое для текущего контекста, новые значения — создаются в этом же контексте,
(прц Набл (Км км) ЕслиИзм()
) (// Как познание в нижнем контексте, без передачи)
(прц Изм(Км км @изм) Км()
) (// Как эволюция значения, с передачей)
(прц Дистанция (Нов км @дать)(уст @дистанция)
(// Как потребление в ходе производства,
с извлечением значения из нижнего контекста)
наблюдение (познание)
↓
(изменение)
↓
(удаление) — производство нового качества
Это — путь от чувственного к рациональному, от чтения к трудовой передаче, от передачи к созиданию.
✅ prolet как язык декларирует сознательное действия в любом своём проявлении.
В prolet:
Есть сознательное действие: наблюдать, передавать, трансформировать. Это — не просто семантика, это — модель материального отношения к ресурсам, где: