|
|
@@ -14,24 +14,24 @@
|
|
|
|
|
|
Нам же нужен синтез:
|
|
|
|
|
|
--- Минимализм `Lisp` в синтаксисе,
|
|
|
--- Материализм диалектики в семантике,
|
|
|
--- Педагогика в структуре,
|
|
|
--- Развитие — в самом языке.
|
|
|
+- Минимализм `Lisp` в синтаксисе,
|
|
|
+- Материализм диалектики в семантике,
|
|
|
+- Педагогика в структуре,
|
|
|
+- Развитие — в самом языке.
|
|
|
|
|
|
### Новый путь: `prolet` как диалектический минимализм
|
|
|
|
|
|
Основной принцип:
|
|
|
|
|
|
-* Один синтаксис — множество смыслов.
|
|
|
-* Форма — минимальна,
|
|
|
-* Семантика — управляема контекстом,
|
|
|
-* Развитие — через метаязык.
|
|
|
+- Один синтаксис — множество смыслов.
|
|
|
+- Форма — минимальна,
|
|
|
+- Семантика — управляема контекстом,
|
|
|
+- Развитие — через метаязык.
|
|
|
|
|
|
Это — не возврат к `Lisp` , а его диалектическое преодоление:
|
|
|
|
|
|
-* мы берём гомоиконичность (взаимность представления кода и данных)
|
|
|
-* макросы,
|
|
|
+- мы берём гомоиконичность (взаимность представления кода и данных)
|
|
|
+- макросы,
|
|
|
|
|
|
но встраиваем их в рамки объективной реальности — памяти, времени, безопасности, готовности программиста.
|
|
|
|
|
|
@@ -82,30 +82,30 @@
|
|
|
|
|
|
Все конструкции — одного синтаксического вида, но семантика управляется _тегом в начале_:
|
|
|
|
|
|
-* `фн` (функция),
|
|
|
-* `структ` (структура),
|
|
|
-* `система` (низкоуровневый),
|
|
|
-* `тип`.
|
|
|
+- `фн` (функция),
|
|
|
+- `структ` (структура),
|
|
|
+- `система` (низкоуровневый),
|
|
|
+- `тип`.
|
|
|
|
|
|
## Узкие семантические формы: от простого к сложному
|
|
|
|
|
|
- `Мы не устраняем сложность, но последовательно её раскрываем.`
|
|
|
+`Мы не устраняем сложность, но последовательно её раскрываем.`
|
|
|
|
|
|
### Уровень 1: Новичок
|
|
|
|
|
|
Доступны только:
|
|
|
|
|
|
-* (фн ...)
|
|
|
-* (спис ...),
|
|
|
-* (словарь ...),
|
|
|
-* (если ...),
|
|
|
-* (для ...)
|
|
|
+- (фн ...)
|
|
|
+- (спис ...),
|
|
|
+- (словарь ...),
|
|
|
+- (если ...),
|
|
|
+- (для ...)
|
|
|
|
|
|
Нет доступа к:
|
|
|
|
|
|
-* (@система),
|
|
|
-* (асм),
|
|
|
-* (макро).
|
|
|
+- (@система),
|
|
|
+- (асм),
|
|
|
+- (макро).
|
|
|
|
|
|
```lisp
|
|
|
(фн привет (имя)
|
|
|
@@ -118,9 +118,9 @@
|
|
|
|
|
|
Открываются:
|
|
|
|
|
|
-* (структ ...)
|
|
|
-* (тип ...)
|
|
|
-* (макрос ...)
|
|
|
+- (структ ...)
|
|
|
+- (тип ...)
|
|
|
+- (макрос ...)
|
|
|
|
|
|
```lisp
|
|
|
(структ Точка (
|
|
|
@@ -138,10 +138,10 @@
|
|
|
|
|
|
Разрешён:
|
|
|
|
|
|
-* (@система ...)
|
|
|
-* (асм ...)
|
|
|
-* (система-вызов ...)
|
|
|
-* (указ ...)
|
|
|
+- (@система ...)
|
|
|
+- (асм ...)
|
|
|
+- (система-вызов ...)
|
|
|
+- (указ ...)
|
|
|
|
|
|
```lisp
|
|
|
(фн @система копировать-память (цель источник длина)
|
|
|
@@ -152,9 +152,9 @@
|
|
|
|
|
|
**Но!** Такой код не компилируется без:
|
|
|
|
|
|
-* одобрения ревью,
|
|
|
-* ссылки на стандарт (например, "интерфейс драйвера PCI"),
|
|
|
-* пометки обоснования @причина "взаимодействие с железом".
|
|
|
+- одобрения ревью,
|
|
|
+- ссылки на стандарт (например, "интерфейс драйвера PCI"),
|
|
|
+- пометки обоснования @причина "взаимодействие с железом".
|
|
|
|
|
|
## Семантическая экономия: один синтаксис — разный смысл по контексту
|
|
|
|
|
|
@@ -190,9 +190,9 @@
|
|
|
|
|
|
Но:
|
|
|
|
|
|
-* Макросы только в модулях уровня 2+,
|
|
|
-* Должны быть задокументированы,
|
|
|
-* Не могут переопределять базовые формы (`если`, `функция` и т.п.).
|
|
|
+- Макросы только в модулях уровня 2+,
|
|
|
+- Должны быть задокументированы,
|
|
|
+- Не могут переопределять базовые формы (`если`, `функция` и т.п.).
|
|
|
|
|
|
Это — революционное преобразование старой формы со свободным содержанием, в новую форму с дисциплиной смысла.
|
|
|
|
|
|
@@ -213,65 +213,65 @@ prolet
|
|
|
|
|
|
Что даёт такая форма:
|
|
|
|
|
|
-* Семантически сужает контекст: только указатели, только арифметика.
|
|
|
-* Фиксирует ответственность: обоснование, ревью, уровень.
|
|
|
-* Экономит мыслетопливо: нет лишних слов, только суть.
|
|
|
-* Педагогически настраивает: программист осознаёт, что делает.
|
|
|
+- Семантически сужает контекст: только указатели, только арифметика.
|
|
|
+- Фиксирует ответственность: обоснование, ревью, уровень.
|
|
|
+- Экономит мыслетопливо: нет лишних слов, только суть.
|
|
|
+- Педагогически настраивает: программист осознаёт, что делает.
|
|
|
|
|
|
## Сравнение подходов: почему это диалектичнее
|
|
|
|
|
|
### Синтаксическая сложность
|
|
|
|
|
|
-* `Lisp` Очень низкая
|
|
|
-* `Rust` Высокая
|
|
|
-* `prolet` Очень низкая
|
|
|
+- `Lisp` Очень низкая
|
|
|
+- `Rust` Высокая
|
|
|
+- `prolet` Очень низкая
|
|
|
|
|
|
### Семантическая ясность
|
|
|
|
|
|
-* `Lisp` Низкая (всё — список)
|
|
|
-* `Rust` Высокая (много форм)
|
|
|
-* `prolet` Высокая (контекст + тег)
|
|
|
+- `Lisp` Низкая (всё — список)
|
|
|
+- `Rust` Высокая (много форм)
|
|
|
+- `prolet` Высокая (контекст + тег)
|
|
|
|
|
|
### Гибкость
|
|
|
|
|
|
-* `Lisp` Деструктивно высокая
|
|
|
-* `Rust` Ограниченная
|
|
|
-* `prolet` Высокая (макросы + уровни)
|
|
|
+- `Lisp` Деструктивно высокая
|
|
|
+- `Rust` Ограниченная
|
|
|
+- `prolet` Высокая (макросы + уровни)
|
|
|
|
|
|
### Безопасность
|
|
|
|
|
|
-* `Lisp` Нет
|
|
|
-* `Rust` Высокая
|
|
|
-* `prolet` (по уровням, от минимальной до высокой)
|
|
|
+- `Lisp` Нет
|
|
|
+- `Rust` Высокая
|
|
|
+- `prolet` (по уровням, от минимальной до высокой)
|
|
|
|
|
|
### Развитие языка
|
|
|
|
|
|
-* `Lisp` доступно индивидуально
|
|
|
-* `Rust` Через RFC
|
|
|
-* `prolet` Через макросы + одобрение сверху
|
|
|
+- `Lisp` доступно индивидуально
|
|
|
+- `Rust` Через RFC
|
|
|
+- `prolet` Через макросы + одобрение сверху
|
|
|
|
|
|
### Экономия мыслетоплива
|
|
|
|
|
|
-* `Lisp` Высокая для экспертов, низкая для новичков
|
|
|
-* `Rust` Низкая (много правил)
|
|
|
-* `prolet` Высокая (одна форма; много фиксированных смыслов в конкретном контексте)
|
|
|
+- `Lisp` Высокая для экспертов, низкая для новичков
|
|
|
+- `Rust` Низкая (много правил)
|
|
|
+- `prolet` Высокая (одна форма; много фиксированных смыслов в конкретном контексте)
|
|
|
|
|
|
### Педагогичность
|
|
|
|
|
|
-* `Lisp` Низкая
|
|
|
-* `Rust` Недостаточная
|
|
|
-* `prolet` Высокая (постепенное раскрытие)
|
|
|
+- `Lisp` Низкая
|
|
|
+- `Rust` Недостаточная
|
|
|
+- `prolet` Высокая (постепенное раскрытие)
|
|
|
|
|
|
## Заключение: язык как диалектический инструмент
|
|
|
|
|
|
Приведённый синтез формы из трёх языков, соответствует духу диалектического материализма:
|
|
|
|
|
|
-* Форма — лисп-подобная: одна, чистая, минимальная.
|
|
|
-* Семантика — материалистическая: определяется практикой, контекстом, уровнем развития.
|
|
|
-* Переход между уровнями — не скачок, а педагогически организованный процесс.
|
|
|
-* Язык — не замороженный объект, а развивающийся организм.
|
|
|
+- Форма — лисп-подобная: одна, чистая, минимальная.
|
|
|
+- Семантика — материалистическая: определяется практикой, контекстом, уровнем развития.
|
|
|
+- Переход между уровнями — не скачок, а педагогически организованный процесс.
|
|
|
+- Язык — не замороженный объект, а развивающийся организм.
|
|
|
|
|
|
Это — не упрощение, а углубление диалектики:
|
|
|
|
|
|
-* мы не множим формы,
|
|
|
-* мы углубляем понимание единства и борьбы противоположностей в самом акте программирования.
|
|
|
+- мы не множим формы,
|
|
|
+- мы углубляем понимание единства и борьбы противоположностей в самом акте программирования.
|