Планы

Куда движется «Глагол». Ниже — ближайшие большие возможности; русские имена для них подобраны намеренно (язык культурный, англицизмам в поверхности не место).

Ближайшие большие возможности

Статические типы (статическая типизация)первый шаг готов

Уже работает. Типы необязательны: не написал — язык выведет сам (что 5 — число, а "привет" — строка). Хочешь подсказать явно — припиши тип словом типа (число типа Число), а составные типы пишутся по-русски, родительным падежом: список чисел, отображение из имени в владельца. Строгость проверки настраивается: от мягких предупреждений для новичка (программа всё равно запускается) до жёсткой проверки, где несоответствие типов — ошибка и запуск останавливается.

Дальше. Сквозной вывод типов по всей программе и настоящая оптимизация: значения перестают «упаковываться» в объекты (unboxed), арифметика и циклы идут напрямую — программа работает быстрее и ест меньше памяти. Это особенно важно для «железа», где без точных типов не собрать компактный и быстрый код.

Разные платформы (один код — много целей)в планах

Один и тот же код на «Глаголе» — под разные «железки» и среды. Сейчас цель одна: байт-код JVM (уже работает, два бэкенда — истолкователь и компилятор дают одинаковый результат). Впереди:

Обобщённые типы (обобщения)в планах

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

Мост в браузер (JS / WebAssembly)в планах

Сейчас «Глагол» живёт на сервере, а фронтенд страниц — на JavaScript. Впереди — «Глагол» и в браузере: код компилируется в JavaScript или WebAssembly и работает прямо на странице, без сервера. Цель — писать и заднюю, и переднюю часть приложения на одном языке, по-русски.

Работа с текстом (строки и образцы)в планах

Уже есть основа — длина строки, доступ к символам, разбиение на слова: частотный анализ текста пишется одной русской фразой (мода слов текста — самое частое слово). Впереди — полный набор: найти и заменить кусок текста, подстрока, смена регистра, разрез по любому разделителю, сравнение строк по алфавиту (сортировка слов).

И отдельно — поиск по образцу. В других языках образцы записывают загадочными сокращениями (\d{3}-\d{4} означает «три цифры, дефис, четыре цифры»), в которые даже опытные программисты каждый раз лезут в справочник. Задумка «Глагола» — свой понятный русский язык образцов: цифра трижды, потом дефис, потом цифра четырежды — ясно и начинающему.

Точные числа (дроби и большие числа)в планах

Сейчас числа целые, а деление отбрасывает остаток — среднее из 33 на 6 даёт 5, а не 5,5. Впереди — точная арифметика: настоящие дроби и рациональные числа (5,5 — это ровно 11/2, без потерь), большие числа без переполнения, и работа с бесконечными числовыми рядами «до нужной точности».

Алгебраические структуры (комплексные, кватернионы, поля)частично готово

Уже сейчас можно объявить свою математическую структуру — кольцо, поле или тело — и получить операторы + − × ÷ над её значениями: так в языке живут комплексные числа и конечные поля GF(p) как обычные библиотеки, а не как правка ядра. Впереди — расширенная поддержка: объявление собственных классов структур, кватернионы и матрицы, группы и алгебры над полем, а также запись комплексного числа привычным 3+4i.

Что уже есть

Записи и алгебраические типы, коллекции (списки, словари, множества, пары) и потоковый конвейер в одну русскую фразу (сумма квадратов чётных ряда, частотный анализ текста), базовые операции над строками, статические типы (необязательные, с настройкой строгости), модульность (свои подсистемы с границами, направленным экспортом и слоями), контрактное программирование (требует/гарантирует), функции высшего порядка (глагол — это значение, передаётся творительным падежом: отобрази список удвоением), обработка ошибок значением (может быть, итог: успех/сбой, а также брось и попытка на границе с Java), свои модульные тесты, компилятор в байт-код JVM, связка с Java/Spring: сущности, репозитории, связи, CRUD на настоящей БД (живые примеры — Питомцы и Демо-приложение), и родная русская поверхность без англицизмов (сущность, ключ, хранилище, задай владельцу имя).

Дальше по-крупному

Планы — живые: порядок и формулировки уточняются по ходу.