Что это?
Это компилятор для языка “Рапира” с таргетом компиляции в язык Си.
Пример кода с оригинальным синтаксисом:
функ ПРОСТОЕ (N)
если N < 2 то
возврат нет
все
для M от 2 до корень(N) + 0.5 цикл
если N /% M = 0 то
возврат нет
все
кц
возврат да
конец
вывод: ПРОСТОЕ(2003)
\ => выводит да
вывод: ПРОСТОЕ(2004)
\ => выводит нет
Проект разделён на несколько стадий с конечной целью иметь модернизированную версию языка
Этапы проекта
- Имплементация языка, ссылаясь на оригинальную спецификацию (Препринт №767) (см. документ) с единственным изменением в виде бэкенда - компиляция в язык Си (см. секцию по модернизации)
- Модернизация языка
Модернизация языка
Вторая фаза проекта заключается в том, чтобы изменить язык в соответствии с современными запросами пользователей ЯП, то есть создать улучшенную версию исходного языка.
В качестве области применения модернизированной версии языка взяты области: автоматизация, скриптинг и быстрое прототипирование. В этих областях главные характеристики языка имеют большой потенциал: динамическая типизация, простота базиса и синтаксиса языка.
Самые важные вопросы, которые стоит решить: 1. Таргет генерации кода - этот вопрос ставиться и на первой фазе и принято решение на данном этапе генерировать код на языке Си, это позволит:
- Упростить разработку
- Иметь легко распростроняемый генерируемый код
- Заиметь потенциал к хорошей производительности языка, избежав преграды интерпретации
- Открыть дверь к прямому взаимодействию с Си кодом, позволив использовать большое количество готовых библиотек
- Отсутствие ООП/структур/именованых кортежей - в языке присутсвуют нетипизированные контейнеры - кортежи, которые могут выступать как структуры, но так как именованых элементов нет - стоит задуматься о добавление такого конструкта, а также об организации взаимодействия таких объектов, будь это ООП или что-то иное (наследование и т.п.)
- Модульная система- в препринте мало сказано о модульной системе, стоит задуматься об организации оной
- Система сборки и организации зависимостей - встроенная система сборки и работы с зависимосятми позволит избежать участь соревнования различных таковых систем сделанных пользователями, можно посмотреть на истории этого всего в Python и проблемы миграции с одной системы на другую
- ПИВИС/REPL - добавить возможность работы с языком в стиле: прочитать - исполнить - вычислить - и-снова, в стиле интерпретируемых языков
Использование ИИ
В разработке активно использовался Claude Code Opus 4.6. К примеру многие тесты на языке “Рапира” были сгенерированны ИИ на основе препринта, а также лексер и парсер по большей части.