IDE для изучения Python (Николай Попов, OSEDUCONF-2015)

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

Аннотация

Докладчик
Николай Попов

Язык Python все глубже проникает в российскую систему образования. С 2015 года в контрольно-измерительные материалы ЕГЭ включены примеры программ на Python’е, а на факультете компьютерных наук НИУ ВШЭ именно этот язык является первым изучаемым языком программирования. При изучении программирования на языке Python, как впрочем, и на любом другом языке программирования, немаловажной задачей является обеспечение ученика (студента) подходящей средой разработки (IDE). Учебная IDE должна, с одной стороны, предоставлять всю необходимую функциональность, которая потребуется при решении учебных задач, и в то же время, – быть максимально простой, поскольку является лишь инструментом, а не субъектом изучения. Ввиду отсутствия (на момент начала проекта) подобной IDE для языка программирования Python, мы начали ее создавать на платформе Кумир-2. Целевой аудиторией Кумир-Python являются старшие классы школы и высшие учебные заведения.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Слайды

IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf IDE для изучения Python (Николай Попов, OSEDUCONF-2015).pdf

Тезисы

Предпосылки разработки

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

С другой стороны, существуют полноценные IDE, например PyCharm, созданная на базе IntelliJ IDEA, которая обладает всей необходимой функциональностью.

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

Существуют также специализированные системы, разработанные специально для образовательных целей.

Классическими примером такой IDE можно считать систему с открытым исходным кодом Кумир, разрабатываемую в НИИСИ РАН, которая использует учебный Aлгоритмический Язык и предназначена для использования в школьном курсе программирования. Эта среда разработки имеет простой интерфейс, редактор кода, совмещенный с анализатором ошибок и возможность пошагового выполнения программ с отображением текущих значений переменных как на полях редактора, так и в отдельном окне.

Мы решили использовать наработки и исходный код[1] системы Кумир для создания учебной IDE для языка Python 3.x.

Система Кумир спроектирована таким образом, что позволяет заменить русский алгоритмический язык программирования на любой другой[2]. В то же время, можно использовать такие особенности системы, как отображение синтаксических ошибок на полях редактора, или систему курсов[3].

Работа над созданием среды Кумир-Python началась в 2013 году, когда в свободном доступе не было ни одной полнофункциональной среды разработки для Python, которую можно рекомендовать студентам. В конце 2013 года были появилась бесплатная редакция PyCharm Community Edition, а совсем недавно — специализированная редакция PyCharm Educational Edition для образовательных учреждений. Основной особенностью этой редакции является поддержка курсов с возможностью автоматизированной проверки заданий, как и в Кумир. Тем не менее, для использования в школах, даже эта редакция PyCharm является достаточно сложной средой.

Интеграция интерпретатора

В системе Кумир-Python интерпретатор используется в адресном пространстве IDE, а не отдельным процессом. Это позволяет добиться очень тесной интеграции интерпретатора со средой разработки, что, в частности, позволяет реализовать не только полнофункциональный отладчик, но и вмешиваться в работу интерпретатора во время выполнения программ. Это необходимо, например, для написания тестирующих алгоритмов при реализации автоматизированной проверки заданий.

С другой стороны, использование такого подхода накладывает ряд ограничений на возможность использования некоторых сторонних библиотек. Например, становится невозможным использование библиотеки PyQt (PySide) в программах, которые запускаются из IDE, а также появляется риск падения системы при использовании сторонних модулей Python, реализованных на C/C++. Мы считаем, что для учебных задач эти ограничения не существенны, поскольку как использование Qt, так и написание C/C++ модулей для Python, предполагает более высокую квалификацию, чем та, на которую ориентировано начальное обучение.

Отметим, что отдельный экземпляр интерпретатора, именуемый «Песочница» (от англ. Sandbox), доступен для использования в качестве калькулятора, или быстрой проверки конструкций языка, без написания программ.

Проверка программ во время редактирования

Язык Python является динамическим языком программирования, поэтому семантический и синтаксический анализ программ для этого языка затруднен. Тем не менее, значительную часть ошибок в программе (но не все ошибки) можно найти с помощью специализированных анализаторов кода.

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

  • 1. Анализатор ошибок PyLint.
  • 2. Анализатор ошибок PyFlakes.
  • 3. Анализатора стиля кода PEP-8, использование которого является опциональным (пункт в настройках), поскольку, вывод результатов его работы может испугать любого неподготовленного пользователя. Но в некоторых случаях его использование может быть обязательным формальным требованием.
  • 4. Предполагается реализация дополнительного анализатора, который будет проверять совместимость типов величин в вычисляемых выражениях и аргументах функций. Помимо обнаружения ошибок, результаты работы этого анализатора необходимы для реализации семантического автодополнения кода.

Если несколько анализаторов нашли ошибку, которая относится к одному и тому же участку кода, то принимается та из них, которая найдена анализатором с более высоким приоритетом. Экспериментально было установлено, что наиболее адекватную диагностику выдает анализатор PyLint, поэтому он имеет наивысший приоритет.

Дополнительные возможности

Система Кумир-Python наследует важные для организации процесса обучения возможности системы Кумир. Выделим две такие возможности.

Во-первых, возможно использование графических исполнителей системы Кумир в школьном курсе информатики, как обычных Python-модулей.

Единственное отличие от системы программирования Кумир — это использование англоязычных имен модулей и функ- ций. В настоящее время реализованы исполнители Робот (модуль robot) и Рисователь (модуль painter), работа с которыми описана в школьных учебниках[4]

Во-вторых, реализована поддержка курсов. Автоматическая проверка заданий реализуется функциями __pre_test__, __pre_run__ и __post_run__, которые находятся в не отображаемой системой Кумир «скрытой» части программы. Она отделяется в текстовом файле программы от основной части Python-комментарием специального вида. В процессе проверки заданий можно вмешиваться в работу интерпретатора, например, принудительно изменять значения переменных, или имитировать ввод данных из стандартного потока ввода.

Выводы

В настоящее время система Кумир-Python позволяет редактировать и выполнять программы, использовать пошаговый отладчик и входящие в поставку «исполнители» системы Кумир.

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

Незавершенными на данный момент остаются части синтаксического анализатора, которые выполняют подсветку синтаксиса, построение списка имен для семантического автодополнения, и проверку совместимости типов величин.

Исходные тексты доступны в git-ветке python репозитория разработки системы Кумир. В комплект поставки входит пример реализации курса по языку Python.

Опытную эксплуатацию среды предполагается начать в 2015–2016 учебном году. Целевой аудиторией Кумир-Python являются старшие классы школы.

Ввиду появления свободно доступных редакций PyCharm, целесообразность использования Кумир-Python в высших учебных заведениях остается под вопросом, ответ на который может быть получен по результатам опытной эксплуатации.

===Литература

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

  1. http://gitorious.org/kumir2
  2. http://0x1.tv/Kumir-20, А. Г. Кушниренко, М. А. Ройтберг, Д. В. Хачко, В. В. Яковлев Кумир 2.0: комплилятор и среда выполнения. VIII Конференция «Свободное программное обеспечение в высшей школе», М.: Альт Линукс, 2013.
  3. Д. В. Хачко, Д. П. Кириенко, А. Г. Кушниренко, А. Г. Леонов, М. А. Ройтберг. Поддержка курсов в системе КуМир. VI Конференция «Свободное программное обеспечение в высшей школе», М.: Альт Линукс, 2011.
    • Информатика: 7–9 кл.: Учеб. для общеобразоват. учр. А. Г. Кушниренко, Г. В. Лебедев, Я. Н. Зайдельман. М.:Дрофа, 2003. 335 с.
    • Информатика. 10 класс. Углубленный уровень. В 2 частях (комплект из 2 книг). К. Ю. Поляков, Е. А. Еремин. М.: Бином, 2014. 648 с.
    • Информатика. 11 класс. Углубленный уровень. Части 1–2 (комплект). К. Ю. Поляков, Е. А. Еремин. М.: Бином, 2014. 532 с.

Plays:1001   Comments:7