Миссия
«Глаголом жги сердца людей!»
— А. С. Пушкин, «Пророк»
Глагол — кириллический язык программирования на основе русского для JVM. Не «Python русскими словами», а попытка задействовать само богатство русского языка как выразительное средство: падеж как роль, вид глагола как модель вычисления, согласование как защита от ошибок.
Верхний уровень — сделать жизнь лучше через развитие русской культуры и того богатства, что хранится внутри языка. Конкретнее:
- Дать программистам возможности, которых нет в языках на основе английского.
- Обратный насос против англицизмов: русские корни там, где сейчас «закоммитить», «смёржить», «зафорсить».
- Опереться на богатство современной русской грамматики — падеж, вид, согласование дают прочный фундамент сами по себе. А редкие и утраченные формы (дуалис, звательный, супин) — это поле для будущих экспериментов, а не обещание: возможно, им найдётся работа в коде.
- Дружелюбие к детям: начинающий стиль — словами, без сигилов; впереди — исполнители (Робот, Черепашка в духе КуМира) и визуальная блочная среда, где форма подсказывает тип.
Во всех ипостасях
Замысел — стать стандартом русского программирования всюду, куда дотянутся единый разбор и вынесенный рантайм: JVM (уже — интерпретатор и байт-код), байт-код с прицелом на Байкал и Эльбрус, микроконтроллеры (Arduino, ESP32), мир JavaScript (браузер и Node) и огромный мир Python. Один язык — много целей.
Язык, опережающий время
Программирование всегда поднимало уровень абстракции: машинный код, ассемблер, C, Java, Python. В эпоху ИИ-агентов верхний слой смещается к естественному языку — сегодняшние языки становятся компилируемой деталью, как ассемблер сегодня.
Глагол занимает этот верхний слой: человекочитаемая поверхность сверху, строгость компилятора снизу. Русский текст, который машина проверяет как код.
Глагол — исполняемая спецификация: контракт требует/гарантирует,
статические типы, именованные ограничения (тип возраст: целое от 0 до 120). Одно и то же
читает человек и проверяет машина.
Типы размечены на границах глаголов, тело выводится само — правило простое и предсказуемое. И те же типы доходят до микроконтроллера эффективным машинным кодом: читаемость сверху не отменяет производительности и надёжности внизу.
Глагол — первый в новой категории. За русским придут хинди, арабский, китайский. Ближе к людям, но сохраняет полноту, строгость и оптимизации при преобразовании в машинный код.
О значении русского языка в России и мире
Русский язык — один из крупнейших языков планеты. На нём говорят более четверти миллиарда человек, и по распространённости он уверенно входит в первую десятку языков мира. Это самый большой из славянских языков и самый распространённый язык всей Евразии — от Балтики до Тихого океана.
Русский входит в число шести официальных языков Организации Объединённых Наций — наряду с английским, французским, китайским, арабским и испанским. Он служит рабочим языком многих международных объединений и языком межнационального общения на огромном пространстве: на нём говорят, учатся и работают в России, Белоруссии, Казахстане, Киргизии и по всему бывшему Советскому Союзу, а русскоговорящие общины живут на всех континентах.
За широтой распространения стоит внутреннее богатство. Русская грамматика сложна и выразительна: шесть падежей, три рода, вид глагола, строгое согласование слов между собой. Эта система — не украшение и не архаика, а живой инструмент смысла: одна-единственная словоформа способна нести то, для чего другим языкам нужны служебные слова и жёсткий порядок. Именно это богатство «Глагол» и берёт в дело — не переводя английские ключевые слова, а опираясь на то, что в русском языке уже есть.
Корни этой грамматики уходят в глубокую древность — к праиндоевропейскому наследию, общему для доброй половины языков Европы и Азии. Русский — один из немногих хранителей той древней падежной системы, которую большинство современных языков растеряли. За каждым словом здесь стоят тысячелетия развития и накопленная народом мудрость.
Делает ли родной язык человека умнее — вопрос, на который нет простого и честного ответа, и мы не станем на нём настаивать. Но то, что родное слово способно возвышать дух, знает всякий, кому дорога своя речь. И в одном мы уверены твёрдо: этот проект призван утвердить позиции русского языка — и внутри России, и далеко за её пределами; показать, что на русском можно не только говорить и писать, но и создавать современные инженерные инструменты. В этом и состоит наша миссия.
Почему «Глагол»
Исходно глаголати = говорить, а глагол = слово, речь, глас. Имя держит оба смысла: сакральный (Слово, изречение — Пушкин, Фет, ап. Павел, Евангелие) и технический (глагол = часть речи действия, а язык глаголо-центричен: вызов есть действие, вид глагола несёт модель вычисления).
«Но лишь божественный глагол / До слуха чуткого коснётся…»
— А. С. Пушкин, «Поэт»
Русский как ресурс
Не переводить ключевые слова, а эксплуатировать морфологию. Роль, завершённость, класс помечаются на самих словах, а не позицией:
- Падеж → семантическая роль аргумента, свободный порядок слов;
- Вид глагола → ленивость/строгость (Haskell);
- Склонение → класс типов (Haskell);
- Согласование (избыточность) → отказоустойчивый разбор (упреждающая коррекция);
- Утраченные формы → родные пустые слоты: дуалис→пара, звательный→диспетчеризация, супин→намерение.
Один конфликт решён по слоям: Haskell владеет семантикой, русский — поверхностью.
Родной для ИИ. Локальная маркировка роли снижает дальние зависимости — модели легче порождать; избыточность делает ошибки восстановимыми (FEC); супин даёт формальный слой намерения. Меньше переспросов и токенов — маленький честный вклад в бережность к среде.
И — публикуемый навык (skill) для ИИ-агентов: «учебник», по которому агент пишет корректный «Глагол» (как грамматика для редактора, только для модели). Язык, который учит ИИ писать на нём же.
Утилитарная польза
Помимо культурного слоя — конкретные, измеримые задачи:
- Ускорить review кода, порождённого ИИ. В связке «человек + агент» человек проверяет сгенерированный код. Чем легче код читается — тем быстрее у читающего складывается понимание, тем быстрее идёт review. Естественно-языковая поверхность работает на это прямо.
- Сократить разрыв между спецификацией и кодом. Чем ближе программа к человекочитаемому описанию требований, тем меньше «перевода» между «что нужно» и «как сделано» — и тем ниже порог входа в программирование.
Куда растём
Язык мыслится полным стеком инструментов, а не только синтаксисом. Три опоры — и все они должны быть доступны «даже самым маленьким» (стиль «начинающий»), а не только эксперту.
Родное тестирование
Модульные тесты — часть языка, а не библиотека. Ориентир — выразительность 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, десять лет спустя.