Грамотная организация производственной практики, которая бы позволила студенту получить необходимые в жизни навыки, - отдельный вопрос. Участие в свободных проектах здесь выглядит удачной идеей: благодаря децентрализации прозрачность и документированность процесса разработки в этом случае является "условием выживания" для проектов, что существенно упрощает подключение студентов к работе, если сравнивать с компаниями, разрабатывающими софт в закрытых моделях. (Где, по словам одного из докладчиков, процесс "вхождения в тему" может занимать до полугода.) К тому же открытость разработки позволяет легко контролировать работу студента. Но и тут не следует обольщаться: участники сообщества решают свои задачи, они обычно готовы помочь новичку (например, предоставив ссылки на соответствующую документацию), однако "за ручку" никто практиканта вести не будет, и на первый план выходит личная мотивация и интерес. Также отмечалось, что в ходе практики приобретаются навыки не столько программирования, сколько командной работы, - что, впрочем, тоже очень важно в современном мире.
Программное обеспечение, используемое в образовательном процессе, можно условно разделить на две категории: специализированное ПО, ориентированное на обучение, и "обычный" софт. К первому классу, безусловно, относится система программирования "КуМир" ("Комплект учебных миров"). Разработанная еще в 80-х годах, она широко применялась для преподавания основ программирования в школах и вузах (в частности, на мехмате МГУ). Некоторые читатели, наверное, помнят, как в школьные или студенческие годы с помощью необычного "русского" языка программирования писали программы, например, проводившие виртуального робота по лабиринту. (Фраза, вынесенная в заголовок этой секции - вовсе не политический призыв, а отрывок из такой программы, процитированный на конференции одним из главных создателей "КуМира" А. Г. Кушниренко). Однако исходная DOS-реализация системы безнадежно устарела, и было решено переписать ее с нуля, сделать кроссплатформной и выпустить как свободное ПО под GPL. В настоящий момент доступны версии под Windows и Linux.
Следует отметить, что проблемы выбора языка программирования для обучения основам алгоритмики - это вечный вопрос, и два преподавателя по этому поводу могут иметь три мнения. Но, пожалуй, нет сомнений в том, что использовать для этой цели мощную промышленную среду разработки не стоит - если школьник или студент, плохо понимающий разницу между циклом с постусловием и циклом с предусловием, столкнется с необходимостью проектирования интерфейса и написания обработчиков событий, - черепно-мозговая травма на всю жизнь ему обеспечена. "КуМир" в этом смысле безопасен, поскольку заточен под решение конкретной задачи и обладает рядом специальных возможностей для упрощения жизни учащегося и учителя. Например, процесс анализа программ с ошибками здесь устроен особым образом, чтобы давать ученику оптимальное количество информации (на русском языке!) для самостоятельного поиска и исправления своей ошибки, - компиляторы, ориентированные на профессиональное использование, обычно "не задумываются" над такими проблемами, а для учителя необходимость подойти к каждому из тридцати учеников в классе и объяснить, на что "ругнулся" компьютер в этот раз, сильно снижает эффективность работы.
Говоря о специализированном обучающем ПО, нельзя не упомянуть проект OLPC, в рамках которого, помимо уникальных с "железной" точки зрения недорогих ноутбуков, разрабатывается принципиально новая программная среда, ориентированная на детей и при этом довольно далекая от привычных нам интерфейсных стереотипов. (Подробнее о среде OLPC Sugar см. "И пусть никто не уйдет обиженный", "КТ" #684.) Участники проекта OLPC из Медиалаборатории НГПУ рассказывали о летнем экологическом лагере, проведенном в августе прошлого года, где разные модели нетбуков (в том числе OLPC XO-1) использовались как основной творческий и рабочий инструмент школьников, а беспроводная сеть - как средство (само)организации небольшого исследовательского сообщества ("стаи"). Для совместного сбора и анализа информации применялись вики-среды, система разработки Scratch, ориентированная на детей, а также средства mindmapping’а (VYM) и анализа онтологий (Metamind).
Стоит отметить и некоторые примеры успешного использования ПО "общего назначения" для организации учебных курсов. Например, А. В. Хорошилов из ИСП РАН представил практикум по аналитической верификации программного обеспечения. Студенты учатся использовать инструменты, которые позволяют по тексту программы и ее формальным спецификациям строго доказать, что результат работы программы будет всегда правильным. В частности, в курсе использовалось семейство свободных инструментов верификации Why и система автоматизированного доказательства математических теорем PVS. Проверить таким образом весь код, скажем, ядра Linux совсем не просто (на верификацию нескольких десятков строк кода уходят недели, если не месяцы), но в критически важных областях подобные технологии иногда применяются, и навыки, полученные в ходе такого курса, весьма полезны.
Еще один пример: разработка курса по анализу данных, в котором для практических занятий использовалась система Weka. Авторы подчеркивают, что подобный курс считается сложным и требующим серьезных начальных знаний, а им приходилось ориентироваться на студентов с не слишком хорошей базовой математической подготовкой. Однако возможность "поиграться" с уже готовыми базовыми алгоритмами на практике, а затем использовать их для создания собственных, более сложных программ, не отвлекаясь на технические подробности, позволила быстро подготовить курс и сделать его понятным для студентов.
В контексте миграции на свободное ПО целых образовательных (и не только) организаций стоит отметить usability-исследование, проведенное А. М. Дербенем из Сибирского государственного аэрокосмического университета. В ходе анализа практики работы в разных графических окружениях стало ясно, что на удобство и эффективность работы сильно влияют такие, казалось бы, мелочи, как цвета элементов интерфейса или наличие привычных иконок для разного типа документов. Многие действия с компьютером совершаются пользователями на уровне рефлексов - поэтому, например, изменение оформления кнопки "закрыть окно" с привычного "красного крестика" может привести к существенному замедлению работы (люди просто "промахиваются" мимо этой кнопки, поскольку не смотрят на нее в момент клика, ориентируясь только на боковое зрение). В результате время на освоение новой системы, интерфейс которой максимально приближен к привычному варианту, уменьшается с 30–40 до 1–3 дней. В то же время прямое копирование графических элементов оформления из проприетарных ОС может привести к нарушению авторских прав разработчиков, так что встает вопрос о создании идентичных по своему эффекту, но при этом независимых с точки зрения авторского права тем оформления.
Впрочем, интерфейс - не единственная проблема. Есть и формальные препятствия: зачастую для выполнения требований контролирующих органов необходимо использовать "навязанное" сверху ПО, нуждающееся в проприетарной платформе. Впрочем, участники конференции сознательно отказались "плакаться друг другу в жилетку" по этому поводу и обсуждали такие вопросы конструктивно - в большинстве случаев эти проблемы имеют различные решения, как правового характера (например, сейчас школы, присоединившиеся к эксперименту по апробации пакета свободного программного обеспечения, могут законно требовать, чтобы весь навязываемый софт работал под этой системой), так и технического (использование Wine, терминальных решений и т. д.), которые позволяют если не преодолеть все трудности, то по крайней мере существенно ослабить их влияние (например, минимизировать число закупаемых лицензий на проприетарные ОС).