📖 Документация Qumir

← Вернуться в Playground

Часто задаваемые вопросы (FAQ)

Общее

Используется ли код оригинального КуМир?

Нет. Qumir написан полностью с нуля — первый коммит ядра языка датирован сентябрём 2025 года. Никакой код из оригинального КуМир (НИЛСИ, МФТИ) не используется. Qumir — независимая реализация того же алгоритмического языка.

Чем Qumir отличается от оригинального КуМир?

Qumir — это независимая реализация того же алгоритмического языка с современной архитектурой: компилятор на C++ с бэкендом LLVM, поддержка WebAssembly и онлайн-песочница. Синтаксис языка совместим с КуМир — большинство программ запустятся без изменений.

Основные отличия:

Можно ли использовать Qumir для подготовки к ЕГЭ?

Да. Синтаксис языка соответствует алгоритмическому языку, используемому в заданиях ЕГЭ и ОГЭ по информатике. Поддерживаются все основные конструкции: циклы нц/кц, условия если/то/иначе, массивы таб, процедуры и функции.

Qumir — бесплатный?

Да, полностью. Исходный код открыт: github.com/resetius/qumir.


Синтаксис и совместимость

Почему программа из КуМир не работает в Qumir?

Проверьте следующее:

Регистр букв в ключевых словах имеет значение?

Да. Ключевые слова пишутся строчными буквами: алг, нач, кон, если, нц и т.д. АЛГ или Алг — ошибка.

Можно использовать латинские буквы в именах переменных?

Да, имена переменных и алгоритмов могут содержать латинские буквы, цифры и знак _. Ключевые слова — только кириллические.


Онлайн-версия

Почему программа зависла в браузере?

Qumir компилирует программу в WebAssembly и запускает её прямо в браузере. Бесконечный цикл заблокирует вкладку. Перезагрузите страницу.

Где хранятся проекты?

Проекты сохраняются в localStorage браузера. Они не синхронизируются между устройствами и будут потеряны при очистке данных браузера. Используйте кнопку «Поделиться» для получения постоянной ссылки.

Поддерживается ли ввод данных?

Да. Для передачи аргументов в точку входа используйте поле «Аргументы» (через запятую). Команда ввод поддерживается через поле ввода в панели «Ввод/Вывод».

Почему исполнитель не появляется?

Убедитесь, что в начале программы есть строка использовать Черепаха (или другой исполнитель). Панель исполнителя появляется автоматически после первого запуска программы с этим модулем.


Исполнители

В чём разница между Чертежником и Рисователем?

Чертежник рисует линии на координатной плоскости — перемещается к указанным точкам. Подходит для графиков, геометрических фигур.

Рисователь работает попиксельно — рисует на растровом листе заданного размера. Подходит для создания изображений, фракталов, заливки цветом.

Можно ли использовать несколько исполнителей одновременно?

Несколько неграфических модулей (например, «Комплексные числа») подключаются одновременно без ограничений. Графических исполнителей (Черепаха, Чертежник, Рисователь, Робот) одновременно может быть активен только один.

Как задать цвет в Чертежнике и Рисователе?

Оба модуля используют один тип цвет. Доступны именованные константы (чёрный, красный, синий и др.) и конструкторы (RGB, HSL, HSV). Подробнее — в документации по Рисователю.


Компилятор и интерпретатор

В чём разница между qumiri и qumirc?

Для разработки удобнее qumiri, для деплоя — qumirc.

Как включить оптимизации?

./build/bin/qumirc -O2 программа.kum -o программа

В онлайн-версии уровень оптимизации выбирается в выпадающем меню (только в режиме разработчика).

Программа работает медленно. Что делать?


Разработка и сборка

Какие зависимости нужны для сборки?

Как запустить только конкретный тест?

cd build
ctest -R test_lexer          # по имени набора
ctest -R "complex/operators" # регрессионный тест по пути

Как добавить новый модуль (исполнитель)?

Реализуйте класс, наследующий IModule из qumir/modules/module.h. Зарегистрируйте его в TNameResolver. Смотрите реализацию модуля Черепаха как пример минимального модуля.


Можно ли интегрировать движок Qumir на свой сайт?

Да. Qumir компилирует программы в WebAssembly, который запускается в любом современном браузере. Исходный код открыт под лицензией BSD-2-Clause.

Для встраивания потребуется:

Опционально: HTTP-сервер (service/server.cpp) — нужен только если вы хотите компилировать исходный код на лету на стороне сервера. Для показа заранее скомпилированных программ сервер не нужен.

Я нашёл ошибку или хочу внести исправление — что делать?

Исходный код проекта открыт: github.com/resetius/qumir.

Ссылки