|
|
@@ -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-сервер ...) — использование результатов творчества, может измениться,
|
|
|
+- (лог ...) — может быть переопределён под нужды среды, вместо реализации ядра
|
|
|
+
|
|
|
+## Заключение: язык как диалектическая система
|
|
|
+
|
|
|
+- Форма ядра `( )` — отражает устоявшееся, необходимое, объективное.
|
|
|
+- Форма расширения — `(@макро ...)` — отражает возникающее, творческое, субъективное.
|
|
|
+
|
|
|
+Их борьба и единство — двигатель развития.
|
|
|
+
|
|
|
+Переход расширения в ядро — качественный скачок.
|
|
|
+
|
|
|
+Разделение форм — материальное выражение закона отрицания отрицания.
|
|
|
+
|
|
|
+Это — не просто язык программирования, это — модель социалистического информационного общества:
|
|
|
+
|
|
|
+- стабильный базис,
|
|
|
+- свободное изменение по необходимости,
|
|
|
+- и путь от частного к общему через практику.
|