Как было отмечено ранее, синтаксис предлагаемый с опорой на Си / Rust не поддерживает (сопротивляется) развитию семантических форм языка. Слишком много форм представления алгоритмов и структур.
Более узкие семантические формы в духе S-выражений (ближе по сути к Лисп), позволяют создавать на единой базе S-выражений предсказуемые по форме выражения, но c широкой по содержанию семантикой.
Rust , как мы уже отметили, — это победа формы над мыслью в угоду безопасности.
Lisp — победа мысли над формой, но в ущерб практике и педагогике.
Pascal -- при хороших педагогических свойствах не обеспечивает требование развития языка.
Нам же нужен синтез:
Lisp в синтаксисе,prolet как диалектический минимализмОсновной принцип:
Это — не возврат к Lisp , а его диалектическое преодоление:
но встраиваем их в рамки объективной реальности — памяти, времени, безопасности, готовности программиста.
Вместо множества форм ( struct , enum , fn , unsafe , impl , where и т.д.) — одна базовая конструкция:
(операция аргументы)
Но! Семантика определяется не формой, а контекстом и метаинформацией.
Примеры: Функция (высокий уровень)
(фн Обработать (данные @фикс Байты)
(Фильтровать данные (> 10) (* 2))
)
Низкоуровневая операция
(фн Копировать @система(ист @фикс Cис.Адрес цель @фикс Cис.Адрес размер @конст Дом)
(Асм.ПовторОтДо ист цель))
(структ Пользователь
@имя ЧеловекИмя
@возраст ЧеловекВозраст
@роль Роль
)
Интерфейсный тип
(тип ИФайл
(Читать (имя @фикс ФайлИмя) -> @фикс Рез.Байты
@_док "Читает файл с указанным именем")
(Писать (имя @фикс ФайлИмя права @фикс Ос.Права) -> @фикс Опт.Ош
@_док "Записывает файл с указанным именем и правами")
)
Все конструкции — одного синтаксического вида, но семантика управляется тегом в начале:
фн (функция),структ (структура),система (низкоуровневый),тип.Мы не устраняем сложность, но последовательно её раскрываем.
Доступны только:
Нет доступа к:
(макро).
(фн Приветствовать (имя @фикс ГостьИмя)
(Печатать "Привет, " имя "!"))
Простота Лиспа, но в безопасной оболочке диалектического языка.
Открываются:
(интерфейс ....)
(структ Точка
@x ПозX
@y ПоpY )
(макрос когда (условие тело)
(если условие
тогда (Выполнить тело)
иначе (Выполнить тело))
)
Язык начинает развиваться, но в рамках контролируемой системы.
Разрешён:
(адр ...)
(фн @система КопироватьПамять (
цель @фикс Сис.Адр
источник @мут Сис.Адр
длина @фикс Сис.Колич)
(Асм.Сохр рег3 длина)
(Асм.ПовторОтДо рег0 рег2))
Но! Такой код не компилируется без:
(спис 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 Высокая (постепенное раскрытие)Приведённый синтез формы из трёх языков, соответствует духу диалектического материализма:
Это — не упрощение, а углубление диалектики: