Browse Source

SVI Добавления

SVI 7 months ago
parent
commit
d8ebe1fda5
2 changed files with 219 additions and 0 deletions
  1. 1 0
      README.md
  2. 218 0
      docs/prolet-dialect-up.md

+ 1 - 0
README.md

@@ -11,6 +11,7 @@
 - [Многоэтажность языка](./docs/prolet-levels.md)
 - [Диалектика стиля нотации](./docs/prolet-notation-style.md)
 - [Диалектическое развитие S-выражений](./docs/prolet-lisp-up.md)
+- [Диалектика развития языка](./docs/prolet-dialect-up.md)
 - Атомы языка
 - ВМ
 - Система типов

+ 218 - 0
docs/prolet-dialect-up.md

@@ -0,0 +1,218 @@
+# Диалектика развития языка
+
+В духе диалектического материализма, прототип предложенного решения оснастим ещё большей выразительностью. А именно: рассмотрим вариант синтаксиса, где базовая часть ядра языка заметно (но ненавязчиво) отличается от той части, что предлагает программист в виде своего кода. Чтобы снять противоречие старого и нового, неподвижного (и малоподвижного) от движущегося.
+
+Необходимо выполнить не просто синтез противоположностей, а разделение старого и нового на уровне внутренней семантики формы, чтобы сама структура языка отражала закон отрицания отрицания.
+
+## Единообразие внешней формы и разделение по внутренней форме
+
+Если язык претендует на диалектичность, он не может быть полностью единообразным в любой форме. Он должен материально выражать противоречие между устоявшимся и возникающим, между ядром-основой и творческим дополнением, между материей прошлого и сознанием будущего.
+
+### Диалектический принцип
+
+- Ядро языка — неподвижно (в пределах версии), но совместимо (в пределах всех версий)
+- Расширение — подвижно,
+- Но движущееся порождается из неподвижного, отрицает его,
+- И в своём развитии — отрицает отрицание,
+
+поднимая язык на новый уровень.
+
+Это — не просто метапрограммирование,
+
+это — организация языка как классовой борьбы между консервацией прошлого и революцией настоящего в сфере сознания.
+
+## Новый проект: prolet с разделённой формой существующего и нового
+
+Два слоя синтаксиса:
+
+### Ядро (Базис)
+
+- Устойчивая основа: типы, управление, память, вызовы
+- Последовательная разработка ядра на основе реальных потребностей
+- Объективный подход ко всем аспектам языка
+
+### Расширение (Творчество)
+
+- Развитие: новые парадигмы, DSL, оптимизации, замена частей ядра
+- Частные расширения синтаксиса но основе текущих потребностей
+- Субъективная инициатива
+
+Это — единство и борьба форм,
+где форма выражает содержание диалектики.
+
+## Ядро: стабильное, проверенное, материалистическое
+
+Основано на S-выражениях, как в Лиспе, но семантически строго:
+
+```lisp
+(фн сложить (a b)
+    (+ a b))
+
+(структ Пользователь
+    @имя: Строка
+    @возраст: Целое)
+
+(если (x > 0)
+  тогда (напечатать "Положительно")
+  иначе (напечатать "Ноль или отрицательно"))
+```
+
+Особенности ядра:
+
+- Неизменно в рамках версии 1.x.
+- Компилируется во внутреннее представление напрямую.
+- Не может быть переопределено.
+- Создаётся централизованно на основе теории и практики.
+
+Это — материальная база, как производительные силы в экономике — нельзя менять каждый день,
+но можно развивать в следующей версии, с развитием производственных отношений.
+
+## Расширение: творческое, подвижное, диалектическое
+
+Работает в таких же фигурных скобках, где сопровождающий атрибут `@макро` означает расширение, развитие, отрицание старого на уровне пользователя. Расширение способно заменить в текущей программе более высокоуровневые реализации.
+
+Внутри — новые формы, DSL, макросы, оптимизации. Снаружи -- прежний синтаксис.
+
+```lisp
+(@макро параллельно
+  (загрузить-данные)
+  (обновить-интерфейс)
+)
+
+(@макро SQL "SELECT * FROM пользователи WHERE возраст > ?" возраст }
+```
+
+Как это работает: `параллельно` — не ключевое слово, а расширение, определённое в пользовательской библиотеке, на том же уровне.
+
+Это — народное творчество, как массовое движение, которое не ломает основу, но вносит новое содержание.
+
+## Разделение форм: философская и практическая необходимость
+
+### Формы ядра
+
+- Форма: `(операция аргументы)`
+- Изменяемость: Запрещена в версии
+- Компиляция: На этапе 1
+- Авторство: разработчики ядра
+- Ответственность: Гарантирована
+- Жизненный цикл: Долгий (версии 1.0, 2.0)
+
+### Формы пользователя
+
+- Форма: `(@макро содержание)`
+- Изменяемость: Разрешена, по согласованию
+- Компиляция: На этапе 2 (после ядра)
+- Авторство: Сообщество, отдельные разработчики
+- Ответственность: На авторе расширения
+- Жизненный цикл: Краткий (пробный, экспериментальный))
+
+Это — диалектическое разделение труда в языке:
+
+- Ядро — закон,
+- Расширение — инициатива,
+- Их единство — развитие.
+
+## Переход от старого к новому: процесс отрицания
+
+Пример: появление нового цикла в потоках (старое ядро):
+
+```list
+(для задача в список-задач
+    (выполнить задача))
+```
+
+После проверки практикой — включение в ядро новой версии (расширение):
+Новое (расширение):
+
+```list
+(в-потоках список-задач)
+```
+
+Это — отрицание отрицания:
+
+- Старое `(для ... создать-поток)` — отрицается,
+- Новое `(в-потоках ...)` — отрицает старое,
+
+Но затем `(в-потоках ...)` само отрицается — становится частью ядра, и появляется новое расширение для асинхронных потоков.
+
+## Психологическая и педагогическая выгода
+
+Для новичка:
+
+- Видит только `(...)` — простота, порядок, безопасность.
+- Расширения скрыты или отключены.
+
+Для мастера:
+
+- Может писать `(@макро ...)`, на пользовательском уровне, но осознаёт, что это — эксперимент, что он выходит за рамки устоявшегося, что за это несёт ответственность. При компиляции получает уведомление (если не подавлено атрибутом)
+
+Расширения разработчиками ядра могут быть:
+
+- Одобрены,
+- Отклонены,
+- Включены в следующую версию ядра.
+
+Это — демократический централизм в действии.
+
+## Реализация на уровне компилятора
+
+Этап 1: Парсинг ядра
+
+- Обрабатывает только системные библиотеки, строит **AST**.
+- выполняет предварительную компиляцию ядра (однократно)
+
+Этап 2: Макро-раскрытие расширений на уровне пользователя
+
+- Находит `(@макро ...)`, подставляет определение из зарегистрированных расширений.
+
+Этап 3: Трансляция в ядро
+
+- Все пользовательские макросы интегрируются в ядро.
+
+Этап 4: Компиляция
+
+- только изменившийся код.
+- сборка готовых модулей.
+
+Таким образом, вся сложность остаётся контролируемой, сборка занимает незначительное время, а инновации не разрушают стабильность.
+
+## Пример полного кода
+
+```lisp
+(// === ЯДРО === )
+(фн обработать-пакет (пакет)
+    (если (проверить-целостность пакет)
+        тогда (расшифровать пакет)
+        иначе (ошибка "битый пакет")))
+
+(// === РАСШИРЕНИЕ === )
+(HTTP-сервер
+  @маршрут: ("/api/данные" обработать-пакет)
+  @порт: 8080
+)
+
+(лог "Запуск сервера...")
+```
+
+Здесь:
+
+- (фн ...) — ядро, стабильно,
+- (HTTP-сервер ...) — использование результатов творчества, может измениться,
+- (лог ...) — может быть переопределён под нужды среды, вместо реализации ядра
+
+## Заключение: язык как диалектическая система
+
+- Форма ядра `( )` — отражает устоявшееся, необходимое, объективное.
+- Форма расширения — `(@макро ...)` — отражает возникающее, творческое, субъективное.
+
+Их борьба и единство — двигатель развития.
+
+Переход расширения в ядро — качественный скачок.
+
+Разделение форм — материальное выражение закона отрицания отрицания.
+
+Это — не просто язык программирования, это — модель социалистического информационного общества:
+
+- стабильный базис,
+- свободное изменение по необходимости,
+- и путь от частного к общему через практику.