|
|
@@ -10,10 +10,10 @@
|
|
|
|
|
|
### Диалектический принцип
|
|
|
|
|
|
-- Ядро языка — неподвижно (в пределах версии), но совместимо (в пределах всех версий)
|
|
|
-- Расширение — подвижно,
|
|
|
-- Но движущееся порождается из неподвижного, отрицает его,
|
|
|
-- И в своём развитии — отрицает отрицание,
|
|
|
+* Ядро языка — неподвижно (в пределах версии), но совместимо (в пределах всех версий)
|
|
|
+* Расширение — подвижно,
|
|
|
+* Но движущееся порождается из неподвижного, отрицает его,
|
|
|
+* И в своём развитии — отрицает отрицание,
|
|
|
|
|
|
поднимая язык на новый уровень.
|
|
|
|
|
|
@@ -25,15 +25,15 @@
|
|
|
|
|
|
### Ядро (Базис)
|
|
|
|
|
|
-- Устойчивая основа: атомы, управление, память, вызовы;
|
|
|
-- Последовательная разработка ядра на основе реальных потребностей;
|
|
|
-- Объективный подход ко всем аспектам языка.
|
|
|
+* Устойчивая основа: атомы, управление, память, вызовы;
|
|
|
+* Последовательная разработка ядра на основе реальных потребностей;
|
|
|
+* Объективный подход ко всем аспектам языка.
|
|
|
|
|
|
### Расширение (Творчество)
|
|
|
|
|
|
-- Развитие: новые парадигмы, **DSL**, оптимизации, замена частей ядра,
|
|
|
-- Частные расширения контекстов но основе текущих потребностей,
|
|
|
-- Субъективная инициатива.
|
|
|
+* Развитие: новые парадигмы, **DSL**, оптимизации, замена частей ядра,
|
|
|
+* Частные расширения контекстов но основе текущих потребностей,
|
|
|
+* Субъективная инициатива.
|
|
|
|
|
|
Это — единство и борьба форм, где форма выражает содержание диалектики.
|
|
|
|
|
|
@@ -54,7 +54,6 @@
|
|
|
)
|
|
|
)
|
|
|
|
|
|
-
|
|
|
атом(
|
|
|
имя(Пользователь)
|
|
|
протон(
|
|
|
@@ -69,7 +68,6 @@
|
|
|
)
|
|
|
)
|
|
|
|
|
|
-
|
|
|
прц(
|
|
|
имя(Пуск)
|
|
|
нач(
|
|
|
@@ -88,10 +86,10 @@
|
|
|
|
|
|
Особенности ядра:
|
|
|
|
|
|
-- Неизменно в рамках версии 1.x;
|
|
|
-- Компилируется во внутреннее представление напрямую;
|
|
|
-- Не может быть переопределено, но может быть перекрыто частным определением;
|
|
|
-- Создаётся централизованно на основе теории и практики.
|
|
|
+* Неизменно в рамках версии 1.x;
|
|
|
+* Компилируется во внутреннее представление напрямую;
|
|
|
+* Не может быть переопределено, но может быть перекрыто частным определением;
|
|
|
+* Создаётся централизованно на основе теории и практики.
|
|
|
|
|
|
> 💡 Это — материальная база, как производительные силы в экономике — нельзя менять каждый день, но можно развивать в следующей версии, с развитием производственных отношений.
|
|
|
|
|
|
@@ -109,22 +107,28 @@
|
|
|
ядро()
|
|
|
)
|
|
|
автор(user@ya.ru)
|
|
|
- док: "Конструктор запроса SELECT"
|
|
|
- парам:
|
|
|
- - тело данные
|
|
|
- - тело спека
|
|
|
- нач:
|
|
|
- - ЗагрузитьДанные {данные}
|
|
|
- - ОбновитьСпек {спека}
|
|
|
+ док("Конструктор запроса SELECT")
|
|
|
+ парам(
|
|
|
+ тело(данные)
|
|
|
+ тело(спека)
|
|
|
+ )
|
|
|
+ нач(
|
|
|
+ ЗагрузитьДанные(встав(данные))
|
|
|
+ ОбновитьСпек(встав(спека))
|
|
|
+ )
|
|
|
+)
|
|
|
+
|
|
|
+макро(
|
|
|
+ имя(выбор)
|
|
|
+ парам(
|
|
|
+ тело(таблица)
|
|
|
+ тело(возраст)
|
|
|
+ )
|
|
|
+ нач(
|
|
|
+ встав("SELECT * FROM {пользователь} WHERE возраст > ?" {возраст}")
|
|
|
+ )
|
|
|
)
|
|
|
|
|
|
-макро:
|
|
|
- имя: выбор
|
|
|
- парам:
|
|
|
- - тело таблица
|
|
|
- - тело возраст
|
|
|
- нач:
|
|
|
- - SQL "SELECT * FROM {пользователь} WHERE возраст > ?" {возраст}
|
|
|
```
|
|
|
|
|
|
Как это работает: `параллельно` — не ключевое слово, а расширение, определённое в пользовательской библиотеке, на том же уровне. Эффект `ядро` запрещает переопределять или изменять макрос.
|
|
|
@@ -137,72 +141,81 @@
|
|
|
|
|
|
### Формы ядра
|
|
|
|
|
|
-- Форма: `%контекст: ...`
|
|
|
-- Изменяемость: Запрещена в версии (эффект `ядро`)
|
|
|
-- Компиляция: На этапе 1
|
|
|
-- Авторство: разработчики ядра
|
|
|
-- Ответственность: Гарантирована
|
|
|
-- Жизненный цикл: Долгий (версии 1.0, 2.0)
|
|
|
+* Форма: `%контекст(...)`
|
|
|
+* Изменяемость: Запрещена в версии (эффект `ядро`)
|
|
|
+* Компиляция: На этапе 1
|
|
|
+* Авторство: разработчики ядра
|
|
|
+* Ответственность: Гарантирована
|
|
|
+* Жизненный цикл: Долгий (версии 1.0, 2.0)
|
|
|
|
|
|
### Формы пользователя
|
|
|
|
|
|
-- Форма: `макро: ...`
|
|
|
-- Изменяемость: Разрешена, по согласованию
|
|
|
-- Компиляция: На этапе 2 (после ядра, но до разбора исходного текста)
|
|
|
-- Авторство: Сообщество, отдельные разработчики
|
|
|
-- Ответственность: На авторе расширения
|
|
|
-- Жизненный цикл: Краткий (пробный, экспериментальный)
|
|
|
+* Форма: `макро(...)`
|
|
|
+* Изменяемость: Разрешена, по согласованию
|
|
|
+* Компиляция: На этапе 2 (после ядра, но до разбора исходного текста)
|
|
|
+* Авторство: Сообщество, отдельные разработчики
|
|
|
+* Ответственность: На авторе расширения
|
|
|
+* Жизненный цикл: Краткий (пробный, экспериментальный)
|
|
|
|
|
|
Это — диалектическое разделение труда в языке:
|
|
|
|
|
|
-- Ядро — закон,
|
|
|
-- Расширение — инициатива,
|
|
|
-- Их единство — развитие.
|
|
|
+* Ядро — закон,
|
|
|
+* Расширение — инициатива,
|
|
|
+* Их единство — развитие.
|
|
|
|
|
|
## Переход от старого к новому: процесс отрицания
|
|
|
|
|
|
Пример: появление нового цикла в потоках (старое ядро):
|
|
|
|
|
|
-```yml
|
|
|
-прц:
|
|
|
- имя: Пуск
|
|
|
- нач:
|
|
|
- - ЦиклПо списокЗадач СоздатьПоток рез
|
|
|
+```python
|
|
|
+прц(
|
|
|
+ имя(Пуск)
|
|
|
+ нач(
|
|
|
+ ЦиклПо(списокЗадач
|
|
|
+ СоздатьПоток()
|
|
|
+ рез
|
|
|
+ )
|
|
|
+ )
|
|
|
+)
|
|
|
```
|
|
|
|
|
|
После проверки практикой — включение в ядро новой версии (расширение):
|
|
|
Новое (расширение):
|
|
|
|
|
|
-```yml
|
|
|
-прц:
|
|
|
- имя: Пуск
|
|
|
- нач:
|
|
|
- - параллельно Выполнить списокЗадач, Печать "Параллельная печать в терминал!"
|
|
|
+```python
|
|
|
+прц(
|
|
|
+ имя(Пуск)
|
|
|
+ нач(
|
|
|
+ параллельно(
|
|
|
+ Выполнить(списокЗадач)
|
|
|
+ Печать()"Параллельная печать в терминал!")
|
|
|
+ )
|
|
|
+)
|
|
|
```
|
|
|
|
|
|
Это — отрицание отрицания:
|
|
|
|
|
|
-- Старое `ЦиклПо ... СоздатьПоток` — отрицается,
|
|
|
-- Новый макрос `параллельно ...` — отрицает старое,
|
|
|
+* Старое `ЦиклПо(... СоздатьПоток)` — отрицается,
|
|
|
+* Новый макрос `параллельно ...` — отрицает старое,
|
|
|
|
|
|
-Но затем `параллельно ...` само отрицается — становится частью ядра, и появляется новое расширение для асинхронных потоков.
|
|
|
+Но затем `параллельно(...)` само отрицается — становится частью ядра, и появляется новое расширение для асинхронных потоков.
|
|
|
|
|
|
## Психологическая и педагогическая выгода
|
|
|
|
|
|
Для новичка:
|
|
|
|
|
|
-- Видит только `%контекст: ...` — простота, порядок, безопасность.
|
|
|
-- Расширения скрыты или отключены.
|
|
|
+* Видит только `%контекст(...)` — простота, порядок, безопасность.
|
|
|
+* Расширения скрыты или отключены.
|
|
|
|
|
|
Для специалиста:
|
|
|
|
|
|
-- Может писать `макро: ...`, на пользовательском уровне, но осознаёт, что это — эксперимент, что он выходит за рамки устоявшегося, что за это несёт ответственность. При компиляции получает уведомление (если не подавлено атрибутом).
|
|
|
+* Может писать `макро(...)`, на пользовательском уровне, но осознаёт, что это — эксперимент, что он выходит за рамки устоявшегося, что за это несёт ответственность. При компиляции получает уведомление (если не подавлено атрибутом).
|
|
|
|
|
|
Расширения разработчиками ядра могут быть:
|
|
|
|
|
|
-- Одобрены,
|
|
|
-- Отклонены,
|
|
|
-- Включены в следующую версию ядра.
|
|
|
+* Одобрены,
|
|
|
+* Отклонены,
|
|
|
+* Включены в следующую версию ядра.
|
|
|
|
|
|
Это — демократический централизм в действии.
|
|
|
|
|
|
@@ -210,23 +223,23 @@
|
|
|
|
|
|
Этап 1: Парсинг ядра
|
|
|
|
|
|
-- Обрабатывает только системные библиотеки, строит **AST**.
|
|
|
-- выполняет предварительную компиляцию ядра (однократно).
|
|
|
+* Обрабатывает только системные библиотеки, строит **AST**.
|
|
|
+* выполняет предварительную компиляцию ядра (однократно).
|
|
|
|
|
|
Этап 2: Макро-раскрытие расширений на уровне пользователя
|
|
|
|
|
|
-- Находит `макро: ...`, подставляет определение из зарегистрированных расширений;
|
|
|
-- Проверяет квалификацию, тесты, отсутствие эффекта `ядро`.
|
|
|
+* Находит `макро(...)`, подставляет определение из зарегистрированных расширений;
|
|
|
+* Проверяет квалификацию, тесты, отсутствие эффекта `ядро`.
|
|
|
|
|
|
Этап 3: Трансляция в ядро
|
|
|
|
|
|
-- Все пользовательские макросы интегрируются в ядро;
|
|
|
-- Проставляется эффект `ядро`.
|
|
|
+* Все пользовательские макросы интегрируются в ядро;
|
|
|
+* Проставляется эффект `ядро`.
|
|
|
|
|
|
Этап 4: Компиляция
|
|
|
|
|
|
-- только изменившийся код.
|
|
|
-- сборка готовых модулей.
|
|
|
+* только изменившийся код.
|
|
|
+* сборка готовых модулей.
|
|
|
|
|
|
> 💡 Таким образом, вся сложность остаётся контролируемой, сборка занимает незначительное время, а инновации не разрушают стабильность.
|
|
|
|
|
|
@@ -234,47 +247,60 @@
|
|
|
|
|
|
```yml
|
|
|
# === ЯДРО ===
|
|
|
-фн:
|
|
|
- имя: ОбработатьПакет
|
|
|
- эффект:
|
|
|
- - ядро
|
|
|
- парам:
|
|
|
- - СписокДок пакет
|
|
|
- нач:
|
|
|
- - ПроверитьЦелостность пакет
|
|
|
- - если рез
|
|
|
- - _ тогда Расшифровать пакет
|
|
|
- - _ иначе Остановить "битый пакет"
|
|
|
+фн(
|
|
|
+ имя(ОбработатьПакет)
|
|
|
+ эффект(
|
|
|
+ ядро()
|
|
|
+ )
|
|
|
+ парам(
|
|
|
+ СписокДок(пакет)
|
|
|
+ )
|
|
|
+ нач(
|
|
|
+ ПроверитьЦелостность(пакет)
|
|
|
+ если(рез
|
|
|
+ тогда (
|
|
|
+ Расшифровать(пакет)
|
|
|
+ ..
|
|
|
+ )
|
|
|
+ Остановить("битый пакет")
|
|
|
+ )
|
|
|
+)
|
|
|
+
|
|
|
|
|
|
# === РАСШИРЕНИЕ ===
|
|
|
-атом:
|
|
|
- имя: ВебСервер
|
|
|
- протон:
|
|
|
- - ВебОбработчик маршрут
|
|
|
- - СетьПорт порт
|
|
|
-
|
|
|
-прц:
|
|
|
- имя: Пуск
|
|
|
- нач:
|
|
|
- - Печатать "Запуск сервера..."
|
|
|
+атом(
|
|
|
+ имя(ВебСервер)
|
|
|
+ протон(
|
|
|
+ ВебОбработчик(маршрут)
|
|
|
+ СетьПорт(порт)
|
|
|
+ )
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+прц(
|
|
|
+ имя(Пуск)
|
|
|
+ нач(
|
|
|
+ Печатать("Запуск сервера...")
|
|
|
+ )
|
|
|
+)
|
|
|
```
|
|
|
|
|
|
Здесь:
|
|
|
|
|
|
-- `фн: ...` — ядро, стабильно,
|
|
|
-- `ВебСервер` — использование результатов творчества, может измениться,
|
|
|
-- `Печатать ...` — может быть переопределён под нужды среды, вместо реализации ядра
|
|
|
+* `фн(...)` — ядро, стабильно,
|
|
|
+* `ВебСервер` — использование результатов творчества, может измениться,
|
|
|
+* `Печатать(...)` — может быть переопределён под нужды среды, вместо реализации ядра
|
|
|
|
|
|
### Правила
|
|
|
|
|
|
-- Сущности ядра могут использовать сущности этапа разработки через спецификации;
|
|
|
-- Сущности ядра на этапе разработки изменять нельзя;
|
|
|
-- Сущности этапа разработки могут использовать сущности ядра.
|
|
|
+* Сущности ядра могут использовать сущности этапа разработки через спецификации;
|
|
|
+* Сущности ядра на этапе разработки изменять нельзя;
|
|
|
+* Сущности этапа разработки могут использовать сущности ядра.
|
|
|
|
|
|
## 🎯 Заключение: язык как диалектическая система
|
|
|
|
|
|
-- Форма ядра `%контекст: ...` — отражает устоявшееся, необходимое, объективное.
|
|
|
-- Форма расширения — `макро: ...)` — отражает возникающее, творческое, субъективное.
|
|
|
+* Форма ядра `%контекст(...)` — отражает устоявшееся, необходимое, объективное.
|
|
|
+* Форма расширения — `макро(...)` — отражает возникающее, творческое, субъективное.
|
|
|
|
|
|
> ✅ Их борьба и единство — двигатель развития.
|
|
|
|
|
|
@@ -284,6 +310,6 @@
|
|
|
|
|
|
> ✅ Это — не просто язык программирования, это — модель справедливого информационного общества:
|
|
|
|
|
|
-- стабильный базис,
|
|
|
-- свободное изменение по необходимости,
|
|
|
-- и путь от частного к общему через практику.
|
|
|
+* стабильный базис,
|
|
|
+* свободное изменение по необходимости,
|
|
|
+* и путь от частного к общему через практику.
|