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