Миссия

«Глаголом жги сердца людей!»
— А. С. Пушкин, «Пророк»

Глагол — кириллический язык программирования на основе русского для JVM. Не «Python русскими словами», а попытка задействовать само богатство русского языка как выразительное средство: падеж как роль, вид глагола как модель вычисления, согласование как защита от ошибок.

Глаголь!напиши свою программу

Верхний уровень — сделать жизнь лучше через развитие русской культуры и того богатства, что хранится внутри языка. Конкретнее:

Во всех ипостасях

Замысел — стать стандартом русского программирования всюду, куда дотянутся единый разбор и вынесенный рантайм: JVM (уже — интерпретатор и байт-код), байт-код с прицелом на Байкал и Эльбрус, микроконтроллеры (Arduino, ESP32), мир JavaScript (браузер и Node) и огромный мир Python. Один язык — много целей.

Язык, опережающий время

Программирование всегда поднимало уровень абстракции: машинный код, ассемблер, C, Java, Python. В эпоху ИИ-агентов верхний слой смещается к естественному языку — сегодняшние языки становятся компилируемой деталью, как ассемблер сегодня.

Глагол занимает этот верхний слой: человекочитаемая поверхность сверху, строгость компилятора снизу. Русский текст, который машина проверяет как код.

Глагол — исполняемая спецификация: контракт требует/гарантирует, статические типы, именованные ограничения (тип возраст: целое от 0 до 120). Одно и то же читает человек и проверяет машина.

Типы размечены на границах глаголов, тело выводится само — правило простое и предсказуемое. И те же типы доходят до микроконтроллера эффективным машинным кодом: читаемость сверху не отменяет производительности и надёжности внизу.

Глагол — первый в новой категории. За русским придут хинди, арабский, китайский. Ближе к людям, но сохраняет полноту, строгость и оптимизации при преобразовании в машинный код.

О значении русского языка в России и мире

Русский язык — один из крупнейших языков планеты. На нём говорят более четверти миллиарда человек, и по распространённости он уверенно входит в первую десятку языков мира. Это самый большой из славянских языков и самый распространённый язык всей Евразии — от Балтики до Тихого океана.

Русский входит в число шести официальных языков Организации Объединённых Наций — наряду с английским, французским, китайским, арабским и испанским. Он служит рабочим языком многих международных объединений и языком межнационального общения на огромном пространстве: на нём говорят, учатся и работают в России, Белоруссии, Казахстане, Киргизии и по всему бывшему Советскому Союзу, а русскоговорящие общины живут на всех континентах.

За широтой распространения стоит внутреннее богатство. Русская грамматика сложна и выразительна: шесть падежей, три рода, вид глагола, строгое согласование слов между собой. Эта система — не украшение и не архаика, а живой инструмент смысла: одна-единственная словоформа способна нести то, для чего другим языкам нужны служебные слова и жёсткий порядок. Именно это богатство «Глагол» и берёт в дело — не переводя английские ключевые слова, а опираясь на то, что в русском языке уже есть.

Корни этой грамматики уходят в глубокую древность — к праиндоевропейскому наследию, общему для доброй половины языков Европы и Азии. Русский — один из немногих хранителей той древней падежной системы, которую большинство современных языков растеряли. За каждым словом здесь стоят тысячелетия развития и накопленная народом мудрость.

Делает ли родной язык человека умнее — вопрос, на который нет простого и честного ответа, и мы не станем на нём настаивать. Но то, что родное слово способно возвышать дух, знает всякий, кому дорога своя речь. И в одном мы уверены твёрдо: этот проект призван утвердить позиции русского языка — и внутри России, и далеко за её пределами; показать, что на русском можно не только говорить и писать, но и создавать современные инженерные инструменты. В этом и состоит наша миссия.

Почему «Глагол»

Исходно глаголати = говорить, а глагол = слово, речь, глас. Имя держит оба смысла: сакральный (Слово, изречение — Пушкин, Фет, ап. Павел, Евангелие) и технический (глагол = часть речи действия, а язык глаголо-центричен: вызов есть действие, вид глагола несёт модель вычисления).

«Но лишь божественный глагол / До слуха чуткого коснётся…»
— А. С. Пушкин, «Поэт»

Русский как ресурс

Не переводить ключевые слова, а эксплуатировать морфологию. Роль, завершённость, класс помечаются на самих словах, а не позицией:

Один конфликт решён по слоям: Haskell владеет семантикой, русский — поверхностью.

Родной для ИИ. Локальная маркировка роли снижает дальние зависимости — модели легче порождать; избыточность делает ошибки восстановимыми (FEC); супин даёт формальный слой намерения. Меньше переспросов и токенов — маленький честный вклад в бережность к среде.

И — публикуемый навык (skill) для ИИ-агентов: «учебник», по которому агент пишет корректный «Глагол» (как грамматика для редактора, только для модели). Язык, который учит ИИ писать на нём же.

Утилитарная польза

Помимо культурного слоя — конкретные, измеримые задачи:

Куда растём

Язык мыслится полным стеком инструментов, а не только синтаксисом. Три опоры — и все они должны быть доступны «даже самым маленьким» (стиль «начинающий»), а не только эксперту.

Родное тестирование

Модульные тесты — часть языка, а не библиотека. Ориентир — выразительность Spock (JVM): наглядные блоки «дано — когда — тогда», таблицы данных. Морфологический хук русского: повелительное «проверь: удвоить 21 должно равняться 42» и сослагательное «бы». На площадке каждый пример показывает тест и результаты рядом — TDD видно с первого урока. Прямая польза миссии: тест на одном языке с кодом ускоряет review ИИ-кода.

Тестируемость у нас низкоуровневая — встроена в язык, а не прикручена библиотеками. Уже в проде: инлайн-проверки, таблицы данных (как Spock where:), договоры требует/гарантирует, покрытие глаголов и тестовые двойники (дублёры) (заглушка=Mock и шпион=Spy, стаб пусть … →, verify проверь: … получил …). В Java для этого нужны библиотеки (Mockito/Spock); у нас — родная форма языка. Честно: это «встроенный тест-фреймворк + тестовые двойники», без overclaim «лучше всех».

Наблюдаемость (Observability)

Возможность объяснить поведение системы по её выводам — на уровне языка, вплоть до drill-down-профилирования. Понятийная основа — «Monitoring and Observability» Синди Сридхаран (и «четыре золотых сигнала» из Google SRE). Базовые замеры («замерь», счётчики вызовов) — для новичков; полный профайлер — позже. Честно: цифры интерпретатора по дереву непоказательны для будущего байт-кода — это оговаривается.

Асимптотическая сложность

Хотим показывать сложность алгоритма (Big-O) — и по времени, и по памяти (последнее особенно важно из-за цены неизменяемости). Честные границы: в общем виде вывести сложность произвольной программы нельзя (упирается в проблему остановки). Но достижимо: (1) измеренная сложность — растим N, считаем операции и аллокации (это даёт наблюдаемость), оцениваем рост по наклону; (2) объявил и проверил — программист пишет ожидаемую O(·), рантайм сверяет с замером (как тест); (3) статический вывод для чистого функционального подмножества — рекурсия сводится к рекуррентам (теорема о рекуррентах), и здесь чистота «Глагола» — преимущество (ср. RAML). Первые две — близко, третья — исследование.

Полный стек и сборка

Дальняя цель — заменить не только Java-бэкенд, но и фронтенд-JS (компиляция в JS/WASM): один язык на весь стек. Это north-star поверх пути «байт-код → железо», не близкое. Отдельно — своя система сборки (или надстройка над Gradle), чтобы тесты и замеры были частью инструментария из коробки.

Стыковка с Java-миром

«Глагол» живёт на JVM — значит, может входить в существующие Java / Spring / Jmix-проекты постепенно, а не «переписать всё с нуля». Это возможно и достижимо красиво — но красота заработанная: русское лицо чужим библиотекам даёт тонкий слой-фасад, а морфология уже держит нужные слоты — геттер → родительный («имя пользователя»), эффект/мутация → совершенный вид («сохрани…»), аргументы → падеж. Честные границы: бесшовная стыковка — это эра байт-кода, а сам приём — не наше изобретение: так уже сделали Kotlin, Scala, Clojure, Groovy. Мы не первопроходцы механизма — мы применяем известное с новой, морфологической поверхностью.

Путь

Интерпретатор по дереву (Kotlin/JVM) → байт-код JVM → российские процессоры (Байкал на ARM-JVM, Эльбрус через порт OpenJDK). Русский язык, живущий на русском железе. Первый рубеж выразительности — классические алгоритмы сортировки и поиска. Ближайшая цель — несколько задач LeetCode с тестами и минимальной наблюдаемостью.

Работаем, Брат

«Работайте, братья!»
— Магомед Нурбагандов (9 января 1985 — 10 июля 2016), Герой России (посмертно)

Лейтенанту полиции приказали призвать товарищей отступить — он ответил «Работайте, братья!» и был убит 10 июля 2016 года. Служим отечеству, делая то, что умеем, и отвечаем: «Работаем, Брат!» — 10 июля 2026, десять лет спустя.