# pro.02_50 **Виртуальная машина как орудие материальной практики**

Ниже следуют рассуждения о сущности виртуальной машины для диалектического языка, которая должна соответствующим образом транслировать все контексты на уровень исполнения. Такая виртуальная машина снимает противоречие различных аппаратных архитектур. Какими свойствами должна обладать такая виртуальная машина чтобы язык **prolet** мог перенести на неё свои возможности без потери смыслов?

Виртуальная машина передаёт воздействие орудия труда на предмет труда, границу между языком как инструментом описания реальности и машиной реализующей это описание реальности, в диалектике конкретного.

Какова должна быть виртуальная машина (**ВМ**), чтобы диалектически воплощать **prolet** в железе?

Ответ — не технический, а философско-материалистический:

**IL** для **ВМ** (и сама **ВМ**) в такой постановке вопроса неизбежен, но не как технический костыль, а как необходимый этап изменения мира для развития вычислительной формы и приведение её в действие.

## Зачем IL? Диалектическое обоснование промежуточного языка для ВМ

Противоречие: `язык` vs `аппаратура`

- Язык **prolet** — отражает реальность, человекоцентричный, диалектический.
- Аппаратура — синтетическая, конкретная, разнородная, ограниченная.

Без посредника, трансформирующего переход от широкого к конкретному — нет единства, нет перехода от формы описания к форме действия.

Решение: **IL** как продолжение языка и переход к железу:

- **IL** не есть **prolet**, но **prolet** основан на нём;
- **IL** не есть машинный код, но отражает основы цифровой материи.

Он — синтез:

- преобразует непосредственность языка,
- обобщает разнородность железа,
- и приводит к *исполняемому процессу*.

Это — переход от описания к действию:

**prolet** (как инструмент) → IL (форма-основа) → исполнение → но на новом уровне — с сохранением смысла **prolet**.

## Свойства IL: диалектический промежуточный язык

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

И поскольку в реальном мире нет разрыва между макро-уровнем и микро-уровнем -- **IL** есть часть такого неразрывного мира на разных уровнях представления.

Таким языком в **prolet** является уровень кварков.

## Что это означает?

Нет «управляющих» или «мета-» инструкций.

> Нет инструкций типа `call`, `jmp`, `alloc`, `free` как в традиционных **ВМ** (`JVM`, `CLR`, `LLVM`).
> Нет разделения на «код» и «данные» — всё есть материальное сущее, выраженное через кварки.

Каждая операция — акт преобразования кварков.

> `Сложение` — это взаимодействие двух кварков `Целое`, порождающее результат.
> Сравнение — отношение между кварками, фиксируемое как сущее (`Истина`/`Ложь` — тоже протоны на основе кварка `Бит`).
> Вызов контекста — передача набора кварков в новый локальный контекст, без стека указателей.

Инструкции — не команды, а проявления законов.

> `ВМ` не «выполняет инструкции, а реализует законы взаимодействия кварков, заданные в онтологии.
> Например, если два кварка `Целое` вступают в отношение +, то по закону арифметики возникает новый кварк-результат `Целое`.

```text
💡 ВМ — не процессор, а среда, где законы материи (кварков) реализуются напрямую.
```

| Традиционный подход                                                         | Подход prolet                                                                                                                                              |
| --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ВМ — абстрактная машина с регистрами, стеком, кучей | ВМ — материальная среда взаимодействия кварков                                                                          |
| Инструкции — внешние команды                                         | Операции — внутренние законы бытия кварков                                                                                  |
| Программист управляет памятью                                      | Память — пространство размещения кварков, управляемое их **собственными** инвариантами |
| Ошибки — нарушение протокола ВМ                                    | Ошибки — нарушение объективных законов (например, выход за @_диапазон)                                  |

## Принципы построения IL

### Соответствие кварковым контекстам

Каждый контекст (с атомами, протонами, нейтронами или кварками) имеет однозначное, минимальное отражение в **IL**.

### Неделимость

**IL**-инструкции — это допустимые действия на над кварками в рамках контекста **ВМ**, не могут быть прерваны.

### Объективность

**IL** *не зависит* от архитектуры, ОС, компилятора, так как является частью языка.

### Развиваемость

**IL** может расширяться, но только через синтез кварковых контекстов, а не хаос интегрированного движения.

### Читаемость

**IL** должен быть понятен человеку — как чертёж завода.

### Педагогичность

По **IL** можно понять, как работает **prolet**.

### Отображение кварковых контекстов в IL

Каждый контекст **prolet** → одна **IL**-инструкция с сохранением смысла.

`(кварк (...))`

```prolet
(кварк
  (Стр 5)(уст х1)
  (// Копировать значение в х1)

  (// Прямое сравнение с константой)
  (Стр сравнить х1 == "10")

  (// Переход по условию на метку)
  (Стр Если х1 == "0" То метка1)

  (// Порядок инструкций — порядок времени)
  (Цел 45)(уст ц0)
  (Цел сохр ц0 ц1)(// Кварк ничего не знает про память)
  (Цел копия ц1 ц0)(// Про набор кварков знает декодер команд)

  (// Организация стекового кадра)
  (прц1)(уст рез0)(// Извлечение результат)
  (прц2 рез0)(уст рез1)(// Помещение результата)
  (// Передача управления)
  (прц3 рез1) (// Маскируемое прерывание)
)
```

**IL** — не потеря смысла, а его приближение к форме, пригодной для реализации на практике.

## Виртуальная машина: диалектический посредник

**ВМ** — не имитация, не "виртуальность" в идеалистическом смысле, а материальная система, созданная человеком (как повторение материи), чтобы преодолеть противоречие между разными формами бытия.

Диалектические задачи **ВМ** -- снять противоречие между:

- аппаратными платформами x86, ARM, RISC-V,
- различными ОС: Windows, Linux, мобильные ОС,
- стековыми и регистровыми архитектурами,
- эффективное исполнение на синтетической аппаратуре.

## Свойства виртуальной машины (с точки зрения диалектического материализма)

### Единство и борьба форм

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

### Материальность

**ВМ** — отражение цифровой материи в памяти машины и её процессоре

### Первичность IL, вторичность машинного кода

**IL** — отражение описания материальных процессов, машинный код — отражение **IL**.

### Развивающийся интерфейс

Новые кварки **IL** добавляются не по воле, а по необходимости практики.

### Контроль над памятью

Реализует принципы владения **prolet**: нет случайного доступа, нет машинной памяти — есть пространство ВМ.

### Время как ресурс

Поддерживает точный учёт времени выполнения — как в диалектике, развитие — через время.

### Ошибки как объективные сигналы

Не маскирует сбои, а фиксируют как объективные несоответствия между действием и условиями его выполнения.

### Архитектура ВМ: кварковая машина с контролем

Выбор кварковой модели — не потому что она подражает физике, а потому что она диалектически отражает структуру материального мира в **prolet**:

- Стек вызовов — отражает иерархию процессов,
- Стек значений — отражает последовательность вычислений,
- Локальные переменные — привязаны к кварку, как в `(знач)(уст переменная)`
- Контроль потока — через допустимые операции с кварками, как в `(цел если ...)`
- Кварки со значениями, как необходимость эффективного исполнения

```prolet
(кварк
  (Цел 0)(уст ц1)(// В память отправить имя ц1)
  (Цел 1)(уст рез) (// В результат константу)
  (Цел копия рез ц1)(// Из результат -- значение ц1)
  ()(// Установить результат в специальный контекст "Запрет результата")
  (уст ц1)(// С отсутствующим результатом попытка привязки имени -- будет авария)
  (Цел слож ц1 ц1)(рез ц2)(// Сложить ц1 и ц1 с результатом в ц2)
  (возврат) (// Возврат из процесса)
)
```

> 💡 Это — не ассемблер, это — чертёж диалектического процесса, выраженный иными материальными средствами.

## ВМ как способ решения противоречий процессов в мире вычислений

ВМ — не анархия, а организованная система:

- Контроль доступа к машинной памяти — как контроль доступа в кооперативной среде: никто не может трогать чужую память без разрешения.
- Учёт всех видов ресурсов — время, память, энергия.
- Обеспечение контроля — потоки исполняются по предсказуемым правилам.
- Поддержка развития — через расширение **IL**, но с сохранением обратной совместимости.

Это — не идеалистическая "свобода", где текущий процесс эксплуатирует ресурсы процесса-неудачника, это — плановая экономика вычислений.

## Заключение: **IL** и **ВМ** как диалектический мост

**prolet** требует в виде среды действия **IL** и **ВМ**, но не как технические утилиты, а как необходимые формы развития и как продолжение предыдущей формы:

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

Это — не идеализм, это — единство смысла и действия, где:

- Смысл не теряется,
- Реальность не игнорируется,
- Развитие поддерживается.

> ✅ **ВМ** — обеспечивает предсказуемое поведение своих аксиом (кварков) на основе правил, заданных практикой, воплощая в результате труда  его производительные силы.
