|
|
@@ -1,6 +1,6 @@
|
|
|
# pro-014 **Виртуальная машина как орудие материальной практики**
|
|
|
|
|
|
-Ниже следуют рассуждения о сущности виртуальной машины для диалектического языка, которая должна соответствующим образом транслировать все контексты на уровень исполнения. Такая виртуальная машина, которая снимает противоречие различных аппаратных архитектур. Какими свойствами должна обладать такая виртуальная машина чтобы язык **prolet** мог перенести на неё свои возможности без потери смыслов?
|
|
|
+Ниже следуют рассуждения о сущности виртуальной машины для диалектического языка, которая должна соответствующим образом транслировать все контексты на уровень исполнения. Такая виртуальная машина снимает противоречие различных аппаратных архитектур. Какими свойствами должна обладать такая виртуальная машина чтобы язык **prolet** мог перенести на неё свои возможности без потери смыслов?
|
|
|
|
|
|
Виртуальная машина передаёт воздействие орудия труда на предмет труда, границу между языком как инструментом описания реальности и машиной реализующей это описание реальности, в диалектике конкретного.
|
|
|
|
|
|
@@ -19,10 +19,10 @@
|
|
|
|
|
|
Без посредника, трансформирующего переход от широкого к конкретному — нет единства, нет перехода от формы описания к форме действия.
|
|
|
|
|
|
-Решение: **IL** как продолжение языка и переход к железу
|
|
|
+Решение: **IL** как продолжение языка и переход к железу:
|
|
|
|
|
|
-- **IL** не есть **prolet**, но порождён им.
|
|
|
-- **IL** не есть машинный код, но ведёт к нему.
|
|
|
+- **IL** не есть **prolet**, но **prolet** основан на нём;
|
|
|
+- **IL** не есть машинный код, но отражает основы цифровой материи.
|
|
|
|
|
|
Он — синтез:
|
|
|
|
|
|
@@ -32,81 +32,108 @@
|
|
|
|
|
|
Это — переход от описания к действию:
|
|
|
|
|
|
-**prolet** (как инструмент) → IL (форма-посредник) → машинный код (исполнение) → но на новом уровне — с сохранением смысла **prolet**.
|
|
|
+**prolet** (как инструмент) → IL (форма-основа) → исполнение → но на новом уровне — с сохранением смысла **prolet**.
|
|
|
|
|
|
## Свойства IL: диалектический промежуточный язык
|
|
|
|
|
|
**IL** должен быть не просто набором инструкций, а отражением онтологии **prolet** иными средствами, от материалистического описания к практическому действию.
|
|
|
|
|
|
+И поскольку в реальном мире нет разрыва между макро-уровнем и микро-уровнем -- **IL** есть часть такого неразрывного мира на разных уровнях представления.
|
|
|
+
|
|
|
+Таким языком в **prolet** является уровень кварков.
|
|
|
+
|
|
|
+## Что это означает?
|
|
|
+
|
|
|
+Нет «управляющих» или «мета-» инструкций.
|
|
|
+
|
|
|
+> Нет инструкций типа `call`, `jmp`, `alloc`, `free` как в традиционных **ВМ** (`JVM`, `CLR`, `LLVM`).
|
|
|
+Нет разделения на «код» и «данные» — всё есть материальное сущее, выраженное через кварки.
|
|
|
+
|
|
|
+Каждая операция — акт преобразования кварков.
|
|
|
+
|
|
|
+> `Сложение` — это взаимодействие двух кварков `Целое`, порождающее результат.
|
|
|
+Сравнение — отношение между кварками, фиксируемое как сущее (`Истина`/`Ложь` — тоже нуклоны на основе кварка `Бит`).
|
|
|
+Вызов контекста — передача набора кварков в новый локальный контекст, без стека указателей.
|
|
|
+
|
|
|
+Инструкции — не команды, а проявления законов.
|
|
|
+
|
|
|
+> `ВМ` не «выполняет инструкции, а реализует законы взаимодействия кварков, заданные в онтологии.
|
|
|
+Например, если два кварка `Целое` вступают в отношение +, то по закону арифметики возникает новый кварк-результат `Целое`.
|
|
|
+
|
|
|
+```text
|
|
|
+💡 ВМ — не процессор, а среда, где законы материи (кварков) реализуются напрямую.
|
|
|
+```
|
|
|
+
|
|
|
+| Традиционный подход | Подход prolet |
|
|
|
+| ------------------- | ------------- |
|
|
|
+| ВМ — абстрактная машина с регистрами, стеком, кучей | ВМ — материальная среда взаимодействия кварков |
|
|
|
+| Инструкции — внешние команды | Операции — внутренние законы бытия кварков |
|
|
|
+| Программист управляет памятью | Память — пространство размещения кварков, управляемое их собственными инвариантами |
|
|
|
+| Ошибки — нарушение протокола ВМ | Ошибки — нарушение объективных законов (например, выход за @_диапазон) |
|
|
|
+
|
|
|
## Принципы построения IL
|
|
|
|
|
|
-### Соответствие атомарным контекстам
|
|
|
+### Соответствие кварковым контекстам
|
|
|
|
|
|
-Каждый атомарный контекст имеет однозначное, минимальное отражение в **IL**
|
|
|
+Каждый контекст (с атомами, нуклонами или кварками) имеет однозначное, минимальное отражение в **IL**.
|
|
|
|
|
|
### Неделимость
|
|
|
|
|
|
-**IL**-инструкции — атомарны в рамках контекста **ВМ**, не могут быть прерваны
|
|
|
+**IL**-инструкции — это допустимые действия на над кварками в рамках контекста **ВМ**, не могут быть прерваны.
|
|
|
|
|
|
### Объективность
|
|
|
|
|
|
-**IL** *не зависит* от архитектуры, ОС, компилятора
|
|
|
+**IL** *не зависит* от архитектуры, ОС, компилятора, так как является частью языка.
|
|
|
|
|
|
### Развиваемость
|
|
|
|
|
|
-**IL** может расширяться, но только через синтез атомарных контекстов, а не хаос интегрированного движения
|
|
|
+**IL** может расширяться, но только через синтез кварковых контекстов, а не хаос интегрированного движения.
|
|
|
|
|
|
### Читаемость
|
|
|
|
|
|
-**IL** должен быть понятен человеку — как чертёж завода
|
|
|
+**IL** должен быть понятен человеку — как чертёж завода.
|
|
|
|
|
|
### Педагогичность
|
|
|
|
|
|
-По **IL** можно понять, как работает **prolet**
|
|
|
+По **IL** можно понять, как работает **prolet**.
|
|
|
|
|
|
-### Отображение атомарных контекстов в IL
|
|
|
+### Отображение кварковых контекстов в IL
|
|
|
|
|
|
-Каждый контекст **prolet** → одна или несколько **IL**-инструкций,
|
|
|
-но без потери смысла.
|
|
|
+Каждый контекст **prolet** → одна **IL**-инструкция с сохранением смысла.
|
|
|
|
|
|
-`(асм (...))`
|
|
|
+`(кварк (...))`
|
|
|
|
|
|
```prolet
|
|
|
-(асм
|
|
|
- (сохр x стек)
|
|
|
- (// Поместить значение в стек)
|
|
|
-
|
|
|
- (// Прямое сравнение с константой)
|
|
|
- (сравнить рег0 == 10)
|
|
|
-
|
|
|
- (// Переход по условию на метку)
|
|
|
- (ЕслиНе рег0 ноль То метка1)
|
|
|
-
|
|
|
- (// Порядок инструкций — порядок времени)
|
|
|
- (рег0 уст 45)
|
|
|
- (сохр рег0 n)(// Регистр ничего не знает про память)
|
|
|
- (загр v рег0)(// Про памят ьи регистр знает декодер команд)
|
|
|
-
|
|
|
- (// Организация стекового кадра)
|
|
|
- (вызов прц1)
|
|
|
- (адр прц1 сохр стек)
|
|
|
- (вызов прц2)
|
|
|
- (извл стек рег0)(// Извлечение результат)
|
|
|
- (влож рег0 стек)(// Помещение результат)
|
|
|
-
|
|
|
- (// Передача управления)
|
|
|
- (авария 4)
|
|
|
- (вектор рег0) (// Маскируемое прерывание)
|
|
|
+(кварк
|
|
|
+ (Стр 5)(уст х1)
|
|
|
+ (// Копировать значение в х1)
|
|
|
+
|
|
|
+ (// Прямое сравнение с константой)
|
|
|
+ (Стр сравнить х1 == "10")
|
|
|
+
|
|
|
+ (// Переход по условию на метку)
|
|
|
+ (Стр Если х1 == "0" То метка1)
|
|
|
+
|
|
|
+ (// Порядок инструкций — порядок времени)
|
|
|
+ (Цел 45)(уст ц0)
|
|
|
+ (Цел сохр ц0 ц1)(// Кварк ничего не знает про память)
|
|
|
+ (Цел копия ц1 ц0)(// Про набор кварков знает декодер команд)
|
|
|
+
|
|
|
+ (// Организация стекового кадра)
|
|
|
+ (прц1)(уст рез0)(// Извлечение результат)
|
|
|
+ (прц2 рез0)(уст рез1)(// Помещение результата)
|
|
|
+ (// Передача управления)
|
|
|
+ (прц3 рез1) (// Маскируемое прерывание)
|
|
|
)
|
|
|
```
|
|
|
|
|
|
-**IL** — не потеря смысла, а его трансляция в форму, пригодную для машинной практики.
|
|
|
+**IL** — не потеря смысла, а его приближение к форме, пригодной для реализации на практике.
|
|
|
|
|
|
## Виртуальная машина: диалектический посредник
|
|
|
|
|
|
-**ВМ** — не имитация, не "виртуальность" в идеалистическом смысле, а материальная система, созданная человеком, чтобы преодолеть противоречие между разными формами бытия железа.
|
|
|
+**ВМ** — не имитация, не "виртуальность" в идеалистическом смысле, а материальная система, созданная человеком (как повторение материи), чтобы преодолеть противоречие между разными формами бытия.
|
|
|
|
|
|
-Диалектические задачи **ВМ** -- снять противоречие между:
|
|
|
+Диалектические задачи **ВМ** -- снять противоречие между:
|
|
|
|
|
|
- аппаратными платформами x86, ARM, RISC-V,
|
|
|
- различными ОС: Windows, Linux, мобильные ОС,
|
|
|
@@ -117,59 +144,55 @@
|
|
|
|
|
|
### Единство и борьба форм
|
|
|
|
|
|
-Поддерживает множество архитектур, но через единую модель исполнения
|
|
|
+Поддерживает множество архитектур, но через единую модель бытия.
|
|
|
|
|
|
### Материальность
|
|
|
|
|
|
-ВМ — не абстракция, а процесс в памяти и на процессоре
|
|
|
+**ВМ** — не отражение материи в памяти машины и её процессоре
|
|
|
|
|
|
### Первичность IL, вторичность машинного кода
|
|
|
|
|
|
-**IL** — отражение описания процессов, машинный код — его материализация
|
|
|
+**IL** — отражение описания материальных процессов, машинный код — отражение **IL**.
|
|
|
|
|
|
### Развивающийся интерфейс
|
|
|
|
|
|
-Новые инструкции **IL** добавляются не по воле, а по необходимости практики
|
|
|
+Новые кварки **IL** добавляются не по воле, а по необходимости практики.
|
|
|
|
|
|
### Контроль над памятью
|
|
|
|
|
|
-Реализует принципы владения **prolet**: нет случайного доступа
|
|
|
+Реализует принципы владения **prolet**: нет случайного доступа.
|
|
|
|
|
|
### Время как ресурс
|
|
|
|
|
|
-Поддерживает точный учёт времени выполнения — как в диалектике, развитие — через время
|
|
|
+Поддерживает точный учёт времени выполнения — как в диалектике, развитие — через время.
|
|
|
|
|
|
### Ошибки как объективные сигналы
|
|
|
|
|
|
Не маскирует сбои, а фиксируют как объективные несоответствия между действием и условиями его выполнения.
|
|
|
|
|
|
-### Архитектура ВМ: смешанная регистровая стековая машина с контролем
|
|
|
+### Архитектура ВМ: кварковая машина с контролем
|
|
|
|
|
|
-Выбор смешанной модели — не потому что она "популярна", а потому что она диалектически отражает структуру **prolet**:
|
|
|
+Выбор кварковой модели — не потому что она подражает физике, а потому что она диалектически отражает структуру материального мира в **prolet**:
|
|
|
|
|
|
-- Стек вызовов — отражает иерархию процессов.
|
|
|
-- Стек значений — отражает последовательность вычислений.
|
|
|
-- Локальные переменные — привязаны к кадру, как в `(знач)(уст переменная)`
|
|
|
-- Контроль потока — через метки и переходы, как в `(если ...)`
|
|
|
-- Регистры, как необходимость эффективного исполнения
|
|
|
+- Стек вызовов — отражает иерархию процессов,
|
|
|
+- Стек значений — отражает последовательность вычислений,
|
|
|
+- Локальные переменные — привязаны к кварку, как в `(знач)(уст переменная)`
|
|
|
+- Контроль потока — через допустимые операции с кварками, как в `(цел если ...)`
|
|
|
+- Кварки со значениями, как необходимость эффективного исполнения
|
|
|
|
|
|
```prolet
|
|
|
-(асм
|
|
|
- (адр х стек)(// На стэк отправить ссылку на х)
|
|
|
- (влож рег0 стек) (// На стэк значение регистра)
|
|
|
- (влож у стек)(// На стэк содержимое значения)
|
|
|
- (извл стек рег0)(// Со стека -- значение рег0)
|
|
|
- (извл стек _)(// Вытолкнуть с стека)
|
|
|
- (извл стек х)(// Со стека -- значение х)
|
|
|
- (слож рег1 рег0)(// Сложить рег1 и рег0 с результатом в рег0)
|
|
|
- (возврат) (// Возврат из функции)
|
|
|
+(кварк
|
|
|
+ (Цел 0)(уст ц1)(// В память отправить имя ц1)
|
|
|
+ (Цел 1)(уст рез) (// В результат константу)
|
|
|
+ (Цел копия рез ц1)(// Из результат -- значение ц1)
|
|
|
+ ()(// Установить результат в специальный кварк "пусто")
|
|
|
+ (уст ц1)(// С отсутствующим результатом попытка привязки имени -- будет авария)
|
|
|
+ (Цел слож ц1 ц1)(рез ц2)(// Сложить ц1 и ц1 с результатом в ц2)
|
|
|
+ (возврат) (// Возврат из процесса)
|
|
|
)
|
|
|
```
|
|
|
|
|
|
-::: info
|
|
|
-Это — не ассемблер, это — чертёж диалектического процесса, выраженный иными средствами.
|
|
|
-
|
|
|
-:::
|
|
|
+> 💡 Это — не ассемблер, это — чертёж диалектического процесса, выраженный иными материальными средствами.
|
|
|
|
|
|
## ВМ как способ решения противоречий процессов в мире вычислений
|
|
|
|
|
|
@@ -178,15 +201,15 @@
|
|
|
- Контроль доступа к памяти — как контроль доступа в кооперативной среде: никто не может трогать чужую память без разрешения.
|
|
|
- Учёт всех видов ресурсов — время, память, энергия.
|
|
|
- Обеспечение контроля — потоки исполняются по предсказуемым правилам.
|
|
|
-- Поддержка развития — через обновление **IL**, но с сохранением обратной совместимости.
|
|
|
+- Поддержка развития — через расширение **IL**, но с сохранением обратной совместимости.
|
|
|
|
|
|
Это — не идеалистическая "свобода", где текущий процесс эксплуатирует ресурсы процесса-неудачника, это — плановая экономика вычислений.
|
|
|
|
|
|
## Заключение: **IL** и **ВМ** как диалектический мост
|
|
|
|
|
|
-**prolet** требует в виде среды действия **IL** и **ВМ**, но не как технические утилиты, а как необходимые формы развития:
|
|
|
+**prolet** требует в виде среды действия **IL** и **ВМ**, но не как технические утилиты, а как необходимые формы развития и как продолжение предыдущей формы:
|
|
|
|
|
|
-- **IL** — другая форма представления **prolet**, пригодная для практического применения,
|
|
|
+- **IL** — одна из форм представления **prolet**, пригодная для практического применения,
|
|
|
- **ВМ** — материальный инструмент, позволяющий разработчику реализовать замысел в железе.
|
|
|
|
|
|
Это — не идеализм, это — единство смысла и действия, где:
|
|
|
@@ -195,7 +218,4 @@
|
|
|
- Реальность не игнорируется,
|
|
|
- Развитие обеспечивается.
|
|
|
|
|
|
-::: success
|
|
|
-**ВМ** — обеспечивает предсказуемое распределение ресурсов на основе правил, заданных практикой, воплощая в результате труда его производительные силы.
|
|
|
-
|
|
|
-:::
|
|
|
+> ✅ **ВМ** — обеспечивает предсказуемое поведение своей основы (кварков) на основе правил, заданных практикой, воплощая в результате труда его производительные силы.
|