Как было отмечено ранее, синтаксис предлагаемый с опорой на Си / Rust не поддерживает (сопротивляется) развитию семантических форм языка. Слишком много форм представления алгоритмов и структур.
Более узкие семантические формы в духе S-выражений (ближе по сути к Лисп), позволяют создавать на единой базе S-выражений предсказуемые по форме выражения, но c широкой по содержанию семантикой.
Rust , как мы уже отметили, — это победа формы над мыслью в угоду безопасности.
Lisp — победа мысли над формой, но в ущерб практике и педагогике.
Pascal -- при хороших педагогических свойствах не обеспечивает требование развития языка.
Нам же нужен синтез:
Lisp в синтаксисе,prolet как диалектический минимализмОсновной принцип:
Это — не возврат к Lisp , а его диалектическое преодоление:
но встраиваем их в рамки объективной реальности — памяти, времени, безопасности, готовности программиста.
Вместо множества форм ( struct , enum , fn , unsafe , impl , where и т.д.) — одна базовая конструкция:
(операция аргументы*)
Но! Семантика определяется не формой, а контекстом и метаинформацией.
Примеры: Функция (высокий уровень)
(фн обработать (данные)
(фильтр данные (> 10) (* 2))
)
Низкоуровневая операция
(фн @система копировать (ист: сис.Адрес, цель: сис.Адрес, размер: Целое)
(асм "rep movsb"))
(структ Пользователь
имя: Строка,
возраст: Целое,
роль: Выбор (Админ, Пользователь, Гость)
)
Интерфейсный тип
(тип ИФайл
(Читать (имя:Строка)(Рез.Байты) @док "Читает файл с указанным именем")
(Писать (имя: Строка, права:ос.Права)(Опт.Ош) @док "Записывает файл с указанным именем и правами")
)
Все конструкции — одного синтаксического вида, но семантика управляется тегом в начале:
фн (функция),структ (структура),система (низкоуровневый),тип.Мы не устраняем сложность, но последовательно её раскрываем.
Доступны только:
Нет доступа к:
(макро).
(фн привет (имя)
(печать "Привет, " имя "!"))
Простота Лиспа, но в безопасной оболочке диалектического языка.
Открываются:
(макрос ...)
(структ Точка (
x: Целое,
y: Целое, ))
(макрос когда (условие тело)
(выраж если условие (выполнить тело))
)
Язык начинает развиваться, но в рамках контролируемой системы.
Разрешён:
(указ ...)
(фн @система копировать-память (цель источник длина)
(асм
"mov rcx, {длина}"
"rep movsb"))
Но! Такой код не компилируется без:
(спис 1 2 3)
(структ Пользователь)
(выраж ...)
(тип Проверятор)
(Список Цел 1 2 3)
(перем посетитель (= Пользователь @имя: "Анна",
@возраст: 28,
@роль: Админ))
(знач ...) или (= ...)
(<имя_функции>)
(тип_провер посетитель как ИФайл)
Это — диалектическая гибкость: форма одна, но смысл возникает в практике применения, а не в синтаксической избыточности.
Макросы — не анархия, а организованное развитие.
(макрос конкур (тело...)
(поток (тело))
@док "Запускает конкурентно тело выражения")
(конкур
(загрузить-данные)
(обновить-интерфейс))
Но:
если, функция и т.п.).Это — революционное преобразование старой формы со свободным содержанием, в новую форму с дисциплиной смысла.
Переход на низкий уровень — не синтаксическое волшебство, а сознательный акт:
(фн @система сложить-указатели (a:сис.Указ, b:сис.Указ)
@обоснование: "оптимизация критического участка"
@требует-ревью
@уровень-доступа: 3
(сложить (сис.Извлечь a) (сис.Извлечь b))
)
Что даёт такая форма:
Lisp Очень низкаяRust Высокаяprolet Очень низкаяLisp Низкая (всё — список)Rust Высокая (много форм)prolet Высокая (контекст + тег)Lisp Деструктивно высокаяRust Ограниченнаяprolet Высокая (макросы + уровни)Lisp НетRust Высокаяprolet (по уровням, от минимальной до высокой)Lisp доступно индивидуальноRust Через RFCprolet Через макросы + одобрение сверхуLisp Высокая для экспертов, низкая для новичковRust Низкая (много правил)prolet Высокая (одна форма; много фиксированных смыслов в конкретном контексте)Lisp НизкаяRust Недостаточнаяprolet Высокая (постепенное раскрытие)Приведённый синтез формы из трёх языков, соответствует духу диалектического материализма:
Это — не упрощение, а углубление диалектики: