Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013)

Материал из 0x1.tv

Аннотация

Докладчик
Виктор Яковлев.jpg
Виктор Яковлев

Ранее была анонсирована разработка новой ветки системы «Кумир», где мы поставили перед собой цель создания с чистого листа расширяемой архитектуры программного комплекса, ориентированной на широкий круг задач — от начального обучения программированию до системы, применимой в школьных олимпиадах по программированию. Первый выпуск системы, основанной на новой архитектуре, запланирован на 24 января 2013 года и будет включать в себя две консольные программы:

  • 1) компилятор языка Кумир в выполнимый байт код;
  • 2) компактный интерпретатор байт кода для систем Linux и Windows, который может работать как на компьютерах с процессорами семейства x86, так и на некоторых устройствах с процессорами архитектуры ARM. Данный комплект предназначен, в первую очередь, для использования в системах автоматизированной проверки заданий (олимпиады и ЕГЭ).

Общие сведения

Система Кумир 2.x представляет собой набор модулей, исходные тексты которых находятся под открытой лицензией GNU GPL2 в ветке master репозитория[1]. Релизы системы выделяются в отдельные ветки, соответствующие номеру релиза, из которых исключаются те модули, которые не являются функционально завершенными.

На данный момент выделена ветка 2.0, которая будет включать два модуля — консольные программы: компилятор языка Кумир в выполнимый байт код, и интерпретатор байт кода для систем Linux, Windows и MacOS X.

Использование в системах автоматизированной проверки заданий

Приоритетность разработки набора консольных программ над разработкой пользовательского интерфейса определяется спецификой их области применения. В настоящее время проявляется интерес к использованию языка программирования Кумир в качестве олимпиадного, кроме того язык программирования системы Кумир (известный как «алгоритмический язык») является одним из языков программирования, применяемых при сдаче ЕГЭ и ГИА по информатике.

Для возможности использования в системах автоматизированной проверки заданий, набор консольных программ комплекса Кумир был разработан с учетом следующих требований:

  • возможность работы как в Linux (в частности, совместно с ejudge[2]), так и в Windows (с использованием Contester[3]);
  • система выполняется на сервере, поэтому должна быть реализована в виде консольных программ;
  • скорость выполнения программ должна соответствовать уровню современных общеупотребительных интерпретаторов (таких как Python или Perl);
  • порядок действий с исходной программой должен соответствовать общепринятой последовательности: скомпилировать исходный текст в программу, затем — выполнить её, указав потоки ввода и вывода данных, после чего — сравнить полученный результат с эталоном.

Возможность выполнения программ на широком спектре оборудования

Интерпретатор выполнимого байт кода системы Кумир реализован в виде одного выполняемого бинарного файла, который для своей работы требует только стандартную библиотеку языка C++. Размер релиз-сборки интерпретатора не превышает 400 Кб (для процессора ARM, система Raspbian Linux), при этом базовые возможности интерпретатора включают в себя полную поддержку всех возможностей языка Кумир, работу со стандартными функциями, с текстовыми файлами, поддержку кириллических символов Юникода и функции работы со строками. Сгенерированный компилятором байт код одинаково выполняется на процессорах различных архитектур.

Изначально предполагалась реализация минимально возможного интерпретатора для выполнения на устройстве Lego NXT 2.0, однако, для поддержки всех возможностей языка Кумир, в рамках эталонного учебника[4], это оказалось невозможным по двум причинам:

  • 1. Отсутствие блока операций с плавающей точкой в используемом NXT процессоре[5], в то время как язык Кумир декларирует поддержку операций над вещественными числами в соответствии с IEEE 754.
  • 2. Небольшой объем (64 Кб) оперативной памяти, что делает практически невозможным работу с таблицами языка Кумир.

Существующая на данный момент реализация системы Кумир 1.9 для работы с конструктором Lego NXT [7] предполагает использование управляющего хост-компьютера, который использует радиоканал Bluetooth для передачи телеметрических данных. Такой подход имеет два существенных недостатка: во-первых, требуется качественный Bluetooth-адаптер, во-вторых, это решение имеет большие временные задержки, оказывающие серьёзное влияние при реализации типовых алгоритмов управлением роботом. Данная проблема может быть решена только переносом выполняющей части на компьютер робота, и использованием хост-компьютера только для редактирования, загрузки и запуска программ.

Недавно компания Lego анонсировала[6] выход нового поколения компьютера серии Mindstorms, на который может быть портирован выполнитель системы Кумир без существенной адаптации.

Поскольку данное устройство пока отсутствует в продаже, процесс портирования и отладки системы Кумир для процессора архитектуры ARM осуществляется с помощью устройства [ http://www.raspberrypi.org/ Raspberry Pi].

Отказ от использования сторонних библиотек (в частности, Qt) при реализации выполнителя, с одной стороны, усложнил процесс разработки, а с другой, – позволил снизить аппаратные требования для выполнения Кумир программ и обеспечить возможность портирования на те платформы, которые не поддерживаются разработчиками Qt. В частности, возможна реализация выполнителя для FreeDOS (после некоторой доработки стандартной библиотеки компилятора OpenWatcom) и на платформу Android (используя NDK). Существенным здесь является использование единых исходных текстов как для «десктопной» версии Кумира, так и для версий, специализированных под конкретные устройства.

Видео

on youtube

Скачать или открыть видео прямо в броузере
http://ftp.linux.kiev.ua/pub/conference/peers/pereslavl/2013/video/kumir-20.webm







Слайды

Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf Кумир 2.0. Компилятор и среда выполнения (Виктор Яковлев, OSEDUCONF-2013).pdf

Примечания и отзывы

  1. http://gitorious.org/kumir2
  2. А. В. Чернов Система тестирования ejudge. Вторая конференция «Свободное программное обеспечение в высшей школе». М.: AltLinux, 2007.
  3. http://www.contester.ru/
  4. Информатика: 7–9 кл.: Учеб. для общеобразоват. учр. А. Г. Кушниренко, Г. В. Лебедев, Я. Н. Зайдельман. М.: Дрофа, 2003. 335 с.
  5. http://www.atmel.com/Images/6175s.pdf
  6. http://www.legoeducation.us/eng/product/ev3_intelligent_brick/2526

Youtube:51 Vimeo:512