Russian - русский язык для Raku
English summary: This is a Russian language module for Raku programming, providing over 200 Russian function names that cover all aspects of the Raku language. It includes both heritage computing terminology of the Soviet-era as well as modern terms, allowing Russian speakers to write Raku code in their native language. This first version has incomplete coverage, due to existing limitations, expect refinements and changes in future versions as we move towards complete functionality and true multilingual programming. Your input is welcome, see https://github.com/raku-multilingual/raku-russian
Модуль русского языка для программирования на Raku. Включает более 200 функций, охватывающих все аспекты языка Raku, с поддержкой как вычислительной терминологии советского времени, так и терминологии современных языков программирования. Версия разработки 0.0.1, ожидайте доработок и изменений в будущих версиях. Эта первая версия имеет неполное покрытие из-за существующих ограничений. Ожидайте доработок и изменений в будущих версиях . Ваш вклад приветствуется, см. https://github.com/raku-multilingual/raku-russian
Примеры использования
Функциональное программирование
use Russian;
my @числа = 1..10;
my @квадраты = отобразить({ $_ ** 2 }, @числа);
my @чётные = фильтровать({ $_ %% 2 }, @числа);
my $сумма = свернуть({ $^a + $^b }, @числа);
скажи "Квадраты: @квадраты[]";
скажи "Чётные: @чётные[]";
скажи "Сумма: $сумма";
use Russian;
# Создаём алгоритм вычисления факториала
my &факториал = алгоритм(-> $n {
$n <= 1 ?? 1 !! $n * факториал($n - 1)
});
# Используем счётчик
скажи "Счётчик: ", счетчик(), счетчик(), счетчик();
# Работа с ЭВМ
скажи "Архитектура ЭВМ: ", архитектура();
use Russian;
# Читаем и обрабатываем файл
my $файл = открой("данные.txt");
my @строки = [];
while читай($файл) -> $строка {
добавь(@строки, обрежь($строка));
}
закрой($файл);
# Анализируем данные
my @числа = отобразить({ число($_) }, @строки);
скажи "Минимум: ", минимум(@числа);
скажи "Максимум: ", максимум(@числа);
скажи "Среднее: ", среднее(@числа);
use Russian;
# Параллельная обработка
my @результаты = параллельно(1..100, -> $n {
корень($n) + логарифм($n)
});
# Использование обещаний
my $обещание1 = обещание({ спи(1); "готово!" });
my $обещание2 = обещание({ спи(2); "тоже готово!" });
скажи ждать($обещание1);
скажи ждать($обещание2);
Важное замечание
Из-за известной проблемы в Rakudo (GitHub issue #2404), полноценные грамматические сланги пока не работают. Данная реализация использует механизм EXPORT для предоставления русских функций, что работает надёжно и покрывает практически весь функционал Raku.
Полный список функций (200+)
Ввод/вывод
скажи
→ sayпечать
→ printвывод
→ putввод
, получи
→ getстроки
→ linesслова
→ wordsподсказка
, запрос
→ promptпредупреди
→ warnзаметь
→ note
Управление потоком
умри
, ошибка
→ dieвыход
→ exitпрерви
→ lastследующий
→ nextповтори
→ redoпродолжи
→ proceedуспех
→ succeedпровал
→ fail
Константы
истина
, ИСТИНА
, правда
, да
→ Trueложь
, ЛОЖЬ
, неправда
, нет
→ Falseпусто
, нуль
, ничто
→ Nilлюбой
→ Anyбесконечность
→ InfНеЧисло
→ NaNпи
→ πе
→ e (число Эйлера)тау
→ τ (2π)
Преобразование типов
строка
, текст
→ преобразование в строкучисло
→ преобразование в числоцелое
→ преобразование в целоедробное
→ преобразование в Numрациональное
→ преобразование в Ratкомплексное
→ создание комплексного числабулево
, логическое
→ преобразование в Bool
Математические функции
Основные операции
сумма
→ sumпроизведение
→ productминимум
→ minмаксимум
→ maxсреднее
→ average
Советская математическая терминология
корень
→ корень n-й степени (по умолчанию квадратный)квадрат
→ возведение в квадраткуб
→ возведение в кубстепень
→ возведение в степеньмодуль
→ абсолютное значениезнак
→ знак числа
Тригонометрия
синус
, косинус
, тангенс
, котангенс
, секанс
, косеканс
арксинус
, арккосинус
, арктангенс
, арктангенс2
гиперсинус
, гиперкосинус
, гипертангенс
Логарифмы и экспоненты
логарифм
→ логарифм по любому основаниюнатуральный_логарифм
→ lnдесятичный_логарифм
→ log₁₀экспонента
→ eˣ
Округление
округли
→ roundпотолок
→ ceilingпол
→ floorусечь
→ truncate
Операции с массивами/списками
длина
, количество
, размер
→ количество элементовдобавь
→ pushвставь
→ unshiftудали
→ popизвлеки
→ shiftсортируй
→ sortперемешай
→ shuffleпереверни
→ reverseуникальные
→ uniqueсплющи
→ flatсоедини
, объедини
→ joinраздели
, разбей
→ splitпервый
→ firstпоследний
, хвост
→ tailголова
→ headвозьми
→ pickвыбери
→ rollсрез
, кусок
→ slice
Операции с множествами
объединение
→ ∪ (union)пересечение
→ ∩ (intersection)разность
→ ∖ (difference)симм_разность
→ ⊖ (symmetric difference)
Операции со строками
обрежь
, обрежь_слева
, обрежь_справа
→ trimзаглавные
→ uppercaseстрочные
→ lowercaseзаглавная
→ title caseслово_заглавное
→ word caseсодержит
→ containsначинается
→ starts-withзаканчивается
→ ends-withзамени
→ substituteзамени_все
→ substitute allиндекс
, индекс_с_конца
→ index/rindexподстрока
→ substrсимволы
→ combкоды
→ ordsиз_кодов
→ chrs
Файловые операции (советские термины)
открой
→ openзакрой
→ closeчитай
→ read lineчитай_все
→ slurpзапиши
→ write lineпечатай
→ print to fileсмой
→ flushпозиция
→ tellперейди
→ seek
Операции с каталогами
папка
, каталог
→ dirсоздай_папку
→ mkdirудали_папку
→ rmdirпереименуй
→ renameкопируй
→ copyпереместить
→ moveудали_файл
→ unlink
Операции с путями
путь_существует
→ existsэто_файл
→ is fileэто_папка
→ is directoryэто_ссылка
→ is linkчитаемый
, записываемый
, исполняемый
→ r/w/xразмер_файла
→ file sizeвремя_изменения
→ modified timeабсолютный_путь
→ absolute pathотносительный_путь
→ relative pathбазовое_имя
→ basenameрасширение
→ extension
Проверка типов
это_число
, это_целое_число
, это_дробь
это_строка
, это_массив
, это_список
это_хеш
, это_словарь
, это_множество
это_пара
, это_диапазон
, это_код
это_блок
, это_регекс
, это_булево
определено
→ definedтип
→ WHATимя_типа
→ type name
Функциональное программирование
применить
→ applyотобразить
→ mapфильтровать
→ grep/filterсвернуть
→ reduce/foldсвертка_слева
→ fold leftвсе
→ allлюбой_из
→ anyни_один
→ noneодин
→ oneклассифицировать
→ classifyгруппировать
→ categorizeзастегнуть
→ zipрасстегнуть
→ unzip
Дата и время
сейчас
→ now (instant)дата_время
→ DateTime.nowдата
→ Date.todayвремя
→ current timeспи
→ sleep
Случайные числа
случайное
→ randomслучайное_целое
→ random integerперемешать
→ shuffleвыбрать_случайно
→ pick random
Регулярные выражения
найди
→ matchнайди_все
→ match allсоответствует
→ matchesвыдели
→ extract match
Обработка исключений
попробуй
→ tryпоймай
→ catch (с обработчиком)
Метапрограммирование
методы
→ methodsатрибуты
→ attributesроли
→ rolesродители
→ parentsможет
→ canделает
→ doesявляется
→ isa
Параллельные вычисления (советская терминология)
обещание
→ promiseждать
→ awaitканал
→ channelпоставщик
→ supplierпараллельно
→ parallel map (race)гиперпараллельно
→ hyper map
Системные операции
выполни
→ shellзапусти
→ runсреда
→ environment variableаргументы
→ @*ARGSпрограмма
→ program nameпроцесс
→ process IDпользователь
→ userдомашняя_папка
→ home directoryрабочая_папка
→ current directoryсменить_папку
→ change directory
Кодирование/декодирование
кодировать
→ encodeдекодировать
→ decodeбаза64_код
→ base64 encodeбаза64_декод
→ base64 decode
Советские компьютерные термины (наследие)
ЭВМ
→ компьютер (электронно-вычислительная машина)ОЗУ
→ оперативная памятьЦП
→ центральный процессоралгоритм
→ создать алгоритмподпрограмма
→ создать подпрограммупроцедура
→ создать процедурумассив_данных
→ создать массив данныхтаблица
→ создать таблицу (хеш)счетчик
→ счётчик с состояниемрегистр
→ регистр с состоянием
Операторы как функции
- Арифметические:
сложить
, вычесть
, умножить
, разделить
, остаток
, целочисленное_деление
, возвести
- Сравнение:
равно
, не_равно
, больше
, меньше
, больше_равно
, меньше_равно
, сравнить
- Логические:
и
, или
, не
, исключающее_или
- Битовые:
бит_и
, бит_или
, бит_не
, бит_искл_или
, сдвиг_влево
, сдвиг_вправо
Пользовательские операторы (НОВОЕ!)
Модуль теперь поддерживает русские операторы, которые можно использовать инфиксно:
Арифметические операторы
плюс
→ + (сложение)минус
→ - (вычитание)умножить
→ * (умножение)разделить
→ / (деление)остаток
→ % (остаток от деления)степень
→ ** (возведение в степень)
Операторы сравнения
равно
→ == (числовое равенство)не_равно
→ != (числовое неравенство)больше
→ > (больше)меньше
→ < (меньше)больше_равно
→ >= (больше или равно)меньше_равно
→ <= (меньше или равно)
Строковые операторы
строка_равна
→ eq (строковое равенство)строка_не_равна
→ ne (строковое неравенство)строка_больше
→ gt (строка больше)строка_меньше
→ lt (строка меньше)соедини
→ ~ (конкатенация строк)
Логические операторы
и
→ && (логическое И)или
→ || (логическое ИЛИ)искл_или
→ ^^ (исключающее ИЛИ)не
→ ! (логическое НЕ - префиксный)
Битовые операторы
бит_и
→ +& (побитовое И)бит_или
→ +| (побитовое ИЛИ)бит_искл_или
→ +^ (побитовое исключающее ИЛИ)бит_не
→ +^ (побитовое НЕ - префиксный)сдвиг_влево
→ +< (сдвиг влево)сдвиг_вправо
→ +> (сдвиг вправо)
Операторы диапазона
до
→ .. (диапазон включительно)до_искл
→ ..^ (диапазон исключая конец)
Пример использования:
use Russian;
скажи 5 плюс 3; # 8
скажи 10 минус 4; # 6
скажи 6 умножить 7; # 42
скажи истина и ложь; # False
скажи не истина; # False
скажи "Привет" соедини " мир!"; # Привет мир!
скажи 1 до 5; # 1..5
Доступ к специальным переменным
ошибка_текущая
→ $!совпадение
→ $/версия_раку
→ Raku versionверсия_компилятора
→ compiler versionоперационная_система
→ OS distributionархитектура
→ architecture
Лицензия
Artistic-2.0
Участие в разработке
https://github.com/raku-multilingual/raku-russian