README.md

Глагол

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

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

Проект в стадии проектирования. Это — учредительный манифест и дизайн-документ. Кода интерпретатора пока нет; см. дорожную карту.


Миссия

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

  • Дать программистам новые возможности, которых нет в языках на основе английского.
  • Работать обратным насосом против англицизмов в речи программистов: дать русские корни там, где сейчас говорят «закоммитить», «смёржить», «зафорсить».
  • Оживить утраченные формы русской грамматики — дать им настоящую работу в коде.

Честные границы миссии

Мы держимся принципа: миссия сильнее, когда каждый её кирпич — правда.

  • Мы не утверждаем, что язык программирования «развернёт деградацию» живого русского языка — язык меняют миллионы носителей и фонетика, а не предметный DSL. Это было бы overclaim.
  • Достижимая версия той же мечты: создать новый обогащённый регистр, где утраченные формы делают настоящую работу, и — через использование ИИ — заново попадают в оборот.
  • Мы не утверждаем, что русский «делает умнее» (сильная гипотеза Сепира–Уорфа наукой не подтверждена). Мы утверждаем скромное и защитимое: язык, который требует явно помечать роль и завершённость, приучает к аналитической ясности.

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

Грамматическое значение слова «глагол» — verb — позднее и суженное. Исходно глаголати = говорить, а глагол = слово, речь, изречение, глас. Поэтому имя держит оба смысла сразу:

  • сакральный, древний слой — Слово, изречение, глас Божий;
  • технический слой — глагол как часть речи действия (а язык глаголо-центричен: вызов есть действие, вид глагола несёт модель вычисления).

«Глагол» в высоком регистре русской словесности:

  • Пушкин, «Пророк»: «Глаголом жги сердца людей».
  • Пушкин, «Поэт»: «Но лишь божественный глагол / До слуха чуткого коснётся, / Душа поэта встрепенется, / Как пробудившийся орёл».
  • Фет: «Твой светлый ангел шепчет мне / Неизреченные глаголы».
  • Ап. Павел (2 Кор 12:4): слышал в раю «неизреченные глаголы» — ту самую формулу, что поднимает Фет.
  • Евангелие (Мф 4:4): «…всяким глаголом, исходящим из уст Божиих».

Логос и Слово остаются понятиями-спутниками, но не именем. Логос — это не только «слово», но и разум, мера, соотношение, порядок (корень «логики» и всякой «-логии»); он на стороне разума, а не красноречия — и потому уместен для языка как формализованного разума. «Слово» же — существительное покоя, изречение в состоянии покоя. А язык программирования — про действие. «Глагол» тайно соединяет обе грани: сакральное Слово и действие-операцию. Богатейшее из трёх — оттого и выбрано.


Идея: русский как ресурс

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

Механизм русского Роль в языке Родство
Падеж семантическая роль аргумента → свободный порядок слов
Вид глагола ленивость / строгость, процесс vs результат Haskell
Склонение класс типов (typeclass) Haskell
Согласование (избыточность) отказоустойчивый парсинг (forward error correction) теория информации
Утраченные формы пустые родные слоты: дуалис→пара, звательный→диспетчеризация, супин→намерение
Из Haskell АДТ, паттерн-матчинг, вывод типов, чистота, неизменяемость семантический этаж

Один конфликт, решённый по слоям. Эстетика Haskell — сжатие (point-free); русская морфология — избыточность. Это противоположные полюса, и мы их не смешиваем: Haskell владеет семантикой (типы, чистота, АДТ), русский владеет поверхностью (падеж-роль, избыточность, свободный порядок).


Примеры

Синтаксис — эскиз, не финал. Он показывает механику, а не окончательную форму.

1. Падеж = роль, порядок свободен

зашифруй строку ключом
зашифруй ключом строку        # ← то же самое: роль лежит на слове

строк‑у (винительный) = что шифруем; ключ‑ом (творительный) = чем. Переставляй как хочешь. Сравни: encrypt(string, key) — роль в позиции, перепутал — сломал.

2. Вид глагола = ленивость vs строгость

поток     = порождать простые        # несов. вид → ленивый бесконечный поток
первые    = взять 10 из потока        # «из потока» (род.) = источник
результат = собрать первые            # сов. вид → форсируем в готовый список

3. Воскрешённые формы делают работу

Точка = две координаты                # двойственное число → тип-пара
принтере, напечатай строку!           # звательный падеж → обращение/диспетчеризация
намерение: сортировать                # супин → декларация цели (слой для ИИ)

4. Избыточность чинит ошибку (FEC вживую)

зашифруй длинную строкой ключом
#          ^вин.    ^твор.  — рассогласование падежа
# ⚠ «строкой» → «строку» (винительный, объект). Понято, продолжаю.

Одно окончание сбоит — соседнее его чинит. Ни один англоязычный язык так не умеет: избыточность в них вырезана.


Язык, родной для ИИ

«Родной для ИИ» (англ. AI-Native) здесь — не лозунг, а три конкретных, проверяемых свойства:

  1. Локальная маркировка роли снижает дальние зависимости. Падеж кладёт роль аргумента на само слово, а не в удалённую позицию. Языковой модели (LLM) так легче: роль видна на месте, меньше связей на расстоянии. Флективный язык может быть проще для порождения текста, а не сложнее.
  2. Избыточность делает ошибки модели восстановимыми. Тот же принцип упреждающей коррекции (FEC): модель ошиблась в окончании — разбор чинит его по согласованию. Промахи ИИ становятся исправимыми самим устройством языка.
  3. Супин — формальный слой намерения. Агент объявляет цель (намерение: сортировать), а не только шаги. Это настоящая опора для ИИ-агентов, а не украшение.

Обратная связь с миссией: если на «Глаголе» пишут и его читают ИИ в масштабе, воскрешённые формы заново попадают в обучающие тексты и на глаза людям — язык обогащается не только семантически, но и морфологически.

Маленькая добродетель. Локальная роль и восстановимость ошибок — это меньше переспросов и лишних токенов, когда код порождает ИИ. А каждый токен — это энергия и вода центров обработки данных. На один диалог эффект крошечный, но системно не нулевой: небольшой честный вклад в бережность к среде — созвучный верхней миссии «сделать жизнь на Земле лучше».

Фундамент

Дух проекта — быстрый старт. Отсюда решения:

  • Рантайм: интерпретатор по дереву (tree-walking) — секундный цикл «правка→запуск».
  • Язык реализации: Kotlin/JVM — родные sealed/when для AST, вся экосистема JVM, дом для Java-разработчика.
  • Путь роста: бэкенд в байт-код JVM — сохраняет исходную цель «на JVM».

Дорожная карта

  1. Проектированиемы здесь: манифест, дизайн-документ, эскизы синтаксиса.
  2. Интерпретатор по дереву на Kotlin: лексер → парсер → AST → вычислитель. Морфология: правила склонения основы (генерация/распознавание форм) — свой небольшой движок, полноценный морфоанализатор не требуется.
  3. Ядро языка: падеж-роль, вид-как-вычисление, АДТ + паттерн-матчинг, вывод типов.
  4. Отказоустойчивый парсер на согласовании (FEC).
  5. Бэкенд в байт-код JVM.
  6. Российские процессоры — Байкал и Эльбрус; см. отдельный раздел ниже.

Российские процессоры: Байкал и Эльбрус

Отдельная цель дорожной карты — нативная поддержка российских процессоров. Это и практично, и созвучно миссии: русский язык, живущий на русском железе.

Выбор JVM оказывается кратчайшим путём к обеим архитектурам:

  • Байкал — по сути уже решён. Это ARM (ARMv8) и MIPS — широко распространённые архитектуры, под которые есть и обычный OpenJDK, и LLVM/GCC. JVM на Байкале работает из коробки.
  • Эльбрус (e2k) — VLIW-архитектура МЦСТ, непохожая на x86/ARM: свой компилятор lcc, двоичный транслятор x86→e2k. Магистральный LLVM в e2k не умеет — но существует порт OpenJDK, поэтому «Глагол» пойдёт на Эльбрус почти даром, как только начнёт порождать байт-код JVM. Нативная компиляция прямо в e2k — дальняя исследовательская вершина, требующая проприетарного набора инструментов МЦСТ.

Так дорожная карта смыкается в одну линию:

интерпретатор → байт-код JVM → Байкал (ARM64-JVM) и Эльбрус (OpenJDK) → нативный e2k

Последняя ступень — вместе со специалистами по низкоуровневому программированию под Эльбрус.

Статус и участие

Стадия — проектирование. Кода интерпретатора ещё нет; обсуждается дизайн. Полный дизайн-документ: docs/superpowers/specs/2026-07-08-глагол-design.md.

Идеи, критика синтаксиса, примеры «как бы это выглядело» — приветствуются в Issues.

Лицензия

Apache License 2.0 — разрешительная лицензия с явным патентным грантом. См. также NOTICE.

Описание
Конвейеры
0 успешных
0 с ошибкой
Разработчики