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

Езикът Python навлиза все по-дълбоко в българската образователна система. От 2015 г. тестовите материали на USE включват примери за програми на Python, а във Факултета по компютърни науки на Националния изследователски университет Висше училище по икономика този език е първият изучаван език за програмиране. При изучаването на програмиране на Python, както и на всеки друг език за програмиране, важна задача е да се предостави на ученика (студента) подходяща среда за разработка (IDE). Образователната IDE трябва, от една страна, да предоставя цялата необходима функционалност, която се изисква при решаване на образователни проблеми, и в същото време да бъде възможно най-проста, тъй като е само инструмент, а не предмет на обучение. Поради липсата (по време на стартирането на проекта) на такава IDE за езика за програмиране Python, ние започнахме да я създаваме на платформата Kumir-2. Целевата аудитория на Kumir-Python е средно и висше образование.

Предистория на развитието

От друга страна, има пълноценни IDE, като PyCharm, базирани на IntelliJ IDEA, които имат цялата необходима функционалност.

Използването на такива среди за разработка е оправдано за производствени цели, но за образователни задачи техните възможности са не само излишни, но и създават значителни неудобства, като необходимостта от овладяване на средата или създаване и конфигуриране на проект, преди да напишете дори най-простата програма.

Има и специализирани системи, предназначени специално за образователни цели.

Решихме да използваме разработките и изходния код [1] на системата Kumir, за да създадем IDE за обучение за езика Python 3.x.

Интегриране на преводач

От друга страна, този подход налага редица ограничениявъзможност за използване на някои библиотеки на трети страни. Например става невъзможно да се използва библиотеката PyQt (PySide) в програми, които се стартират от IDE, а също така съществува риск от системен срив при използване на модули на Python на трети страни, реализирани в C/C++. Вярваме, че тези ограничения не са значими за образователни задачи, тъй като както използването на Qt, така и писането на C/C++ модули за Python предполага по-висока квалификация от тази, върху която е фокусирано първоначалното обучение.

Обърнете внимание, че отделен екземпляр на интерпретатора, наречен "Sandbox" (от англ. Sandbox), е достъпен за използване като калкулатор или бърза проверка на езикови конструкции, без писане на програми.

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

Езикът Python е динамичен език за програмиране, така че семантичният и синтактичен анализ на програмите за този език е труден. Въпреки това значителна част от програмните грешки (но не всички) могат да бъдат открити с помощта на специализирани кодови анализатори.

За проверка на програмите използваме набор от различни анализатори, подредени по приоритет:

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

Ако няколко анализатора са открили грешка, свързана с една и съща кодова секция, тогава се приема тази, открита от анализатора с по-висок приоритет. Експериментално е установено, че PyLint анализаторът предоставя най-адекватната диагностика, поради което е с най-висок приоритет.

Допълнителни функции

Системата Kumir-Python наследява възможностите на системата Kumir, които са важни за организирането на учебния процес. Открояваме две такива възможности.

Първо, възможно е да се използват графичните изпълнители на системата Kumir в училищния курс по информатика като обикновени модули на Python.

Единствената разлика от системата за програмиране Kumir е използването на англоезични имена на модули и функции. В момента се изпълняват изпълнители Robot (модул робот) и Drawer (модул Painter), работата с които е описана в училищните учебници [4]

Понастоящем системата Kumir-Python ви позволява да редактирате и изпълнявате програми, да използвате стъпка по стъпка програмата за отстраняване на грешки и "изпълнителите" на системата Kumir, включени в доставката.

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

Части от анализатора, които извършват подчертаване на синтаксис, изграждане на списък с имена за семантично автоматично довършване и проверка на съвместимостта на типове стойности, остават незавършени в момента.

Източниците са налични в клона git на хранилището на pythonразвитие на системата Кумир. Пакетът включва примерна реализация на курса по Python.

Очаква се експерименталната експлоатация на средата да започне през 2015-2016 учебна година. Целевата аудитория на Kumir-Python е гимназията.

Поради появата на свободно достъпни издания на PyCharm, осъществимостта на използването на Kumir-Python във висшите учебни заведения остава под въпрос, отговорът на който може да бъде получен от резултатите от пробната експлоатация.

">