СЕКЦИЯ
Цифровая образовательная среда: новые возможности обучения, воспитания, развития обучающихся

Государев И.Б.

Университет ИТМО

Санкт-Петербург

Проблемы обучения асинхронному программированию будущих IT-специалистов для веб-инженерии

В работе анализируются методические трудности обучения асинхронному программированию будущих IT-специалистов в контексте веб-инженерии. На материале магистерской программы «Веб-технологии» Университета ИТМО выделены типовые источники затруднений: неоднозначность терминологии (параллельность, конкурентность, асинхронность), разнообразие языков и реализаций конкурентности на разных уровнях веб-платформы, недостаточная разработанность формальных моделей, поддерживающих объяснение корректности и предсказуемости поведения асинхронного кода, а также сложности мониторинга и отладки. Предлагается подход к обновлению содержания учебных дисциплин, включающий формирование тезауруса, сопоставление родственных абстракций (Promise/Future/Task и др.), моделирование исполнения через вычислительные представления, а также практико-ориентированные задания по наблюдаемости (логирование, трассировка, профилирование). Апробация предложенных решений позволила актуализировать содержание подготовки магистрантов направления «Веб-технологии» Университета ИТМО.

Gosudarev I.B.

ITMO University

Saint-Petersburg, Russia

Challenges in teaching asynchronous programming to future IT specialists for web engineering

The paper examines methodological challenges in teaching asynchronous programming to future IT specialists in the context of web engineering. Using the “Web Technologies” master’s program at ITMO University as a case study, we identify typical sources of learning difficulties: ambiguous terminology (parallelism, concurrency, asynchrony), the diversity of languages and concurrency implementations across different layers of the web platform, the limited availability of convenient formal models for explaining correctness and predictability of asynchronous behavior, and persistent issues in monitoring and debugging. We propose an updated course design that combines a consistent glossary, cross-language mapping of related abstractions (Promise/Future/Task, etc.), model-based explanations of execution, and practice-oriented assignments in observability (logging, tracing, profiling). A pilot implementation of the proposed approach enabled an update of the curriculum for the “Web Technologies” master’s students at ITMO University.
Актуальность. Цифровизация общества, сопровождающаяся развитиемвеб-платформы как одной из ее основ, что отмечается в работах многих авторов (Я.И. Кузьминова, И.Д. Фрумина и др. [7], а также А. Ю. Уварова, С.Д. Каракозова и Н.И. Рыжовой [2, 3]), способствует трансформации образовательной среды и обусловливает потребность в развитии профессиональной подготовки IT-специалиста, принимающего участие в создании веб-решений, в том числе для образования. Как подчеркивается в статье Т.Н.Носковой [5, с.205], «достижение более высокого качества информационно-интеллектуальной деятельности требует взаимосвязанных изменений во всех компонентах деятельности студентов». В деятельности по разработке веб-ресурсов можно выделить три основные компоненты: веб-проектирование, веб-программирование и веб-разработку. Остановимся на проблематике, связанной с веб-программированием.

Основные подходы к обучению веб-программированию в вузе на уровне бакалавриата систематизированы, например, в работах С.Д. Каракозова и М.В. Худжиной [2]. Авторы В. В. Осадчий и В. С. Круглик в работе [6] рассмотрели требования к повышению квалификации специалистов в области веб-проектирования и веб-программирования. В то же время проблемы обучения асинхронному веб-программированию пока не нашли должного отражения в научной литературе, хотя к ним обращаются авторы различных учебно-методических материалов, в первую очередь, онлайн-курсов системы дополнительного образования.

В отечественной научной и научно-методической литературе к проблематике обучения параллельному и конкурентному программированию неоднократно обращались А.Г.Марчук, Л.В.Городняя, А.Ф.Дедков, М.В.Швецкий и другие авторы. В работах советского периода раскрывались перспективы параллельного, распределенного, конкурентного и асинхронного программирования, а в более современных трудах описывается развивающаяся парадигма параллельного программирования и подчеркивается сложность обучения программированию в рамках этой парадигмы. В работах указанных авторов (например, А.Г.Марчука) вводятся такие понятия как «псевдопараллельное» программирование, призванные акцентировать внимание на том, как выполнение процессов воспринимается пользователями таких систем как веб-платформа. При разработке веб-приложений широко используются методы как параллельного, так и псевдопараллельного программирования. Однако анализ употребления этих терминов в научно-методической и учебно-методической литературе выявляет их неоднозначность и актуальность методического переосмысления в реалиях веб-программирования. На основе опыта разработки содержания учебных дисциплин магистерской программы «Веб-технологии» (реализуемой в Университете ИТМО под нашим руководством), проведен анализ проблем, связанных со сложными аспектами веб-программирования, среди которых в первую очередь следует асинхронность.
Перечислим основные трудности, с которыми сталкивается преподаватель веб-программирования, раскрывая тему асинхронности.

Неоднозначность терминологии, используемой в научной и учебно-методической литературе, а также переводных изданий. Если в основополагающих трудах (А.Г.Марчука и коллег) параллельное и асинхронное программирование не были альтернативны друг другу (как, например в случае языка Поляр), то в веб-программировании они становятся взаимоисключающими подходами. Актуальным становится создание тезауруса современного веб-программирования с учетом тех концепций, которые были развиты в работах как зарубежных, так и отечественных специалистов на основе их интеграции. Отметим, что в аспекте веб-программирования параллельность означает одновременное исполнение инструкций разных процессов (называемых задачами) в единицу времени, что требует задействования двух и более независимых исполнителей (ядер, процессоров или компонентов распределенных физически разнесенных систем). Конкурентность же означает исполнение групп инструкций «вдоль» одной временной оси, что с учетом восприятия пользователей веб-систем можно охарактеризовать термином «псевдопараллельность». Наконец, асинхронность означает конкретную реализацию конкурентности, при которой отдельные инструкции и некоторые их небольшие группы исполняются строго последовательно в соответствии с принципом недопущения блокировки основного потока CPU-bound-вычислениями. Таким образом, асинхронность можно рассматривать как «псевдопараллельность». В первую очередь такая трактовка справедлива по отношению к языку JavaScript, но при использовании других языков она может требовать уточнения.

Разнообразие веб-языков и конкретных реализаций конкурентности и асинхронности. В то время как на клиентском уровне веб-программирование сводится к одному языку (JavaScript), на серверном уровне и в пограничных сферах веб-разработки для программирования веб-решений используются десятки языков, в ряде которых развиваются концепции, аналогичные, но не тождественные концепциям, принятым в JavaScript. Это, в частности, касается концепции так называемых обещаний (промисов), которые выражают (в соответствии с идеями Барбары Лисков) инкапсуляцию результатов асинхронных процессов в формате объектов. В языке JavaScript эта концепция была внедрена в 2015 г. в рамках перехода к 6-й версии спецификации. Примерно в тот же период аналогичные концепции с другими названиями (Future, Deferred, Task, Awaitable) развивались в других языках, которые используются для разработки серверных веб-приложений. Как показывает опыт работы со студентами, решающими задачи full stack программирования (то есть совмещающими разные уровни веб-разработки), это многообразие родственных, но отличающихся концепций вызывает существенные сложности освоения и нуждается в методическом осмыслении. Это в том числе связано с трудностями обобщения таких концепций, которое может быть осуществлено проверенным методическим путем – через подбор адекватной формальной вычислительной модели.

Недостаточная разработанность формализмов, лежащих в основе асинхронного исполнения кода. В то время как, например, для традиционного функционального программирования существуют и активно используются в преподавании такие формализмы как лямбда-исчисление и теория комбинаторов, для параллельного и асинхронного программирования ситуация оказывается более сложной. Нам не удалось обнаружить научно-методических работ, которые бы раскрывали особенности использования сетей Петри или акторной модели для обучения студентов асинхронному программированию. А.Г.Марчук предлагает для размышления вопросы о целесообразности освоения студентами таких формализмов: «С какой формальной моделью параллельного программирования должен быть знаком каждый молодой программист, системотехник и т. д.: сети Петри, алгебры процессов Бергсты и Клопа, алгебра и исчисление CSP Хоара, исчисление CCS и π-исчисление Милнера, исчисление окружений (ambient) Кардели и др.?» [4, с. 129]. Отсутствие общепринятого и удобного в методическом отношении формализма затрудняет и доказательство правильности кода, использующего асинхронность.

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

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

Заключение. Развитие современных языков веб-программирования, распространение веб-платформы ставят перед организацией подготовки IT-специалистов в области веб-инженерии актуальные вопросы, которые на данном этапе пока недостаточно проработаны с методической точки зрения. Учет проблем обучения асинхронному веб-программированию при проектировании соответствующих учебных дисциплин позволит оптимизировать подготовку указанных специалистов и внести значимый вклад в совершенствование образовательного процесса будущих веб-инженеров.

Литература:
1.      Государев, И. Б. Веб-платформа как современный тренд развития образовательного процесса / И. Б. Государев // Человек и образование. – 2024. – № 1(78). – С. 149-156.
2.      Каракозов, С.Д., Худжина, М.В. Обучение web-программированию бакалавров IT-направлений в региональных вузах: актуальность, проблемы и подходы) / М. В. Худжина, С. Д. Каракозов // Проблемы современного образования. - 2021. - № 5. С. 182-195.
3.       Каракозов, С. Д. Рыжова Н. И., Уваров А. Ю. Трансформации учебного процесса в цифровой образовательной среде: современная образовательная информатика / С. Д. Каракозов, Н. И. Рыжова, А. Ю. Уваров // Информатизация образования: теория и практика : Сборник материалов международной научно-практической конференции, Омск, 18–19 ноября 2016 года / Под общей редакцией М.П. Лапчика. – Омск: федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Омский государственный педагогический университет", 2016. – С. 20-21. – EDN XSJYQT.
4.      Марчук, А.Г., Городняя, Л.В., Шилов, Н. В. Параллельное программирование среди других парадигм программирования / Н. В. Шилов, Л. В. Городняя, А. Г. Марчук // Прикладная информатика. – 2011. – № 1(31). – С. 120-129.
5.      Носкова, Т. Н. Совершенствование информационно-интеллектуальной деятельности в цифровом образовательном пространстве / Т. Н. Носкова // Проблемы современного образования. – 2024. – № 1. – С. 205-218. – DOI 10.31862/2218-8711-2024-1-205-218. – EDN YMBRUN.
6.       Осадчий, В. В. Эффективная организация содержания профессиональной подготовки для повышения уровня квалификаций будущих веб-программистов / В. В. Осадчий, В. С. Круглик // Образовательные технологии и общество. – 2015. – Т. 18, № 4. – С. 540-558. – EDN TAIZOY.
7.      Трудности и перспективы цифровой трансформации образования : Под редакцией А.Ю. Уварова, И.Д. Фрумина; Научные редакторы серии Я.И. Кузьминов, И.Д. Фрумин / А. Ю. Уваров, Э. Гейбл, И. В. Дворецкая [и др.]. – М.: Национальный исследовательский университет «Высшая школа экономики». 2019. – 344 с.
ВОПРОСЫ И КОММЕНТАРИИ
Система комментирования SigComments
Made on
Tilda