Актуальность. Цифровизация общества, сопровождающаяся развитиемвеб-платформы как одной из ее основ, что отмечается в работах многих авторов (Я.И. Кузьминова, И.Д. Фрумина и др. [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 с.